31 QML_NAMED_ELEMENT(PlaceSearchModel)
32 QML_ADDED_IN_VERSION(5, 0)
34 Q_PROPERTY(QString searchTerm READ searchTerm WRITE setSearchTerm NOTIFY searchTermChanged)
35 Q_PROPERTY(QQmlListProperty<QDeclarativeCategory> categories READ categories NOTIFY categoriesChanged)
36 Q_PROPERTY(QString recommendationId READ recommendationId WRITE setRecommendationId NOTIFY recommendationIdChanged)
37 Q_PROPERTY(RelevanceHint relevanceHint READ relevanceHint WRITE setRelevanceHint NOTIFY relevanceHintChanged)
38 Q_PROPERTY(QDeclarativePlace::Visibility visibilityScope READ visibilityScope WRITE setVisibilityScope NOTIFY visibilityScopeChanged)
40 Q_PROPERTY(
int count READ rowCount NOTIFY rowCountChanged)
41 Q_PROPERTY(QDeclarativeGeoServiceProvider *favoritesPlugin READ favoritesPlugin WRITE setFavoritesPlugin NOTIFY favoritesPluginChanged)
42 Q_PROPERTY(QVariantMap favoritesMatchParameters READ favoritesMatchParameters WRITE setFavoritesMatchParameters NOTIFY favoritesMatchParametersChanged)
44 Q_PROPERTY(
bool incremental MEMBER m_incremental NOTIFY incrementalChanged REVISION(5, 12))
46 Q_ENUMS(SearchResultType RelevanceHint)
49 enum SearchResultType {
50 UnknownSearchResult = QPlaceSearchResult::UnknownSearchResult,
51 PlaceResult = QPlaceSearchResult::PlaceResult,
52 ProposedSearchResult = QPlaceSearchResult::ProposedSearchResult
56 UnspecifiedHint = QPlaceSearchRequest::UnspecifiedHint,
57 DistanceHint = QPlaceSearchRequest::DistanceHint,
58 LexicalPlaceNameHint = QPlaceSearchRequest::LexicalPlaceNameHint
61 explicit QDeclarativeSearchResultModel(QObject *parent =
nullptr);
62 ~QDeclarativeSearchResultModel();
64 QString searchTerm()
const;
65 void setSearchTerm(
const QString &searchTerm);
67 QQmlListProperty<QDeclarativeCategory> categories();
68 static void categories_append(QQmlListProperty<QDeclarativeCategory> *list,
69 QDeclarativeCategory *category);
70 static qsizetype categories_count(QQmlListProperty<QDeclarativeCategory> *list);
71 static QDeclarativeCategory *category_at(QQmlListProperty<QDeclarativeCategory> *list, qsizetype index);
72 static void categories_clear(QQmlListProperty<QDeclarativeCategory> *list);
74 QString recommendationId()
const;
75 void setRecommendationId(
const QString &recommendationId);
77 QDeclarativeSearchResultModel::RelevanceHint relevanceHint()
const;
78 void setRelevanceHint(QDeclarativeSearchResultModel::RelevanceHint hint);
80 QDeclarativePlace::Visibility visibilityScope()
const;
81 void setVisibilityScope(QDeclarativePlace::Visibility visibilityScope);
83 QDeclarativeGeoServiceProvider *favoritesPlugin()
const;
84 void setFavoritesPlugin(QDeclarativeGeoServiceProvider *plugin);
86 QVariantMap favoritesMatchParameters()
const;
87 void setFavoritesMatchParameters(
const QVariantMap ¶meters);
89 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
91 void clearData(
bool suppressSignal =
false) override;
92 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
93 Q_INVOKABLE QVariant data(
int index,
const QString &roleName)
const;
94 QHash<
int, QByteArray> roleNames()
const override;
96 Q_INVOKABLE
void updateWith(
int proposedSearchIndex);
98 void updateSearchRequest();
101 void searchTermChanged();
102 void categoriesChanged();
103 void recommendationIdChanged();
104 void relevanceHintChanged();
105 void visibilityScopeChanged();
107 void rowCountChanged();
108 void favoritesPluginChanged();
109 void favoritesMatchParametersChanged();
111 void incrementalChanged();
114 QPlaceReply *sendQuery(QPlaceManager *manager,
const QPlaceSearchRequest &request) override;
115 void initializePlugin(QDeclarativeGeoServiceProvider *plugin) override;
118 void queryFinished() override;
119 void onContentUpdated() override;
122 void updateLayout(
const QList<QPlace> &favoritePlaces = QList<QPlace>());
124 void placeUpdated(
const QString &placeId);
125 void placeRemoved(
const QString &placeId);
129 SearchResultTypeRole = Qt::UserRole,
137 int getRow(
const QString &placeId)
const;
138 QList<QPlaceSearchResult> resultsFromPages()
const;
139 void removePageRow(
int row);
141 QList<QDeclarativeCategory *> m_categories;
142 QLocation::VisibilityScope m_visibilityScope = QLocation::UnspecifiedVisibility;
144 QMap<
int, QList<QPlaceSearchResult>> m_pages;
145 QList<QPlaceSearchResult> m_results;
146 QList<QPlaceSearchResult> m_resultsBuffer;
147 QList<QDeclarativePlace *> m_places;
148 QList<QPlaceIcon> m_icons;
150 QDeclarativeGeoServiceProvider *m_favoritesPlugin =
nullptr;
151 QVariantMap m_matchParameters;
152 bool m_incremental =
false;