diff --git a/connector/syncthingdir.cpp b/connector/syncthingdir.cpp index 2379126..f897678 100644 --- a/connector/syncthingdir.cpp +++ b/connector/syncthingdir.cpp @@ -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; diff --git a/connector/syncthingdir.h b/connector/syncthingdir.h index 3adcb2b..69e1676 100644 --- a/connector/syncthingdir.h +++ b/connector/syncthingdir.h @@ -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); diff --git a/fileitemactionplugin/syncthingdiractions.cpp b/fileitemactionplugin/syncthingdiractions.cpp index a6ba1e1..47d1d9c 100644 --- a/fileitemactionplugin/syncthingdiractions.cpp +++ b/fileitemactionplugin/syncthingdiractions.cpp @@ -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); diff --git a/model/syncthingdirectorymodel.cpp b/model/syncthingdirectorymodel.cpp index 67f068d..8c6ea5e 100644 --- a/model/syncthingdirectorymodel.cpp +++ b/model/syncthingdirectorymodel.cpp @@ -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);