diff options
author | abcd <amos.choy@nokia.com> | 2012-07-11 15:51:52 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-12 02:49:34 +0200 |
commit | d9d8844dc3fdf7433e78dcf4489052c1bb28c3cd (patch) | |
tree | 43b8bc01ff7332a79b00216bdf93027976ab70a2 /src/imports | |
parent | 1e0665557adc170d4b76bf988e4c3bed3b21d6c6 (diff) | |
download | qtlocation-d9d8844dc3fdf7433e78dcf4489052c1bb28c3cd.tar.gz |
Fix emission of signals
Previously, the PlaceSearchModel would emit a countChanged signal
on clearing the old results to make way for the new ones during
an update. i.e. an emission for count = 0 was made.
This changes fixes it so that this "extra" signal is not emitted
during an update.
Change-Id: I159a1a09deef13b8420d20869859b4e58e94d1ed
Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
Diffstat (limited to 'src/imports')
6 files changed, 20 insertions, 13 deletions
diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp index 036ba0dd..ae0e7437 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp @@ -238,7 +238,7 @@ QString QDeclarativeSearchModelBase::errorString() const /*! \internal */ -void QDeclarativeSearchModelBase::clearData() +void QDeclarativeSearchModelBase::clearData(bool suppressSignal) { } diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h index a9da6aa1..34fb8763 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h +++ b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h @@ -105,7 +105,7 @@ public: Q_INVOKABLE QString errorString() const; - virtual void clearData(); + virtual void clearData(bool suppressSignal = false); virtual void updateSearchRequest(); // From QQmlParserStatus diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp index 71baeb27..7c606038 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp @@ -566,9 +566,9 @@ int QDeclarativeSearchResultModel::rowCount(const QModelIndex &parent) const return m_results.count(); } -void QDeclarativeSearchResultModel::clearData() +void QDeclarativeSearchResultModel::clearData(bool suppressSignal) { - QDeclarativeSearchModelBase::clearData(); + QDeclarativeSearchModelBase::clearData(suppressSignal); qDeleteAll(m_places); m_places.clear(); @@ -576,7 +576,9 @@ void QDeclarativeSearchResultModel::clearData() m_icons.clear(); if (!m_results.isEmpty()) { m_results.clear(); - emit rowCountChanged(); + + if (!suppressSignal) + emit rowCountChanged(); } } @@ -774,7 +776,7 @@ void QDeclarativeSearchResultModel::updateLayout(const QList<QPlace> &favoritePl int oldRowCount = rowCount(); beginResetModel(); - clearData(); + clearData(true); m_results = m_resultsBuffer; m_resultsBuffer.clear(); diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h index de42c3bc..8313b2af 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h +++ b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h @@ -109,7 +109,7 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const; - virtual void clearData(); + virtual void clearData(bool suppressSignal = false); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; Q_INVOKABLE QVariant data(int index, const QString &roleName) const; QHash<int, QByteArray> roleNames() const; diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp index 88fcd02a..51dd76fa 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp @@ -267,13 +267,15 @@ QStringList QDeclarativeSearchSuggestionModel::suggestions() const /*! \internal */ -void QDeclarativeSearchSuggestionModel::clearData() +void QDeclarativeSearchSuggestionModel::clearData(bool suppressSignal) { - QDeclarativeSearchModelBase::clearData(); + QDeclarativeSearchModelBase::clearData(suppressSignal); if (!m_suggestions.isEmpty()) { m_suggestions.clear(); - emit suggestionsChanged(); + + if (!suppressSignal) + emit suggestionsChanged(); } } @@ -333,13 +335,16 @@ void QDeclarativeSearchSuggestionModel::queryFinished() QPlaceReply *reply = m_reply; m_reply = 0; + int initialCount = m_suggestions.count(); beginResetModel(); - clearData(); + clearData(true); QPlaceSearchSuggestionReply *suggestionReply = qobject_cast<QPlaceSearchSuggestionReply *>(reply); m_suggestions = suggestionReply->suggestions(); - emit suggestionsChanged(); + + if (initialCount != m_suggestions.count()) + emit suggestionsChanged(); endResetModel(); diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h index a974671b..0ff6bcd3 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h +++ b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h @@ -67,7 +67,7 @@ public: QStringList suggestions() const; - void clearData(); + void clearData(bool suppressSignal = false); void updateSearchRequest(); // From QAbstractListModel |