syncthingtray/tray/gui/trayicon.h

59 lines
1.2 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
#include <QSystemTrayIcon>
#include <QIcon>
QT_FORWARD_DECLARE_CLASS(QPixmap)
namespace Data {
enum class SyncthingStatus;
}
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
private slots:
void handleActivated(QSystemTrayIcon::ActivationReason reason);
void handleMessageClicked();
2016-09-01 16:34:30 +02:00
void showInternalError(const QString &errorMsg);
void showSyncthingNotification(ChronoUtilities::DateTime when, const QString &message);
2016-08-30 20:01:07 +02:00
void updateStatusIconAndText(Data::SyncthingStatus status);
private:
QPixmap renderSvgImage(const QString &path);
const QSize m_size;
const QIcon m_statusIconDisconnected;
2016-09-03 19:39:43 +02:00
const QIcon m_statusIconIdling;
const QIcon m_statusIconScanning;
2016-08-30 20:01:07 +02:00
const QIcon m_statusIconNotify;
const QIcon m_statusIconPause;
const QIcon m_statusIconSync;
const QIcon m_statusIconError;
const QIcon m_statusIconErrorSync;
2016-08-30 20:01:07 +02:00
TrayMenu m_trayMenu;
QMenu m_contextMenu;
Data::SyncthingStatus m_status;
};
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