-SystemTray::SystemTray(QObject *parent)
-: QObject(parent),
- _mode(Invalid),
- _state(Passive),
- _inhibitActivation(false),
- _passiveIcon(DesktopIcon("quassel_inactive")),
- _activeIcon(DesktopIcon("quassel")),
- _needsAttentionIcon(DesktopIcon("quassel_message")),
- _trayMenu(0)
+#ifdef HAVE_KDE4
+# include <KMenu>
+# include <KWindowInfo>
+# include <KWindowSystem>
+#endif
+
+SystemTray::SystemTray(QWidget *parent)
+ : QObject(parent),
+ _associatedWidget(parent)
+{
+ Q_ASSERT(parent);
+
+ NotificationSettings{}.initAndNotify("Systray/Animate", this, SLOT(enableAnimationChanged(QVariant)), true);
+ UiStyleSettings{}.initAndNotify("Icons/InvertTray", this, SLOT(invertTrayIconChanged(QVariant)), false);
+
+ ActionCollection *coll = QtUi::actionCollection("General");
+ _minimizeRestoreAction = new Action(tr("&Minimize"), this, this, SLOT(minimizeRestore()));
+
+#ifdef HAVE_KDE4
+ KMenu *kmenu;
+ _trayMenu = kmenu = new KMenu();
+ kmenu->addTitle(_activeIcon, "Quassel IRC");
+#else
+ _trayMenu = new QMenu(associatedWidget());
+#endif
+
+ _trayMenu->setTitle("Quassel IRC");
+
+#ifndef HAVE_KDE4
+ _trayMenu->setAttribute(Qt::WA_Hover);
+#endif
+
+ _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, SIGNAL(aboutToShow()), SLOT(trayMenuAboutToShow()));
+}
+
+
+SystemTray::~SystemTray()