From 31e7e4e79ed86beca9dacf349b2ef924347d1726 Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 27 Sep 2019 16:41:24 +0200 Subject: [PATCH] Support "Waiting to scan" This state has been introduced with https://github.com/syncthing/syncthing/pull/4888 --- connector/syncthingconnection.cpp | 1 + connector/syncthingconnection_requests.cpp | 2 +- connector/syncthingdir.cpp | 4 ++++ connector/syncthingdir.h | 2 +- connector/tests/misctests.cpp | 4 ++++ fileitemactionplugin/syncthingdiractions.cpp | 1 + model/syncthingdirectorymodel.cpp | 5 +++++ 7 files changed, 17 insertions(+), 2 deletions(-) diff --git a/connector/syncthingconnection.cpp b/connector/syncthingconnection.cpp index 509c482..1633d9d 100644 --- a/connector/syncthingconnection.cpp +++ b/connector/syncthingconnection.cpp @@ -805,6 +805,7 @@ void SyncthingConnection::setStatus(SyncthingStatus status) case SyncthingDirStatus::Synchronizing: synchronizing = true; break; + case SyncthingDirStatus::WaitingToScan: case SyncthingDirStatus::Scanning: scanning = true; break; diff --git a/connector/syncthingconnection_requests.cpp b/connector/syncthingconnection_requests.cpp index 2628c4c..fd20ebe 100644 --- a/connector/syncthingconnection_requests.cpp +++ b/connector/syncthingconnection_requests.cpp @@ -1962,7 +1962,7 @@ void SyncthingConnection::readLocalFolderCompletion(DateTime eventTime, const QJ dirInfo.completionPercentage = globalStats.bytes ? static_cast((globalStats.bytes - neededStats.bytes) * 100 / globalStats.bytes) : 100; emit dirStatusChanged(dirInfo, index); if (neededStats.isNull() && previouslyUpdated && (neededStats != previouslyNeeded || globalStats != previouslyGlobal) - && dirInfo.status != SyncthingDirStatus::Scanning) { + && dirInfo.status != SyncthingDirStatus::WaitingToScan && dirInfo.status != SyncthingDirStatus::Scanning) { emit dirCompleted(eventTime, dirInfo, index); } } diff --git a/connector/syncthingdir.cpp b/connector/syncthingdir.cpp index cd67766..43ff8bb 100644 --- a/connector/syncthingdir.cpp +++ b/connector/syncthingdir.cpp @@ -17,6 +17,8 @@ QString statusString(SyncthingDirStatus status) return QCoreApplication::translate("SyncthingDirStatus", "unknown"); case SyncthingDirStatus::Idle: return QCoreApplication::translate("SyncthingDirStatus", "idle"); + case SyncthingDirStatus::WaitingToScan: + return QCoreApplication::translate("SyncthingDirStatus", "waiting to scan"); case SyncthingDirStatus::Scanning: return QCoreApplication::translate("SyncthingDirStatus", "scanning"); case SyncthingDirStatus::PreparingToSync: @@ -101,6 +103,8 @@ bool SyncthingDir::assignStatus(const QString &statusStr, CppUtilities::DateTime if (statusStr == QLatin1String("idle")) { completionPercentage = 0; newStatus = SyncthingDirStatus::Idle; + } else if (statusStr == QLatin1String("scan-waiting")) { + newStatus = SyncthingDirStatus::WaitingToScan; } else if (statusStr == QLatin1String("scanning")) { newStatus = SyncthingDirStatus::Scanning; } else if (statusStr == QLatin1String("sync-preparing")) { diff --git a/connector/syncthingdir.h b/connector/syncthingdir.h index 1fc84c9..032a893 100644 --- a/connector/syncthingdir.h +++ b/connector/syncthingdir.h @@ -12,7 +12,7 @@ namespace Data { -enum class SyncthingDirStatus { Unknown, Idle, Scanning, PreparingToSync, Synchronizing, OutOfSync }; +enum class SyncthingDirStatus { Unknown, Idle, WaitingToScan, Scanning, PreparingToSync, Synchronizing, OutOfSync }; QString LIB_SYNCTHING_CONNECTOR_EXPORT statusString(SyncthingDirStatus status); diff --git a/connector/tests/misctests.cpp b/connector/tests/misctests.cpp index 68284b9..348cadd 100644 --- a/connector/tests/misctests.cpp +++ b/connector/tests/misctests.cpp @@ -203,6 +203,10 @@ void MiscTests::testSyncthingDir() const DateTime lastScanTime(DateTime::now()); updateTime += TimeSpan::fromSeconds(5); + CPPUNIT_ASSERT(dir.assignStatus(SyncthingDirStatus::WaitingToScan, updateTime)); + CPPUNIT_ASSERT(dir.lastScanTime.isNull()); + CPPUNIT_ASSERT_EQUAL(QStringLiteral("waiting to scan"), dir.statusString()); + updateTime += TimeSpan::fromSeconds(5); CPPUNIT_ASSERT(dir.assignStatus(SyncthingDirStatus::Scanning, updateTime)); CPPUNIT_ASSERT(dir.lastScanTime.isNull()); CPPUNIT_ASSERT_EQUAL(QStringLiteral("scanning"), dir.statusString()); diff --git a/fileitemactionplugin/syncthingdiractions.cpp b/fileitemactionplugin/syncthingdiractions.cpp index 0846c50..5906d19 100644 --- a/fileitemactionplugin/syncthingdiractions.cpp +++ b/fileitemactionplugin/syncthingdiractions.cpp @@ -51,6 +51,7 @@ bool SyncthingDirActions::updateStatus(const SyncthingDir &dir) case SyncthingDirStatus::Idle: m_statusAction.setIcon(statusIcons().idling); break; + case SyncthingDirStatus::WaitingToScan: case SyncthingDirStatus::Scanning: m_statusAction.setIcon(statusIcons().scanninig); break; diff --git a/model/syncthingdirectorymodel.cpp b/model/syncthingdirectorymodel.cpp index 4d94184..ca11311 100644 --- a/model/syncthingdirectorymodel.cpp +++ b/model/syncthingdirectorymodel.cpp @@ -314,6 +314,7 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const return statusIcons().disconnected; case SyncthingDirStatus::Idle: return statusIcons().idling; + case SyncthingDirStatus::WaitingToScan: case SyncthingDirStatus::Scanning: return statusIcons().scanninig; case SyncthingDirStatus::PreparingToSync: @@ -459,6 +460,8 @@ QString SyncthingDirectoryModel::dirStatusString(const SyncthingDir &dir) return dir.rawStatus.isEmpty() ? tr("Unknown status") : QString(dir.rawStatus); case SyncthingDirStatus::Idle: return tr("Idle"); + case SyncthingDirStatus::WaitingToScan: + return tr("Waiting to scan"); case SyncthingDirStatus::Scanning: if (dir.scanningPercentage > 0) { if (dir.scanningRate != 0.0) { @@ -490,6 +493,8 @@ QVariant SyncthingDirectoryModel::dirStatusColor(const SyncthingDir &dir) const break; case SyncthingDirStatus::Idle: return Colors::green(m_brightColors); + case SyncthingDirStatus::WaitingToScan: + return Colors::orange(m_brightColors); case SyncthingDirStatus::Scanning: case SyncthingDirStatus::PreparingToSync: case SyncthingDirStatus::Synchronizing: