+ addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
+ _viewMenu->addAction(dock->toggleViewAction());
+ dock->toggleViewAction()->setText(tr("Show Chat Monitor"));
+}
+
+void MainWin::setupInputWidget() {
+ VerticalDock *dock = new VerticalDock(tr("Inputline"), this);
+ dock->setObjectName("InputDock");
+
+ _inputWidget = new InputWidget(dock);
+ dock->setWidget(_inputWidget);
+
+ addDockWidget(Qt::BottomDockWidgetArea, dock);
+
+ _viewMenu->addAction(dock->toggleViewAction());
+ dock->toggleViewAction()->setText(tr("Show Input Line"));
+
+ _inputWidget->setModel(Client::bufferModel());
+ _inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+
+ _bufferWidget->setFocusProxy(_inputWidget);
+
+ _inputWidget->inputLine()->installEventFilter(_bufferWidget);
+}
+
+void MainWin::setupTopicWidget() {
+ VerticalDock *dock = new VerticalDock(tr("Topic"), this);
+ dock->setObjectName("TopicDock");
+ TopicWidget *topicwidget = new TopicWidget(dock);
+
+ dock->setWidget(topicwidget);
+
+ topicwidget->setModel(Client::bufferModel());
+ topicwidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+
+ addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
+
+ _viewMenu->addAction(dock->toggleViewAction());
+ dock->toggleViewAction()->setText(tr("Show Topic Line"));
+}
+
+void MainWin::setupTitleSetter() {
+ _titleSetter.setModel(Client::bufferModel());
+ _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel());
+}
+
+void MainWin::setupStatusBar() {
+ // MessageProcessor progress
+ statusBar()->addPermanentWidget(msgProcessorStatusWidget);
+
+ // Core Lag:
+ updateLagIndicator();
+ statusBar()->addPermanentWidget(coreLagLabel);
+ coreLagLabel->hide();
+ connect(Client::signalProxy(), SIGNAL(lagUpdated(int)), this, SLOT(updateLagIndicator(int)));
+
+ // SSL indicator
+ sslLabel->setPixmap(QPixmap());
+ statusBar()->addPermanentWidget(sslLabel);
+ sslLabel->hide();
+
+ _viewMenu->addSeparator();
+ QAction *showStatusbar = QtUi::actionCollection("General")->action("ToggleStatusBar");
+
+ QtUiSettings uiSettings;
+
+ bool enabled = uiSettings.value("ShowStatusBar", QVariant(true)).toBool();
+ showStatusbar->setChecked(enabled);
+ enabled ? statusBar()->show() : statusBar()->hide();
+
+ connect(showStatusbar, SIGNAL(toggled(bool)), statusBar(), SLOT(setVisible(bool)));
+ connect(showStatusbar, SIGNAL(toggled(bool)), this, SLOT(saveStatusBarStatus(bool)));
+}
+
+void MainWin::saveStatusBarStatus(bool enabled) {
+ QtUiSettings uiSettings;
+ uiSettings.setValue("ShowStatusBar", enabled);
+}
+
+void MainWin::setupSystray() {
+ connect(Client::messageModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
+ SLOT(messagesInserted(const QModelIndex &, int, int)));
+
+ ActionCollection *coll = QtUi::actionCollection("General");
+ systrayMenu = new QMenu(this);
+ systrayMenu->addAction(coll->action("ConnectCore"));
+ systrayMenu->addAction(coll->action("DisconnectCore"));
+ systrayMenu->addAction(coll->action("CoreInfo"));
+ systrayMenu->addSeparator();
+ systrayMenu->addAction(coll->action("Quit"));
+
+ systemTrayIcon()->setContextMenu(systrayMenu);
+
+ QtUiSettings s;
+ if(s.value("UseSystemTrayIcon", QVariant(true)).toBool()) {
+ systemTrayIcon()->show();
+ }
+
+#ifndef Q_WS_MAC
+ connect(systemTrayIcon(), 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()) {
+ hideToTray();
+ event->accept();
+ }
+ }
+ }