Prepare for "Prepare to Sync"
See https://github.com/syncthing/syncthing/pull/6028
This commit is contained in:
parent
e7f5dc9b48
commit
6243a4c2fd
|
@ -794,11 +794,14 @@ void SyncthingConnection::setStatus(SyncthingStatus status)
|
|||
// reset reconnect tries
|
||||
m_autoReconnectTries = 0;
|
||||
|
||||
// check whether at least one directory is scanning or synchronizing
|
||||
// check whether at least one directory is scanning, preparing to synchronize or synchronizing
|
||||
// note: We don't distinguish between "preparing to sync" and "synchronizing" for computing the overall
|
||||
// status at the moment.
|
||||
bool scanning = false;
|
||||
bool synchronizing = false;
|
||||
for (const SyncthingDir &dir : m_dirs) {
|
||||
switch (dir.status) {
|
||||
case SyncthingDirStatus::PreparingToSync:
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
synchronizing = true;
|
||||
break;
|
||||
|
@ -807,6 +810,9 @@ void SyncthingConnection::setStatus(SyncthingStatus status)
|
|||
break;
|
||||
default:;
|
||||
}
|
||||
if (synchronizing) {
|
||||
break; // skip remaining dirs, "synchronizing" overrides "scanning" anyways
|
||||
}
|
||||
}
|
||||
|
||||
if (synchronizing) {
|
||||
|
|
|
@ -19,6 +19,8 @@ QString statusString(SyncthingDirStatus status)
|
|||
return QCoreApplication::translate("SyncthingDirStatus", "idle");
|
||||
case SyncthingDirStatus::Scanning:
|
||||
return QCoreApplication::translate("SyncthingDirStatus", "scanning");
|
||||
case SyncthingDirStatus::PreparingToSync:
|
||||
return QCoreApplication::translate("SyncthingDirStatus", "preparing to sync");
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
return QCoreApplication::translate("SyncthingDirStatus", "synchronizing");
|
||||
case SyncthingDirStatus::OutOfSync:
|
||||
|
@ -55,7 +57,7 @@ bool SyncthingDir::checkWhetherStatusUpdateRelevant(DateTime time)
|
|||
bool SyncthingDir::finalizeStatusUpdate(SyncthingDirStatus newStatus, DateTime time)
|
||||
{
|
||||
// handle obsoletion of out-of-sync items: no FolderErrors are accepted older than the last "sync" state are accepted
|
||||
if (newStatus == SyncthingDirStatus::Synchronizing) {
|
||||
if (newStatus == SyncthingDirStatus::PreparingToSync || newStatus == SyncthingDirStatus::Synchronizing) {
|
||||
// update time of last "sync" state and obsolete currently assigned errors
|
||||
lastSyncStarted = time; // used internally and not displayed, hence keep it GMT
|
||||
itemErrors.clear();
|
||||
|
@ -101,6 +103,12 @@ bool SyncthingDir::assignStatus(const QString &statusStr, CppUtilities::DateTime
|
|||
newStatus = SyncthingDirStatus::Idle;
|
||||
} else if (statusStr == QLatin1String("scanning")) {
|
||||
newStatus = SyncthingDirStatus::Scanning;
|
||||
} else if (statusStr == QLatin1String("sync-preparing")) {
|
||||
// ensure status changed signal is emitted
|
||||
if (!itemErrors.empty()) {
|
||||
status = SyncthingDirStatus::Unknown;
|
||||
}
|
||||
newStatus = SyncthingDirStatus::PreparingToSync;
|
||||
} else if (statusStr == QLatin1String("syncing")) {
|
||||
// ensure status changed signal is emitted
|
||||
if (!itemErrors.empty()) {
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
namespace Data {
|
||||
|
||||
enum class SyncthingDirStatus { Unknown, Idle, Scanning, Synchronizing, OutOfSync };
|
||||
enum class SyncthingDirStatus { Unknown, Idle, Scanning, PreparingToSync, Synchronizing, OutOfSync };
|
||||
|
||||
QString LIB_SYNCTHING_CONNECTOR_EXPORT statusString(SyncthingDirStatus status);
|
||||
|
||||
|
|
|
@ -221,13 +221,20 @@ void MiscTests::testSyncthingDir()
|
|||
CPPUNIT_ASSERT(!dir.assignStatus(SyncthingDirStatus::Idle, updateTime += TimeSpan::fromMinutes(1.5)));
|
||||
CPPUNIT_ASSERT_EQUAL(updateTime, dir.lastSyncStarted);
|
||||
const auto lastSyncTime(updateTime += TimeSpan::fromMinutes(1.5));
|
||||
dir.itemErrors.emplace_back();
|
||||
CPPUNIT_ASSERT(dir.assignStatus(SyncthingDirStatus::Synchronizing, lastSyncTime));
|
||||
CPPUNIT_ASSERT_EQUAL(QStringLiteral("synchronizing"), dir.statusString());
|
||||
CPPUNIT_ASSERT_EQUAL(0_st, dir.itemErrors.size());
|
||||
CPPUNIT_ASSERT_EQUAL(lastSyncTime, dir.lastSyncStarted);
|
||||
const auto lastSyncTime2(updateTime += TimeSpan::fromMinutes(2.0));
|
||||
dir.itemErrors.emplace_back();
|
||||
CPPUNIT_ASSERT(dir.assignStatus(SyncthingDirStatus::PreparingToSync, lastSyncTime2));
|
||||
CPPUNIT_ASSERT_EQUAL(QStringLiteral("preparing to sync"), dir.statusString());
|
||||
CPPUNIT_ASSERT_EQUAL(0_st, dir.itemErrors.size());
|
||||
CPPUNIT_ASSERT_EQUAL(lastSyncTime2, dir.lastSyncStarted);
|
||||
|
||||
CPPUNIT_ASSERT(dir.assignStatus(SyncthingDirStatus::Idle, updateTime += TimeSpan::fromMinutes(1.5)));
|
||||
CPPUNIT_ASSERT_EQUAL(lastSyncTime, dir.lastSyncStarted);
|
||||
CPPUNIT_ASSERT_EQUAL(lastSyncTime2, dir.lastSyncStarted);
|
||||
CPPUNIT_ASSERT(dir.assignStatus(QStringLiteral("syncing"), updateTime += TimeSpan::fromMinutes(1.5)));
|
||||
CPPUNIT_ASSERT_EQUAL(updateTime, dir.lastSyncStarted);
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ bool SyncthingDirActions::updateStatus(const SyncthingDir &dir)
|
|||
case SyncthingDirStatus::Scanning:
|
||||
m_statusAction.setIcon(statusIcons().scanninig);
|
||||
break;
|
||||
case SyncthingDirStatus::PreparingToSync:
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
m_statusAction.setIcon(statusIcons().sync);
|
||||
break;
|
||||
|
|
|
@ -316,6 +316,7 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
|
|||
return statusIcons().idling;
|
||||
case SyncthingDirStatus::Scanning:
|
||||
return statusIcons().scanninig;
|
||||
case SyncthingDirStatus::PreparingToSync:
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
return statusIcons().sync;
|
||||
case SyncthingDirStatus::OutOfSync:
|
||||
|
@ -466,6 +467,8 @@ QString SyncthingDirectoryModel::dirStatusString(const SyncthingDir &dir)
|
|||
return tr("Scanning (%1 %)").arg(dir.scanningPercentage);
|
||||
}
|
||||
return tr("Scanning");
|
||||
case SyncthingDirStatus::PreparingToSync:
|
||||
return tr("Preparing to sync");
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
return dir.completionPercentage > 0 ? tr("Synchronizing (%1 %)").arg(dir.completionPercentage) : tr("Synchronizing");
|
||||
case SyncthingDirStatus::OutOfSync:
|
||||
|
@ -488,6 +491,7 @@ QVariant SyncthingDirectoryModel::dirStatusColor(const SyncthingDir &dir) const
|
|||
case SyncthingDirStatus::Idle:
|
||||
return Colors::green(m_brightColors);
|
||||
case SyncthingDirStatus::Scanning:
|
||||
case SyncthingDirStatus::PreparingToSync:
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
return Colors::blue(m_brightColors);
|
||||
case SyncthingDirStatus::OutOfSync:
|
||||
|
|
Loading…
Reference in New Issue