+ InputWidget *inputWidget = new InputWidget(dock);
+ dock->setWidget(inputWidget);
+
+ addDockWidget(Qt::BottomDockWidgetArea, dock);
+
+ ui.menuViews->addAction(dock->toggleViewAction());
+
+ inputWidget->setModel(Client::bufferModel());
+ inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+
+ ui.bufferWidget->setFocusProxy(inputWidget);
+}
+
+void MainWin::setupTopicWidget() {
+ VerticalDock *dock = new VerticalDock(tr("Topic"), this);
+ dock->setObjectName("TopicDock");
+ TopicWidget *topicwidget = new TopicWidget(dock);
+ connect(topicwidget, SIGNAL(topicChanged(const QString &)), this, SLOT(changeTopic(const QString &)));
+
+ dock->setWidget(topicwidget);
+
+ Client::bufferModel()->mapProperty(1, Qt::DisplayRole, topicwidget, "topic");
+
+ addDockWidget(Qt::TopDockWidgetArea, dock);
+
+ ui.menuViews->addAction(dock->toggleViewAction());
+}
+
+void MainWin::setupSystray() {
+ systray = new QSystemTrayIcon(this);
+ systray->setIcon(QIcon(":/icons/quassel-icon.png"));
+// systray->setToolTip("left click to minimize the quassel client to tray");
+// systray->setToolTip(toolTip);
+
+ systrayMenu = new QMenu(this);
+ systrayMenu->addAction(ui.actionAboutQuassel);
+ systrayMenu->addSeparator();
+ systrayMenu->addAction(ui.actionConnectCore);
+ systrayMenu->addAction(ui.actionDisconnectCore);
+ systrayMenu->addSeparator();
+ systrayMenu->addAction(ui.actionQuit);
+
+ systray->setContextMenu(systrayMenu);
+
+ QtUiSettings s;
+ if(s.value("UseSystemTrayIcon").toBool()) {
+ systray->show();
+ }
+
+ #ifndef Q_WS_MAC
+ connect(systray, SIGNAL(activated( QSystemTrayIcon::ActivationReason )),
+ this, SLOT(systrayActivated( QSystemTrayIcon::ActivationReason )));
+ #endif
+
+}
+
+void MainWin::changeEvent(QEvent *event) {
+ if(event->type() == QEvent::WindowStateChange) {
+ if(windowState() & Qt::WindowMinimized) {
+ QtUiSettings s;
+ if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnMinimize").toBool()) {
+ toggleVisibility();
+ event->ignore();
+ }
+ }
+ }
+}
+
+// FIXME this should be made prettier...
+void MainWin::changeTopic(const QString &topic) {
+ BufferId id = ui.bufferWidget->currentBuffer();
+ if(!id.isValid()) return;
+ Buffer *buffer = Client::buffer(id);
+ if(buffer) Client::userInput(buffer->bufferInfo(), QString("/topic %1").arg(topic));