Show number of connected devs in tool tip

This commit is contained in:
Martchus 2017-05-30 15:06:34 +02:00
parent e92eb389ea
commit b2aab9eb16
8 changed files with 122 additions and 49 deletions

View File

@ -24,6 +24,7 @@ QString statusString(SyncthingDevStatus status);
struct LIB_SYNCTHING_CONNECTOR_EXPORT SyncthingDev {
SyncthingDev(const QString &id = QString(), const QString &name = QString());
QString statusString() const;
bool isConnected() const;
QString id;
QString name;
@ -49,6 +50,18 @@ inline SyncthingDev::SyncthingDev(const QString &id, const QString &name)
{
}
inline bool SyncthingDev::isConnected() const
{
switch (status) {
case SyncthingDevStatus::Unknown:
case SyncthingDevStatus::Disconnected:
case SyncthingDevStatus::OwnDevice:
return false;
default:
return true;
}
}
} // namespace Data
Q_DECLARE_METATYPE(Data::SyncthingDev)

View File

@ -17,6 +17,7 @@
#include <QCoreApplication>
#include <QPainter>
#include <QPixmap>
#include <QStringBuilder>
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
#include <QNetworkReply>
#endif
@ -179,7 +180,11 @@ void TrayIcon::showSyncthingNotification(ChronoUtilities::DateTime when, const Q
void TrayIcon::updateStatusIconAndText()
{
const StatusInfo statusInfo(trayMenu().widget()->connection());
setToolTip(statusInfo.statusText());
if (statusInfo.additionalStatusText().isEmpty()) {
setToolTip(statusInfo.statusText());
} else {
setToolTip(statusInfo.statusText() % QChar('\n') % statusInfo.additionalStatusText());
}
setIcon(statusInfo.statusIcon());
}

View File

@ -459,37 +459,37 @@
<translation type="vanished">Syncthing-Benachrichtigung</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="45"/>
<location filename="../gui/trayicon.cpp" line="46"/>
<source>Web UI</source>
<translation>Weboberfäche</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="49"/>
<location filename="../gui/trayicon.cpp" line="50"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="53"/>
<location filename="../gui/trayicon.cpp" line="54"/>
<source>Rescan all</source>
<translation>Alle neu scannen</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="61"/>
<location filename="../gui/trayicon.cpp" line="62"/>
<source>About</source>
<translation>Über Syncthing Tray</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="66"/>
<location filename="../gui/trayicon.cpp" line="67"/>
<source>Close</source>
<translation>Beenden</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="155"/>
<location filename="../gui/trayicon.cpp" line="157"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="172"/>
<location filename="../gui/trayicon.cpp" line="174"/>
<source>Syncthing notification - click to dismiss</source>
<translation>Neue Syncthing-Benachrichtigung</translation>
</message>
@ -502,12 +502,12 @@
<translation type="vanished">Nicht mit Syncthing verbunden</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="203"/>
<location filename="../gui/trayicon.cpp" line="209"/>
<source>Disconnected from Syncthing</source>
<translation>Verbindung zu Syncthing getrennt</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="57"/>
<location filename="../gui/trayicon.cpp" line="58"/>
<source>Log</source>
<translation></translation>
</message>
@ -556,12 +556,12 @@
<translation type="vanished">Syncthing synchronisiert</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="223"/>
<location filename="../gui/trayicon.cpp" line="229"/>
<source>Synchronization of %1 complete</source>
<translation>%1 wurde synchronisiert</translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="230"/>
<location filename="../gui/trayicon.cpp" line="236"/>
<source>Synchronization of the following devices complete:
</source>
<translation>Folgende Verzeichnisse wurden synchronisiert:

View File

@ -58,57 +58,57 @@
<context>
<name>QtGui::TrayIcon</name>
<message>
<location filename="../gui/trayicon.cpp" line="45"/>
<location filename="../gui/trayicon.cpp" line="46"/>
<source>Web UI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="49"/>
<location filename="../gui/trayicon.cpp" line="50"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="53"/>
<location filename="../gui/trayicon.cpp" line="54"/>
<source>Rescan all</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="57"/>
<location filename="../gui/trayicon.cpp" line="58"/>
<source>Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="61"/>
<location filename="../gui/trayicon.cpp" line="62"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="66"/>
<location filename="../gui/trayicon.cpp" line="67"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="203"/>
<location filename="../gui/trayicon.cpp" line="209"/>
<source>Disconnected from Syncthing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="155"/>
<location filename="../gui/trayicon.cpp" line="157"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="172"/>
<location filename="../gui/trayicon.cpp" line="174"/>
<source>Syncthing notification - click to dismiss</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="223"/>
<location filename="../gui/trayicon.cpp" line="229"/>
<source>Synchronization of %1 complete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="230"/>
<location filename="../gui/trayicon.cpp" line="236"/>
<source>Synchronization of the following devices complete:
</source>
<translation type="unfinished"></translation>

View File

@ -1,6 +1,7 @@
#include "./statusinfo.h"
#include "../../connector/syncthingconnection.h"
#include "../../connector/syncthingdev.h"
#include "../../model/syncthingicons.h"
#include <QCoreApplication>
@ -71,5 +72,26 @@ void StatusInfo::update(const SyncthingConnection &connection)
}
}
}
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();
}
}
}

View File

@ -18,12 +18,14 @@ public:
explicit StatusInfo();
explicit StatusInfo(const Data::SyncthingConnection &connection);
QString statusText() const;
const QString &statusText() const;
const QString &additionalStatusText() const;
const QIcon &statusIcon() const;
void update(const Data::SyncthingConnection &connection);
private:
QString m_statusText;
QString m_additionalStatusText;
const QIcon *m_statusIcon;
};
@ -32,11 +34,16 @@ inline StatusInfo::StatusInfo(const Data::SyncthingConnection &connection)
update(connection);
}
inline QString StatusInfo::statusText() const
inline const QString &StatusInfo::statusText() const
{
return m_statusText;
}
inline const QString &StatusInfo::additionalStatusText() const
{
return m_additionalStatusText;
}
inline const QIcon &StatusInfo::statusIcon() const
{
return *m_statusIcon;

View File

@ -582,65 +582,78 @@
<context>
<name>QtGui::StatusInfo</name>
<message>
<location filename="../misc/statusinfo.cpp" line="14"/>
<location filename="../misc/statusinfo.cpp" line="15"/>
<source>Initializing ...</source>
<translation>Initialisierung ...</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="24"/>
<location filename="../misc/statusinfo.cpp" line="25"/>
<source>Not connected to Syncthing - trying to reconnect every %1 ms</source>
<translation>Nicht mit Syncthing verbunden - versuche alle %1 ms zu verbinden</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="27"/>
<location filename="../misc/statusinfo.cpp" line="28"/>
<source>Not connected to Syncthing</source>
<translation>Nicht mit Syncthing verbunden</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="32"/>
<location filename="../misc/statusinfo.cpp" line="33"/>
<source>Reconnecting ...</source>
<translation>Neu verbinden ...</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="40"/>
<location filename="../misc/statusinfo.cpp" line="41"/>
<source>Synchronization is ongoing but at least one directory is out of sync</source>
<translation>Synchronisiert, aber mind. ein Verzeichnis hat Fehler</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="44"/>
<location filename="../misc/statusinfo.cpp" line="45"/>
<source>At least one directory is out of sync</source>
<translation>Mind. ein Verzeichnis hat Fehler</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="48"/>
<location filename="../misc/statusinfo.cpp" line="49"/>
<source>Notifications available</source>
<translation>Es gibt neue Benachrichtigungen</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="53"/>
<location filename="../misc/statusinfo.cpp" line="54"/>
<source>Syncthing is idling</source>
<translation>Syncthing ist im Leerlauf</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="57"/>
<location filename="../misc/statusinfo.cpp" line="58"/>
<source>Syncthing is scanning</source>
<translation>Syncthing scannt</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="61"/>
<location filename="../misc/statusinfo.cpp" line="62"/>
<source>At least one device is paused</source>
<translation>Mind. ein Gerät ist pausiert</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="65"/>
<location filename="../misc/statusinfo.cpp" line="66"/>
<source>Synchronization is ongoing</source>
<translation>Syncthing synchronisiert</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="69"/>
<location filename="../misc/statusinfo.cpp" line="70"/>
<source>Status is unknown</source>
<translation>Status ist unbekannt</translation>
</message>
<message numerus="yes">
<location filename="../misc/statusinfo.cpp" line="88"/>
<source>Conntected to %1 devices</source>
<translation>
<numerusform>Mit %1 Gerät verbunden</numerusform>
<numerusform>Mit %1 Geräten verbunden</numerusform>
</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="90"/>
<source>Not connected to other devices</source>
<translation>Nicht mit anderen Geräten verbunden</translation>
</message>
</context>
<context>
<name>QtGui::SystemdOptionPage</name>

View File

@ -500,65 +500,78 @@
<context>
<name>QtGui::StatusInfo</name>
<message>
<location filename="../misc/statusinfo.cpp" line="14"/>
<location filename="../misc/statusinfo.cpp" line="15"/>
<source>Initializing ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="24"/>
<location filename="../misc/statusinfo.cpp" line="25"/>
<source>Not connected to Syncthing - trying to reconnect every %1 ms</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="27"/>
<location filename="../misc/statusinfo.cpp" line="28"/>
<source>Not connected to Syncthing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="32"/>
<location filename="../misc/statusinfo.cpp" line="33"/>
<source>Reconnecting ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="40"/>
<location filename="../misc/statusinfo.cpp" line="41"/>
<source>Synchronization is ongoing but at least one directory is out of sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="44"/>
<location filename="../misc/statusinfo.cpp" line="45"/>
<source>At least one directory is out of sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="48"/>
<location filename="../misc/statusinfo.cpp" line="49"/>
<source>Notifications available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="53"/>
<location filename="../misc/statusinfo.cpp" line="54"/>
<source>Syncthing is idling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="57"/>
<location filename="../misc/statusinfo.cpp" line="58"/>
<source>Syncthing is scanning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="61"/>
<location filename="../misc/statusinfo.cpp" line="62"/>
<source>At least one device is paused</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="65"/>
<location filename="../misc/statusinfo.cpp" line="66"/>
<source>Synchronization is ongoing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="69"/>
<location filename="../misc/statusinfo.cpp" line="70"/>
<source>Status is unknown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../misc/statusinfo.cpp" line="88"/>
<source>Conntected to %1 devices</source>
<translation>
<numerusform>Conntected to %1 device</numerusform>
<numerusform>Conntected to %1 devices</numerusform>
</translation>
</message>
<message>
<location filename="../misc/statusinfo.cpp" line="90"/>
<source>Not connected to other devices</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtGui::SystemdOptionPage</name>