From 15bd498b82d20124877fb2ec80aef21baa40c1a3 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sat, 11 Feb 2017 18:29:29 +0100 Subject: Avoid needless requerying --- framework/domain/maillistmodel.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'framework/domain/maillistmodel.cpp') diff --git a/framework/domain/maillistmodel.cpp b/framework/domain/maillistmodel.cpp index 6fe80092..e0b74a3a 100644 --- a/framework/domain/maillistmodel.cpp +++ b/framework/domain/maillistmodel.cpp @@ -77,7 +77,7 @@ static QString join(const QList &contact void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) { if (mail && !mail->getFullPayloadAvailable()) { - qWarning() << "Fetching mail: " << mail->identifier() << mail->getSubject(); + qDebug() << "Fetching mail: " << mail->identifier() << mail->getSubject(); Sink::Store::synchronize(Sink::SyncScope{*mail}).exec(); } } @@ -145,9 +145,14 @@ void MailListModel::setParentFolder(const QVariant &parentFolder) auto folder = parentFolder.value(); if (!folder) { qWarning() << "No folder: " << parentFolder; + mCurrentQueryItem.clear(); setSourceModel(nullptr); return; } + if (mCurrentQueryItem == folder->identifier()) { + return; + } + mCurrentQueryItem = folder->identifier(); Sink::Query query = Sink::StandardQueries::threadLeaders(*folder); query.setFlags(Sink::Query::LiveQuery); query.limit(100); @@ -163,7 +168,7 @@ void MailListModel::setParentFolder(const QVariant &parentFolder) query.request(); query.request(); mFetchMails = false; - qWarning() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier(); + qDebug() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier(); //Latest mail on top sort(0, Qt::DescendingOrder); runQuery(query); @@ -180,10 +185,16 @@ void MailListModel::setMail(const QVariant &variant) auto mail = variant.value(); if (!mail) { qWarning() << "No mail: " << mail; + mCurrentQueryItem.clear(); setSourceModel(nullptr); return; } + if (mCurrentQueryItem == mail->identifier()) { + return; + } + mCurrentQueryItem = mail->identifier(); Sink::Query query = Sink::StandardQueries::completeThread(*mail); + query.setFlags(Sink::Query::LiveQuery); query.request(); query.request(); query.request(); @@ -197,7 +208,7 @@ void MailListModel::setMail(const QVariant &variant) query.request(); query.request(); mFetchMails = true; - qWarning() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); + qDebug() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); //Latest mail at the bottom sort(0, Qt::AscendingOrder); runQuery(query); -- cgit v1.2.3