#ifndef TRAYICONBACKEND_H #define TRAYICONBACKEND_H #include #include #include #include #include #include "core/protocols/vpnProtocol.h" class QObject; struct TrayIconVisual { Vpn::ConnectionState connectionState = Vpn::ConnectionState::Unknown; bool darkTheme = false; }; class TrayIconBackend { public: virtual ~TrayIconBackend() = default; virtual void setMenu(QMenu *menu) = 0; virtual void setToolTip(const QString &tooltip) = 0; virtual void show() = 0; virtual void applyVisual(const TrayIconVisual &visual) = 0; virtual void showMessage(const QString &title, const QString &message, const TrayIconVisual &visual, int timerMsec) = 0; virtual void rebuildMenu() = 0; virtual void setActivatedHandler(std::function handler) = 0; }; std::unique_ptr createTrayIconBackend(QObject *parent); #endif // TRAYICONBACKEND_H