diff --git a/resources/tomboynotes/configdialog.ui b/resources/tomboynotes/configdialog.ui --- a/resources/tomboynotes/configdialog.ui +++ b/resources/tomboynotes/configdialog.ui @@ -8,7 +8,7 @@ 0 0 400 - 290 + 314 @@ -68,6 +68,29 @@ + + + + + + + Update interval: + + + + + + + + + + minutes + + + + + + @@ -99,16 +122,6 @@ - - - - - - - true - - - diff --git a/resources/tomboynotes/tomboycollectionsdownloadjob.h b/resources/tomboynotes/tomboycollectionsdownloadjob.h --- a/resources/tomboynotes/tomboycollectionsdownloadjob.h +++ b/resources/tomboynotes/tomboycollectionsdownloadjob.h @@ -28,7 +28,7 @@ Q_OBJECT public: // ctor - explicit TomboyCollectionsDownloadJob(const QString &collectionName, KIO::AccessManager *manager, QObject *parent = nullptr); + explicit TomboyCollectionsDownloadJob(const QString &collectionName, KIO::AccessManager *manager, int refreshInterval, QObject *parent = nullptr); // returns the parsed results wrapped in Akonadi::Collection::List, see bellow Akonadi::Collection::List collections() const; @@ -42,6 +42,7 @@ private: Akonadi::Collection::List mResultCollections; QString mCollectionName; + int mRefreshInterval; }; #endif // TOMBOYCOLLECTIONSDOWNLOADJOB_H diff --git a/resources/tomboynotes/tomboycollectionsdownloadjob.cpp b/resources/tomboynotes/tomboycollectionsdownloadjob.cpp --- a/resources/tomboynotes/tomboycollectionsdownloadjob.cpp +++ b/resources/tomboynotes/tomboycollectionsdownloadjob.cpp @@ -20,14 +20,16 @@ #include "tomboycollectionsdownloadjob.h" #include "debug.h" #include +#include #include #include #include -TomboyCollectionsDownloadJob::TomboyCollectionsDownloadJob(const QString &collectionName, KIO::AccessManager *manager, QObject *parent) +TomboyCollectionsDownloadJob::TomboyCollectionsDownloadJob(const QString &collectionName, KIO::AccessManager *manager, int refreshInterval, QObject *parent) : TomboyJobBase(manager, parent), mCollectionName(collectionName) { + mRefreshInterval = refreshInterval; } Akonadi::Collection::List TomboyCollectionsDownloadJob::collections() const @@ -70,6 +72,14 @@ c.setRemoteRevision(QString::number(collectionRevision.toInt())); qCDebug(TOMBOYNOTESRESOURCE_LOG) << "TomboyCollectionsDownloadJob: Sync revision " << collectionRevision.toString(); + Akonadi::CachePolicy cachePolicy; + cachePolicy.setInheritFromParent(false); + cachePolicy.setSyncOnDemand(false); + cachePolicy.setCacheTimeout(-1); + cachePolicy.setIntervalCheckTime(mRefreshInterval); + cachePolicy.setLocalParts(QStringList() << QStringLiteral("ALL")); + c.setCachePolicy(cachePolicy); + c.setContentMimeTypes({ Akonadi::NoteUtils::noteMimeType() }); mResultCollections << c; diff --git a/resources/tomboynotes/tomboynotesresource.cpp b/resources/tomboynotes/tomboynotesresource.cpp --- a/resources/tomboynotes/tomboynotesresource.cpp +++ b/resources/tomboynotes/tomboynotesresource.cpp @@ -77,7 +77,12 @@ return; } - auto job = new TomboyCollectionsDownloadJob(Settings::collectionName(), mManager, this); + int refreshInterval = Settings::self()->refreshInterval(); + if (refreshInterval == 0) { + refreshInterval = -1; + } + + auto job = new TomboyCollectionsDownloadJob(Settings::collectionName(), mManager, refreshInterval, this); job->setAuthentication(Settings::requestToken(), Settings::requestTokenSecret()); job->setServerURL(Settings::serverURL(), Settings::userURL()); // connect to its result() signal