plasmoid: Allow showing new notifications via button

This commit is contained in:
Martchus 2017-10-01 21:42:26 +02:00
parent eb3b74eec1
commit 616bcdc497
6 changed files with 102 additions and 60 deletions

View File

@ -170,6 +170,11 @@ bool SyncthingApplet::isStartStopForServiceEnabled() const
return Settings::values().systemd.showButton;
}
bool SyncthingApplet::areNotificationsAvailable() const
{
return !m_notifications.empty();
}
void SyncthingApplet::showSettingsDlg()
{
if (!m_settingsDlg) {
@ -245,13 +250,16 @@ void SyncthingApplet::showNotificationsDialog()
dlg->setAttribute(Qt::WA_DeleteOnClose, true);
centerWidget(dlg);
dlg->show();
m_notifications.clear();
dismissNotifications();
}
void SyncthingApplet::dismissNotifications()
{
m_connection.considerAllNotificationsRead();
if (!m_notifications.empty()) {
m_notifications.clear();
emit notificationsAvailableChanged(false);
}
}
void SyncthingApplet::showInternalErrorsDialog()
@ -385,6 +393,9 @@ void SyncthingApplet::handleNewNotification(DateTime when, const QString &msg)
if (Settings::values().notifyOn.syncthingErrors) {
m_dbusNotifier.showSyncthingNotification(when, msg);
}
if (m_notifications.size() == 1) {
emit notificationsAvailableChanged(true);
}
}
void SyncthingApplet::handleSystemdServiceError(const QString &context, const QString &name, const QString &message)

View File

@ -56,6 +56,7 @@ class SyncthingApplet : public Plasma::Applet {
currentConnectionConfigIndexChanged)
Q_PROPERTY(bool startStopForServiceEnabled READ isStartStopForServiceEnabled NOTIFY settingsChanged)
Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY sizeChanged)
Q_PROPERTY(bool notificationsAvailable READ areNotificationsAvailable NOTIFY notificationsAvailableChanged)
public:
SyncthingApplet(QObject *parent, const QVariantList &data);
@ -82,6 +83,7 @@ public:
bool isStartStopForServiceEnabled() const;
QSize size() const;
void setSize(const QSize &size);
bool areNotificationsAvailable() const;
public Q_SLOTS:
void init() Q_DECL_OVERRIDE;
@ -113,6 +115,7 @@ Q_SIGNALS:
void settingsChanged();
void currentConnectionConfigIndexChanged(int index);
void sizeChanged(const QSize &size);
void notificationsAvailableChanged(bool notificationsAvailable);
private Q_SLOTS:
void handleSettingsChanged();

View File

@ -317,6 +317,24 @@ ColumnLayout {
Item {
Layout.fillWidth: true
}
TinyButton {
id: showNewNotifications
tooltip: qsTr("Show new notifications")
iconSource: "emblem-warning"
visible: plasmoid.nativeInterface.notificationsAvailable
onClicked: {
plasmoid.nativeInterface.showNotificationsDialog()
plasmoid.expanded = false
}
Shortcut {
sequence: "Ctrl+N"
onActivated: {
if (showNewNotifications.visible) {
showNewNotifications.clicked()
}
}
}
}
TinyButton {
id: showOwnIdButton
tooltip: qsTr("Show own device ID")

View File

@ -12,12 +12,12 @@
<context>
<name>DevicesPage</name>
<message>
<location filename="../package/contents/ui/DevicesPage.qml" line="58"/>
<location filename="../package/contents/ui/DevicesPage.qml" line="60"/>
<source>Resume</source>
<translation>Fortsetzen</translation>
</message>
<message>
<location filename="../package/contents/ui/DevicesPage.qml" line="58"/>
<location filename="../package/contents/ui/DevicesPage.qml" line="60"/>
<source>Pause</source>
<translation>Pausieren</translation>
</message>
@ -25,27 +25,27 @@
<context>
<name>DirectoriesPage</name>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="74"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="75"/>
<source>Show errors</source>
<translation>Zeige Fehler</translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="87"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="88"/>
<source>Rescan</source>
<translation>Scannen</translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="95"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="96"/>
<source>Resume</source>
<translation>Fortsetzen</translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="95"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="96"/>
<source>Pause</source>
<translation>Pausieren</translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="105"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="106"/>
<source>Open in file browser</source>
<translation>Im Dateibrowser öffnen</translation>
</message>
@ -53,8 +53,8 @@
<context>
<name>DownloadsPage</name>
<message>
<location filename="../package/contents/ui/DownloadsPage.qml" line="62"/>
<location filename="../package/contents/ui/DownloadsPage.qml" line="119"/>
<location filename="../package/contents/ui/DownloadsPage.qml" line="64"/>
<location filename="../package/contents/ui/DownloadsPage.qml" line="120"/>
<source>Open in file browser</source>
<translation>Im Dateibrowser öffnen</translation>
</message>
@ -88,36 +88,41 @@
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="322"/>
<source>Show new notifications</source>
<translation>Neue Benachrichtigungen anzeigen</translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="340"/>
<source>Show own device ID</source>
<translation>Eigene Geräte-ID anzeigen</translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="335"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="353"/>
<source>Show Syncthing log</source>
<translation>Syncthing-Log anzeigen</translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="348"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="366"/>
<source>Rescan all directories</source>
<translation>Alle Verzeichnisse neu scannen</translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="358"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="376"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="371"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="389"/>
<source>Web UI</source>
<translation>Weboberfläche</translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="408"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="426"/>
<source>In</source>
<translation></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="411"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="429"/>
<source>Out</source>
<translation></translation>
</message>
@ -199,29 +204,29 @@
<context>
<name>Plasmoid::SyncthingApplet</name>
<message>
<location filename="../lib/syncthingapplet.cpp" line="232"/>
<location filename="../lib/syncthingapplet.cpp" line="237"/>
<source>About</source>
<translation>Über Syncthing Plasmoid</translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="244"/>
<location filename="../lib/syncthingapplet.cpp" line="249"/>
<source>New notifications</source>
<translation>Neue Benachrichtigungen</translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="339"/>
<location filename="../lib/syncthingapplet.cpp" line="347"/>
<source>Synchronization of %1 complete</source>
<translation>%1 wurde synchronisiert</translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="346"/>
<location filename="../lib/syncthingapplet.cpp" line="354"/>
<source>Synchronization of the following devices complete:
</source>
<translation>Die folgenden Geräte wurden synchronisiert:
</translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="392"/>
<location filename="../lib/syncthingapplet.cpp" line="403"/>
<source>D-Bus error - unable to </source>
<translation type="unfinished"></translation>
</message>

View File

@ -12,12 +12,12 @@
<context>
<name>DevicesPage</name>
<message>
<location filename="../package/contents/ui/DevicesPage.qml" line="58"/>
<location filename="../package/contents/ui/DevicesPage.qml" line="60"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/DevicesPage.qml" line="58"/>
<location filename="../package/contents/ui/DevicesPage.qml" line="60"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
@ -25,27 +25,27 @@
<context>
<name>DirectoriesPage</name>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="74"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="75"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="87"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="88"/>
<source>Rescan</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="95"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="96"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="95"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="96"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="105"/>
<location filename="../package/contents/ui/DirectoriesPage.qml" line="106"/>
<source>Open in file browser</source>
<translation type="unfinished"></translation>
</message>
@ -53,8 +53,8 @@
<context>
<name>DownloadsPage</name>
<message>
<location filename="../package/contents/ui/DownloadsPage.qml" line="62"/>
<location filename="../package/contents/ui/DownloadsPage.qml" line="119"/>
<location filename="../package/contents/ui/DownloadsPage.qml" line="64"/>
<location filename="../package/contents/ui/DownloadsPage.qml" line="120"/>
<source>Open in file browser</source>
<translation type="unfinished"></translation>
</message>
@ -88,36 +88,41 @@
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="322"/>
<source>Show new notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="340"/>
<source>Show own device ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="335"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="353"/>
<source>Show Syncthing log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="348"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="366"/>
<source>Rescan all directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="358"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="376"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="371"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="389"/>
<source>Web UI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="408"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="426"/>
<source>In</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../package/contents/ui/FullRepresentation.qml" line="411"/>
<location filename="../package/contents/ui/FullRepresentation.qml" line="429"/>
<source>Out</source>
<translation type="unfinished"></translation>
</message>
@ -199,28 +204,28 @@
<context>
<name>Plasmoid::SyncthingApplet</name>
<message>
<location filename="../lib/syncthingapplet.cpp" line="232"/>
<location filename="../lib/syncthingapplet.cpp" line="237"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="244"/>
<location filename="../lib/syncthingapplet.cpp" line="249"/>
<source>New notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="339"/>
<location filename="../lib/syncthingapplet.cpp" line="347"/>
<source>Synchronization of %1 complete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="346"/>
<location filename="../lib/syncthingapplet.cpp" line="354"/>
<source>Synchronization of the following devices complete:
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lib/syncthingapplet.cpp" line="392"/>
<location filename="../lib/syncthingapplet.cpp" line="403"/>
<source>D-Bus error - unable to </source>
<translation type="unfinished"></translation>
</message>

View File

@ -164,6 +164,11 @@
<source>Move currently selected configuration down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings/connectionoptionpage.ui" line="91"/>
<source>Move currently selected configuration up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings/connectionoptionpage.ui" line="107"/>
<source>Add secondary instance</source>
@ -174,11 +179,6 @@
<source>Remove currently selected secondary instance</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings/connectionoptionpage.ui" line="91"/>
<source>Move currently selected configuration up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings/connectionoptionpage.ui" line="154"/>
<source>It is possible to save multiple configurations. This allows switching quickly between multiple Syncthing instances using the connection button in the right corner of the tray menu. The config label is an arbitrary name to identify a configuration and does not have to match the name of the corresponding Syncthing device. The first configuration is the primary/default configuration.</source>
@ -353,19 +353,19 @@
<source>Response:</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../misc/errorviewdialog.cpp" line="101"/>
<source>%1 error(s) occured</source>
<translation>
<numerusform>%1 error occured</numerusform>
<numerusform>%1 errors occured</numerusform>
</translation>
</message>
<message>
<location filename="../misc/errorviewdialog.cpp" line="53"/>
<source>Clear errors</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../misc/errorviewdialog.cpp" line="101"/>
<source>%1 error(s) occured</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
</context>
<context>
<name>QtGui::LauncherOptionPage</name>
@ -626,9 +626,9 @@
<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 type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
@ -726,9 +726,9 @@
<message numerus="yes">
<location filename="../misc/textviewdialog.cpp" line="90"/>
<source>%1 item(s) out-of-sync</source>
<translation>
<numerusform>%1 item out of sync</numerusform>
<numerusform>%1 items out of sync</numerusform>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>