syncthingtray/tray/gui/trayicon.h

62 lines
1.4 KiB
C
Raw Normal View History

2016-08-30 20:01:07 +02:00
#ifndef TRAY_ICON_H
#define TRAY_ICON_H
#include "./traymenu.h"
#include <c++utilities/chrono/datetime.h>
2016-08-30 20:01:07 +02:00
2016-12-11 17:58:58 +01:00
#ifdef QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS
# include <qtutilities/misc/dbusnotification.h>
#endif
2016-08-30 20:01:07 +02:00
#include <QSystemTrayIcon>
#include <QIcon>
QT_FORWARD_DECLARE_CLASS(QPixmap)
namespace Data {
enum class SyncthingStatus;
enum class SyncthingErrorCategory;
2016-08-30 20:01:07 +02:00
}
namespace QtGui {
class TrayIcon : public QSystemTrayIcon
{
Q_OBJECT
public:
TrayIcon(QObject *parent = nullptr);
2016-09-01 16:34:30 +02:00
TrayMenu &trayMenu();
2016-08-30 20:01:07 +02:00
public slots:
void showInternalError(const QString &errorMsg, Data::SyncthingErrorCategory category, int networkError);
void showSyncthingNotification(ChronoUtilities::DateTime when, const QString &message);
2016-08-30 20:01:07 +02:00
void updateStatusIconAndText(Data::SyncthingStatus status);
private slots:
void handleActivated(QSystemTrayIcon::ActivationReason reason);
2016-12-11 17:58:58 +01:00
void handleSyncthingNotificationAction(const QString &action);
2016-08-30 20:01:07 +02:00
private:
bool m_initialized;
2016-08-30 20:01:07 +02:00
TrayMenu m_trayMenu;
QMenu m_contextMenu;
Data::SyncthingStatus m_status;
2016-12-11 17:58:58 +01:00
#ifdef QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS
MiscUtils::DBusNotification m_disconnectedNotification;
MiscUtils::DBusNotification m_internalErrorNotification;
MiscUtils::DBusNotification m_syncthingNotification;
MiscUtils::DBusNotification m_syncCompleteNotification;
#endif
2016-08-30 20:01:07 +02:00
};
2016-09-01 16:34:30 +02:00
inline TrayMenu &TrayIcon::trayMenu()
{
return m_trayMenu;
}
2016-08-30 20:01:07 +02:00
}
#endif // TRAY_ICON_H