32 QML_NAMED_ELEMENT(PlaceSearchModel)
33 QML_ADDED_IN_VERSION(5, 0)
35 Q_PROPERTY(QString searchTerm READ searchTerm WRITE setSearchTerm NOTIFY searchTermChanged)
36 Q_PROPERTY(QQmlListProperty<QDeclarativeCategory> categories READ categories NOTIFY categoriesChanged)
37 Q_PROPERTY(QString recommendationId READ recommendationId WRITE setRecommendationId NOTIFY recommendationIdChanged)
38 Q_PROPERTY(RelevanceHint relevanceHint READ relevanceHint WRITE setRelevanceHint NOTIFY relevanceHintChanged)
39 Q_PROPERTY(QDeclarativePlace::Visibility visibilityScope READ visibilityScope WRITE setVisibilityScope NOTIFY visibilityScopeChanged)
41 Q_PROPERTY(
int count READ rowCount NOTIFY rowCountChanged)
42 Q_PROPERTY(QDeclarativeGeoServiceProvider *favoritesPlugin READ favoritesPlugin WRITE setFavoritesPlugin NOTIFY favoritesPluginChanged)
43 Q_PROPERTY(QVariantMap favoritesMatchParameters READ favoritesMatchParameters WRITE setFavoritesMatchParameters NOTIFY favoritesMatchParametersChanged)
45 Q_PROPERTY(
bool incremental MEMBER m_incremental NOTIFY incrementalChanged REVISION(5, 12))
48 enum SearchResultType {
49 UnknownSearchResult = QPlaceSearchResult::UnknownSearchResult,
50 PlaceResult = QPlaceSearchResult::PlaceResult,
51 ProposedSearchResult = QPlaceSearchResult::ProposedSearchResult
53 Q_ENUM(SearchResultType)
56 UnspecifiedHint = QPlaceSearchRequest::UnspecifiedHint,
57 DistanceHint = QPlaceSearchRequest::DistanceHint,
58 LexicalPlaceNameHint = QPlaceSearchRequest::LexicalPlaceNameHint
62 explicit QDeclarativeSearchResultModel(QObject *parent =
nullptr);
63 ~QDeclarativeSearchResultModel();
65 QString searchTerm()
const;
66 void setSearchTerm(
const QString &searchTerm);
68 QQmlListProperty<QDeclarativeCategory> categories();
69 static void categories_append(QQmlListProperty<QDeclarativeCategory> *list,
70 QDeclarativeCategory *category);
71 static qsizetype categories_count(QQmlListProperty<QDeclarativeCategory> *list);
72 static QDeclarativeCategory *category_at(QQmlListProperty<QDeclarativeCategory> *list, qsizetype index);
73 static void categories_clear(QQmlListProperty<QDeclarativeCategory> *list);
75 QString recommendationId()
const;
76 void setRecommendationId(
const QString &recommendationId);
78 QDeclarativeSearchResultModel::RelevanceHint relevanceHint()
const;
79 void setRelevanceHint(QDeclarativeSearchResultModel::RelevanceHint hint);
81 QDeclarativePlace::Visibility visibilityScope()
const;
82 void setVisibilityScope(QDeclarativePlace::Visibility visibilityScope);
84 QDeclarativeGeoServiceProvider *favoritesPlugin()
const;
85 void setFavoritesPlugin(QDeclarativeGeoServiceProvider *plugin);
87 QVariantMap favoritesMatchParameters()
const;
88 void setFavoritesMatchParameters(
const QVariantMap ¶meters);
90 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
92 void clearData(
bool suppressSignal =
false) override;
93 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
94 Q_INVOKABLE QVariant data(
int index,
const QString &roleName)
const;
95 QHash<
int, QByteArray> roleNames()
const override;
97 Q_INVOKABLE
void updateWith(
int proposedSearchIndex);
99 void updateSearchRequest();
102 void searchTermChanged();
103 void categoriesChanged();
104 void recommendationIdChanged();
105 void relevanceHintChanged();
106 void visibilityScopeChanged();
108 void rowCountChanged();
109 void favoritesPluginChanged();
110 void favoritesMatchParametersChanged();
112 void incrementalChanged();
115 QPlaceReply *sendQuery(QPlaceManager *manager,
const QPlaceSearchRequest &request) override;
116 void initializePlugin(QDeclarativeGeoServiceProvider *plugin) override;
119 void queryFinished() override;
120 void onContentUpdated() override;
123 void updateLayout(
const QList<QPlace> &favoritePlaces = QList<QPlace>());
125 void placeUpdated(
const QString &placeId);
126 void placeRemoved(
const QString &placeId);
130 SearchResultTypeRole = Qt::UserRole,
138 int getRow(
const QString &placeId)
const;
139 QList<QPlaceSearchResult> resultsFromPages()
const;
140 void removePageRow(
int row);
142 QList<QDeclarativeCategory *> m_categories;
143 QLocation::VisibilityScope m_visibilityScope = QLocation::UnspecifiedVisibility;
145 QMap<
int, QList<QPlaceSearchResult>> m_pages;
146 QList<QPlaceSearchResult> m_results;
147 QList<QPlaceSearchResult> m_resultsBuffer;
148 QList<QDeclarativePlace *> m_places;
149 QList<QPlaceIcon> m_icons;
151 QDeclarativeGeoServiceProvider *m_favoritesPlugin =
nullptr;
152 QVariantMap m_matchParameters;
153 bool m_incremental =
false;