SystemTray refactoring in preparation of supporting StatusNotifier
[quassel.git] / src / qtui / mainwin.cpp
index 32b59ab..d943bfa 100644 (file)
@@ -70,6 +70,7 @@
 #include "irclistmodel.h"
 #include "ircconnectionwizard.h"
 #include "jumpkeyhandler.h"
+#include "legacysystemtray.h"
 #include "msgprocessorstatuswidget.h"
 #include "nicklistwidget.h"
 #include "qtuiapplication.h"
@@ -78,7 +79,6 @@
 #include "qtuistyle.h"
 #include "settingsdlg.h"
 #include "settingspagedlg.h"
-#include "systemtray.h"
 #include "toolbaractionprovider.h"
 #include "topicwidget.h"
 #include "verticaldock.h"
@@ -279,13 +279,9 @@ void MainWin::restoreStateFromSettings(UiSettings &s) {
   move(_normalPos);
 #endif
 
-#ifndef QT_NO_SYSTEMTRAYICON
-  if(s.value("MainWinHidden").toBool()) {
+  if(s.value("MainWinHidden").toBool())
     hideToTray();
-    return;
-  }
-#endif
-  if(s.value("MainWinMinimized").toBool())
+  else if(s.value("MainWinMinimized").toBool())
     showMinimized();
   else if(maximized)
     showMaximized();
@@ -620,17 +616,19 @@ void MainWin::setupInputWidget() {
   _bufferWidget->setFocusProxy(_inputWidget);
 
   _inputWidget->inputLine()->installEventFilter(_bufferWidget);
+
+  connect(_topicWidget, SIGNAL(switchedPlain()), _bufferWidget, SLOT(setFocus()));
 }
 
 void MainWin::setupTopicWidget() {
   VerticalDock *dock = new VerticalDock(tr("Topic"), this);
   dock->setObjectName("TopicDock");
-  TopicWidget *topicwidget = new TopicWidget(dock);
+  _topicWidget = new TopicWidget(dock);
 
-  dock->setWidget(topicwidget);
+  dock->setWidget(_topicWidget);
 
-  topicwidget->setModel(Client::bufferModel());
-  topicwidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+  _topicWidget->setModel(Client::bufferModel());
+  _topicWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
 
   addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
 
@@ -683,8 +681,11 @@ void MainWin::saveStatusBarStatus(bool enabled) {
 
 void MainWin::setupSystray() {
 #ifndef QT_NO_SYSTEMTRAYICON
-  _systemTray = new SystemTray(this);
+  _systemTray = new LegacySystemTray(this);
+#else
+  _systemTray = new SystemTray(this); // dummy
 #endif
+  _systemTray->init();
 }
 
 void MainWin::setupToolBars() {
@@ -816,9 +817,7 @@ void MainWin::setDisconnectedState() {
   if(_msgProcessorStatusWidget)
     _msgProcessorStatusWidget->setProgress(0, 0);
   updateIcon();
-#ifndef QT_NO_SYSTEMTRAYICON
-  systemTray()->setState(SystemTray::Inactive);
-#endif
+  systemTray()->setState(SystemTray::Passive);
 }
 
 void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage) {
@@ -1038,15 +1037,13 @@ void MainWin::changeEvent(QEvent *event) {
   QMainWindow::changeEvent(event);
 }
 
-#ifndef QT_NO_SYSTEMTRAYICON
-
 void MainWin::hideToTray() {
   if(!systemTray()->isSystemTrayAvailable()) {
     qWarning() << Q_FUNC_INFO << "was called with no SystemTray available!";
     return;
   }
   hide();
-  systemTray()->setIconVisible();
+  systemTray()->setVisible();
 }
 
 void MainWin::toggleMinimizedToTray() {
@@ -1072,8 +1069,6 @@ void MainWin::toggleMinimizedToTray() {
 #endif
 }
 
-#endif /* QT_NO_SYSTEMTRAYICON */
-
 void MainWin::forceActivated() {
 #ifdef HAVE_KDE
   show();