Update SyncthingDirStatus enum to new states from syncthing/lib/model/folderstate.go

This commit is contained in:
Martchus 2020-12-31 02:13:32 +01:00
parent 64686caee6
commit c827907ea6
4 changed files with 49 additions and 6 deletions

View File

@ -17,14 +17,20 @@ 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::WaitingToScan:
return QCoreApplication::translate("SyncthingDirStatus", "waiting to scan");
case SyncthingDirStatus::WaitingToSync:
return QCoreApplication::translate("SyncthingDirStatus", "waiting to sync");
case SyncthingDirStatus::PreparingToSync:
return QCoreApplication::translate("SyncthingDirStatus", "preparing to sync");
case SyncthingDirStatus::Synchronizing:
return QCoreApplication::translate("SyncthingDirStatus", "synchronizing");
case SyncthingDirStatus::Cleaning:
return QCoreApplication::translate("SyncthingDirStatus", "cleaning");
case SyncthingDirStatus::WaitingToClean:
return QCoreApplication::translate("SyncthingDirStatus", "waiting to clean");
case SyncthingDirStatus::OutOfSync:
return QCoreApplication::translate("SyncthingDirStatus", "out of sync");
}
@ -103,10 +109,12 @@ 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("scan-waiting")) {
newStatus = SyncthingDirStatus::WaitingToScan;
} else if (statusStr == QLatin1String("sync-waiting")) {
newStatus = SyncthingDirStatus::WaitingToSync;
} else if (statusStr == QLatin1String("sync-preparing")) {
// ensure status changed signal is emitted
if (!itemErrors.empty()) {
@ -119,6 +127,10 @@ bool SyncthingDir::assignStatus(const QString &statusStr, CppUtilities::DateTime
status = SyncthingDirStatus::Unknown;
}
newStatus = SyncthingDirStatus::Synchronizing;
} else if (statusStr == QLatin1String("cleaning")) {
newStatus = SyncthingDirStatus::Cleaning;
} else if (statusStr == QLatin1String("clean-waiting")) {
newStatus = SyncthingDirStatus::WaitingToClean;
} else if (statusStr == QLatin1String("error")) {
completionPercentage = 0;
newStatus = SyncthingDirStatus::OutOfSync;

View File

@ -19,8 +19,24 @@
namespace Data {
/// \brief The SyncthingDirStatus enum represents a Syncthing directory status.
/// \remarks It needs to be kept in sync with the states defined in Syncthing's "syncthing/lib/model/folderstate.go".
enum class SyncthingDirStatus { Unknown, Idle, WaitingToScan, Scanning, PreparingToSync, Synchronizing, OutOfSync };
/// \remarks
/// - It needs to be kept in sync with the states defined in Syncthing's "syncthing/lib/model/folderstate.go". If it is not in sync
/// SyncthingDirStatus::Unknown will be used.
/// - There's no real documentation here because these enum items really correspond to the folder state as provided by Syncthing.
/// - When changing this enum, also change SyncthingDir::assignStatus(), SyncthingConnection::setStatus(), SyncthingDirActions::updateStatus()
/// and SyncthingDirectoryModel::data(), SyncthingDirectoryModel::dirStatusString() and SyncthingDirectoryModel::dirStatusColor().
enum class SyncthingDirStatus {
Unknown, /**< directory status is unknown */
Idle, /**< directory is idling ("idle") */
Scanning, /**< directory is scanning ("scanning") */
WaitingToScan, /**< directory is waiting to scan ("scan-waiting") */
WaitingToSync, /**< directory is waiting to sync ("sync-waiting") */
PreparingToSync, /**< directory is preparing to sync ("sync-preparing") */
Synchronizing, /**< directory is synchronizing ("syncing") */
Cleaning, /**< directory is cleaning ("cleaning") */
WaitingToClean, /**< directory is waiting to clean ("clean-waiting") */
OutOfSync, /**< directory is out-of-sync due to errors ("error") */
};
LIB_SYNCTHING_CONNECTOR_EXPORT QString statusString(SyncthingDirStatus status);

View File

@ -51,12 +51,15 @@ bool SyncthingDirActions::updateStatus(const SyncthingDir &dir)
m_statusAction.setIcon(statusIcons().disconnected);
break;
case SyncthingDirStatus::Idle:
case SyncthingDirStatus::WaitingToClean:
case SyncthingDirStatus::Cleaning:
m_statusAction.setIcon(statusIcons().idling);
break;
case SyncthingDirStatus::WaitingToScan:
case SyncthingDirStatus::Scanning:
m_statusAction.setIcon(statusIcons().scanninig);
break;
case SyncthingDirStatus::WaitingToSync:
case SyncthingDirStatus::PreparingToSync:
case SyncthingDirStatus::Synchronizing:
m_statusAction.setIcon(statusIcons().sync);

View File

@ -313,10 +313,13 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
case SyncthingDirStatus::Unknown:
return statusIcons().disconnected;
case SyncthingDirStatus::Idle:
case SyncthingDirStatus::Cleaning:
case SyncthingDirStatus::WaitingToClean:
return statusIcons().idling;
case SyncthingDirStatus::WaitingToScan:
case SyncthingDirStatus::Scanning:
return statusIcons().scanninig;
case SyncthingDirStatus::WaitingToSync:
case SyncthingDirStatus::PreparingToSync:
case SyncthingDirStatus::Synchronizing:
return statusIcons().sync;
@ -470,10 +473,16 @@ QString SyncthingDirectoryModel::dirStatusString(const SyncthingDir &dir)
return tr("Scanning (%1 %)").arg(dir.scanningPercentage);
}
return tr("Scanning");
case SyncthingDirStatus::WaitingToSync:
return tr("Waiting to sync");
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::Cleaning:
return tr("Cleaning");
case SyncthingDirStatus::WaitingToClean:
return tr("Waiting to clean");
case SyncthingDirStatus::OutOfSync:
return tr("Out of sync");
}
@ -494,10 +503,13 @@ QVariant SyncthingDirectoryModel::dirStatusColor(const SyncthingDir &dir) const
case SyncthingDirStatus::Idle:
return Colors::green(m_brightColors);
case SyncthingDirStatus::WaitingToScan:
case SyncthingDirStatus::WaitingToSync:
case SyncthingDirStatus::WaitingToClean:
return Colors::orange(m_brightColors);
case SyncthingDirStatus::Scanning:
case SyncthingDirStatus::PreparingToSync:
case SyncthingDirStatus::Synchronizing:
case SyncthingDirStatus::Cleaning:
return Colors::blue(m_brightColors);
case SyncthingDirStatus::OutOfSync:
return Colors::red(m_brightColors);