syncthingtray/widgets/misc/statusinfo.cpp

98 lines
4.0 KiB
C++
Raw Normal View History

#include "./statusinfo.h"
#include "../../connector/syncthingconnection.h"
#include "../../connector/syncthingdev.h"
#include "../../model/syncthingicons.h"
#include <QCoreApplication>
2017-05-01 03:34:43 +02:00
#include <QIcon>
using namespace Data;
namespace QtGui {
2017-05-01 03:34:43 +02:00
StatusInfo::StatusInfo()
: m_statusText(QCoreApplication::translate("QtGui::StatusInfo", "Initializing ..."))
, m_statusIcon(&statusIcons().disconnected)
{
}
void StatusInfo::update(const SyncthingConnection &connection)
{
2017-05-01 03:34:43 +02:00
switch (connection.status()) {
case SyncthingStatus::Disconnected:
2017-05-01 03:34:43 +02:00
if (connection.autoReconnectInterval() > 0) {
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Not connected to Syncthing - trying to reconnect every %1 ms")
2017-05-01 03:34:43 +02:00
.arg(connection.autoReconnectInterval());
} else {
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Not connected to Syncthing");
}
m_statusIcon = &statusIcons().disconnected;
break;
case SyncthingStatus::Reconnecting:
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Reconnecting ...");
m_statusIcon = &statusIcons().disconnected;
break;
default:
2017-05-01 03:34:43 +02:00
if (connection.hasOutOfSyncDirs()) {
switch (connection.status()) {
case SyncthingStatus::Synchronizing:
2017-05-01 03:34:43 +02:00
m_statusText
= QCoreApplication::translate("QtGui::StatusInfo", "Synchronization is ongoing but at least one directory is out of sync");
m_statusIcon = &statusIcons().errorSync;
break;
default:
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "At least one directory is out of sync");
m_statusIcon = &statusIcons().error;
}
2017-05-01 03:34:43 +02:00
} else if (connection.hasUnreadNotifications()) {
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Notifications available");
m_statusIcon = &statusIcons().notify;
} else {
2017-05-01 03:34:43 +02:00
switch (connection.status()) {
case SyncthingStatus::Idle:
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Syncthing is idling");
m_statusIcon = &statusIcons().idling;
break;
case SyncthingStatus::Scanning:
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Syncthing is scanning");
m_statusIcon = &statusIcons().scanninig;
break;
case SyncthingStatus::Paused:
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "At least one device is paused");
m_statusIcon = &statusIcons().pause;
break;
case SyncthingStatus::Synchronizing:
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Synchronization is ongoing");
m_statusIcon = &statusIcons().sync;
break;
default:
m_statusText = QCoreApplication::translate("QtGui::StatusInfo", "Status is unknown");
m_statusIcon = &statusIcons().disconnected;
}
}
}
size_t connectedDevices = 0;
switch (connection.status()) {
case SyncthingStatus::Idle:
case SyncthingStatus::OutOfSync:
case SyncthingStatus::Scanning:
case SyncthingStatus::Synchronizing:
for (const SyncthingDev &dev : connection.devInfo()) {
if (dev.isConnected()) {
++connectedDevices;
}
}
if (connectedDevices) {
m_additionalStatusText
= QCoreApplication::translate("QtGui::StatusInfo", "Conntected to %1 devices", nullptr, connectedDevices).arg(connectedDevices);
} else {
m_additionalStatusText = QCoreApplication::translate("QtGui::StatusInfo", "Not connected to other devices");
}
break;
default:
m_additionalStatusText.clear();
}
}
} // namespace QtGui