-: QObject(parent),
- _mode(Invalid),
- _state(Passive),
- _shouldBeVisible(true),
- _passiveIcon(DesktopIcon("quassel_inactive")),
- _activeIcon(DesktopIcon("quassel")),
- _needsAttentionIcon(DesktopIcon("quassel_message")),
- _trayMenu(0),
- _associatedWidget(parent)
+ : QObject(parent),
+ _associatedWidget(parent)
+{
+ Q_ASSERT(parent);
+
+ NotificationSettings{}.initAndNotify("Systray/ChangeColor", this, SLOT(enableChangeColorChanged(QVariant)), true);
+ NotificationSettings{}.initAndNotify("Systray/Animate", this, SLOT(enableBlinkChanged(QVariant)), false);
+ UiStyleSettings{}.initAndNotify("Icons/InvertTray", this, SLOT(invertTrayIconChanged(QVariant)), false);
+
+ ActionCollection *coll = QtUi::actionCollection("General");
+ _minimizeRestoreAction = new Action(tr("&Minimize"), this, this, &SystemTray::minimizeRestore);
+
+ _trayMenu = new QMenu(associatedWidget());
+ _trayMenu->setTitle("Quassel IRC");
+ _trayMenu->setAttribute(Qt::WA_Hover);
+
+ _trayMenu->addAction(coll->action("ConnectCore"));
+ _trayMenu->addAction(coll->action("DisconnectCore"));
+ _trayMenu->addAction(coll->action("CoreInfo"));
+ _trayMenu->addSeparator();
+ _trayMenu->addAction(_minimizeRestoreAction);
+ _trayMenu->addAction(coll->action("Quit"));
+ connect(_trayMenu, &QMenu::aboutToShow, this, &SystemTray::trayMenuAboutToShow);
+
+ connect(QtUi::instance(), &QtUi::iconThemeRefreshed, this, &SystemTray::iconsChanged);
+
+ _blinkTimer.setInterval(1000);
+ _blinkTimer.setSingleShot(false);
+ connect(&_blinkTimer, &QTimer::timeout, this, &SystemTray::onBlinkTimeout);
+}
+
+
+SystemTray::~SystemTray()
+{
+ _trayMenu->deleteLater();
+}
+
+
+QWidget *SystemTray::associatedWidget() const
+{
+ return _associatedWidget;
+}
+
+
+bool SystemTray::isSystemTrayAvailable() const
+{
+ return false;
+}
+
+
+bool SystemTray::isVisible() const