Add option to ignore folder "out-of-sync" errors for overall status
* Add option to ignore unread notifications as well to cover all those extra cases * See https://github.com/Martchus/syncthingtray/issues/141
This commit is contained in:
parent
1fad0baa0d
commit
4b174eae20
|
@ -9,8 +9,8 @@ set(META_APP_DESCRIPTION "Tray application for Syncthing")
|
|||
set(META_APP_CATEGORIES "Network;FileTransfer")
|
||||
set(META_GUI_OPTIONAL false)
|
||||
set(META_VERSION_MAJOR 1)
|
||||
set(META_VERSION_MINOR 1)
|
||||
set(META_VERSION_PATCH 21)
|
||||
set(META_VERSION_MINOR 2)
|
||||
set(META_VERSION_PATCH 0)
|
||||
set(META_VERSION_EXACT_SONAME ON)
|
||||
set(META_ADD_DEFAULT_CPP_UNIT_TEST_APPLICATION ON)
|
||||
|
||||
|
|
|
@ -23,7 +23,12 @@ enum class SyncthingStatusComputionFlags : quint64 {
|
|||
Synchronizing = (1 << 1), /**< the status SyncthingStatus::Synchronizing might be set (in addition) */
|
||||
RemoteSynchronizing = (1 << 2), /**< the status SyncthingStatus::RemoteNotInSync might be set (in addition) */
|
||||
DevicePaused = (1 << 3), /**< the status SyncthingStatus::Paused might be set if there's at least one paused device (in addition) */
|
||||
Default = SyncthingStatusComputionFlags::Scanning | SyncthingStatusComputionFlags::Synchronizing | SyncthingStatusComputionFlags::DevicePaused,
|
||||
OutOfSync = (1
|
||||
<< 4), /**< the return value of SyncthingConnection::hasOutOfSyncDirs() is considered by further displaying-related computations such as StatusInfo::updateConnectionStatus() */
|
||||
UnreadNotifications = (1
|
||||
<< 5), /**< the return value of SyncthingConnection::hasUnreadNotifications() is considered by further displaying-related computations such as StatusInfo::updateConnectionStatus() */
|
||||
Default = SyncthingStatusComputionFlags::Scanning | SyncthingStatusComputionFlags::Synchronizing | SyncthingStatusComputionFlags::DevicePaused
|
||||
| SyncthingStatusComputionFlags::OutOfSync | SyncthingStatusComputionFlags::UnreadNotifications,
|
||||
/**< the default flags used all over the place */
|
||||
};
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@ SyncthingStatusComputionModel::SyncthingStatusComputionModel(QObject *parent)
|
|||
itemFor(SyncthingStatusComputionFlags::Synchronizing),
|
||||
itemFor(SyncthingStatusComputionFlags::RemoteSynchronizing),
|
||||
itemFor(SyncthingStatusComputionFlags::DevicePaused),
|
||||
itemFor(SyncthingStatusComputionFlags::OutOfSync),
|
||||
itemFor(SyncthingStatusComputionFlags::UnreadNotifications),
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -39,6 +41,10 @@ QString SyncthingStatusComputionModel::labelForId(const QVariant &id) const
|
|||
return tr("Remote dir has outstanding progress");
|
||||
case SyncthingStatusComputionFlags::DevicePaused:
|
||||
return tr("A device is paused");
|
||||
case SyncthingStatusComputionFlags::OutOfSync:
|
||||
return tr("Local dir is out of sync");
|
||||
case SyncthingStatusComputionFlags::UnreadNotifications:
|
||||
return tr("Unread notification present");
|
||||
default:
|
||||
return id.toString();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "./statusinfo.h"
|
||||
|
||||
#include <syncthingconnector/syncthingconnection.h>
|
||||
#include <syncthingconnector/syncthingconnectionsettings.h>
|
||||
#include <syncthingconnector/syncthingdev.h>
|
||||
#include <syncthingconnector/utils.h>
|
||||
#include <syncthingmodel/syncthingicons.h>
|
||||
|
@ -53,7 +54,7 @@ void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection, c
|
|||
m_statusIcon = &icons.disconnected;
|
||||
break;
|
||||
default:
|
||||
if (connection.hasOutOfSyncDirs()) {
|
||||
if (connection.hasOutOfSyncDirs() && (connection.statusComputionFlags() & SyncthingStatusComputionFlags::OutOfSync)) {
|
||||
switch (connection.status()) {
|
||||
case SyncthingStatus::Synchronizing:
|
||||
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Synchronization is ongoing");
|
||||
|
@ -64,7 +65,7 @@ void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection, c
|
|||
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "At least one directory is out of sync");
|
||||
m_statusIcon = &icons.error;
|
||||
}
|
||||
} else if (connection.hasUnreadNotifications()) {
|
||||
} else if (connection.hasUnreadNotifications() && (connection.statusComputionFlags() & SyncthingStatusComputionFlags::UnreadNotifications)) {
|
||||
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Notifications available");
|
||||
m_statusIcon = &icons.notify;
|
||||
} else {
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include <QSslCertificate>
|
||||
#include <QSslError>
|
||||
#include <QStringBuilder>
|
||||
#include <QVersionNumber>
|
||||
|
||||
#include <iostream>
|
||||
#include <type_traits>
|
||||
|
@ -263,6 +264,7 @@ void restore()
|
|||
settings.sync();
|
||||
Settings &v = values();
|
||||
|
||||
const auto version = QVersionNumber::fromString(settings.value(QStringLiteral("v")).toString());
|
||||
settings.beginGroup(QStringLiteral("tray"));
|
||||
const int connectionCount = settings.beginReadArray(QStringLiteral("connections"));
|
||||
auto &primaryConnectionSettings = v.connection.primary;
|
||||
|
@ -303,6 +305,10 @@ void restore()
|
|||
if (statusComputionFlags.canConvert<UnderlyingFlagType>()) {
|
||||
connectionSettings->statusComputionFlags
|
||||
= static_cast<Data::SyncthingStatusComputionFlags>(statusComputionFlags.value<UnderlyingFlagType>());
|
||||
if (version < QVersionNumber(1, 2)) {
|
||||
connectionSettings->statusComputionFlags
|
||||
+= Data::SyncthingStatusComputionFlags::OutOfSync | Data::SyncthingStatusComputionFlags::UnreadNotifications;
|
||||
}
|
||||
}
|
||||
connectionSettings->httpsCertPath = settings.value(QStringLiteral("httpsCertPath")).toString();
|
||||
if (!connectionSettings->loadHttpsCert()) {
|
||||
|
@ -401,6 +407,7 @@ void save()
|
|||
|
||||
const Settings &v = values();
|
||||
|
||||
settings.setValue(QStringLiteral("v"), QStringLiteral(APP_VERSION));
|
||||
settings.beginGroup(QStringLiteral("tray"));
|
||||
const auto &primaryConnectionSettings = v.connection.primary;
|
||||
const auto &secondaryConnectionSettings = v.connection.secondary;
|
||||
|
|
Loading…
Reference in New Issue