+void MainWin::previousBuffer()
+{
+ BufferView *view = activeBufferView();
+ if (view)
+ view->previousBuffer();
+}
+
+
+void MainWin::hideCurrentBuffer()
+{
+ BufferView *view = activeBufferView();
+ if (view)
+ view->hideCurrentBuffer();
+}
+
+
+void MainWin::showNotificationsDlg()
+{
+ SettingsPageDlg{new NotificationsSettingsPage{}}.exec();
+}
+
+
+void MainWin::on_actionConfigureNetworks_triggered()
+{
+ SettingsPageDlg{new NetworksSettingsPage{}}.exec();
+}
+
+
+void MainWin::on_actionConfigureViews_triggered()
+{
+ SettingsPageDlg{new BufferViewSettingsPage{}}.exec();
+}
+
+
+void MainWin::on_actionLockLayout_toggled(bool lock)
+{
+ QList<VerticalDock *> docks = findChildren<VerticalDock *>();
+ foreach(VerticalDock *dock, docks) {
+ dock->showTitle(!lock);
+ }
+
+ QList<NickListDock *> nickdocks = findChildren<NickListDock *>();
+ foreach(NickListDock *nickdock, nickdocks) {
+ nickdock->setLocked(lock);
+ }
+
+ QList<BufferViewDock *> bufferdocks = findChildren<BufferViewDock *>();
+ foreach(BufferViewDock *bufferdock, bufferdocks) {
+ bufferdock->setLocked(lock);
+ }
+
+ if (Client::bufferViewManager()) {
+ foreach(ClientBufferViewConfig *config, Client::bufferViewManager()->clientBufferViewConfigs()) {
+ config->setLocked(lock);
+ }
+ }
+
+ _mainToolBar->setMovable(!lock);
+ _nickToolBar->setMovable(!lock);
+
+ QtUiSettings().setValue("LockLayout", lock);
+}
+
+
+void MainWin::setupNickWidget()
+{
+ // create nick dock
+ NickListDock *nickDock = new NickListDock(tr("Nicks"), this);
+ nickDock->setObjectName("NickDock");
+ nickDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+ nickDock->setLocked(QtUiSettings().value("LockLayout", false).toBool());
+
+ _nickListWidget = new NickListWidget(nickDock);
+ nickDock->setWidget(_nickListWidget);
+
+ addDockWidget(Qt::RightDockWidgetArea, nickDock);
+ _viewMenu->addAction(nickDock->toggleViewAction());
+ nickDock->toggleViewAction()->setText(tr("Show Nick List"));
+
+ // See NickListDock::NickListDock();
+ // connect(nickDock->toggleViewAction(), SIGNAL(triggered(bool)), nickListWidget, SLOT(showWidget(bool)));
+
+ // attach the NickListWidget to the BufferModel and the default selection
+ _nickListWidget->setModel(Client::bufferModel());
+ _nickListWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+
+ _nickListWidget->setVisible(false);
+}
+
+
+void MainWin::setupChatMonitor()
+{
+ VerticalDock *dock = new VerticalDock(tr("Chat Monitor"), this);
+ dock->setObjectName("ChatMonitorDock");
+
+ ChatMonitorFilter *filter = new ChatMonitorFilter(Client::messageModel(), this);
+ _chatMonitorView = new ChatMonitorView(filter, this);
+ _chatMonitorView->show();
+ dock->setWidget(_chatMonitorView);
+ dock->hide();
+
+ 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());
+
+ _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 = 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::setupTransferWidget()
+{
+ auto dock = new QDockWidget(tr("Transfers"), this);
+ dock->setObjectName("TransferDock");
+ dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
+
+ auto view = new QTableView(dock); // to be replaced by the real thing
+ view->setModel(Client::transferModel());
+ dock->setWidget(view);
+ dock->hide(); // hidden by default
+ addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
+
+ auto action = dock->toggleViewAction();
+ action->setText(tr("Show File Transfers"));
+ action->setIcon(icon::get("download"));
+ action->setShortcut(QKeySequence(Qt::Key_F6));
+ QtUi::actionCollection("General")->addAction("ShowTransferWidget", action);
+ _viewMenu->addAction(action);
+}
+
+
+void MainWin::setupViewMenuTail()
+{
+ _viewMenu->addSeparator();
+ _viewMenu->addAction(_fullScreenAction);
+}
+
+
+void MainWin::setupTitleSetter()
+{
+ _titleSetter.setModel(Client::bufferModel());
+ _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel());
+}
+
+
+void MainWin::setupStatusBar()
+{
+ // MessageProcessor progress
+ statusBar()->addPermanentWidget(_msgProcessorStatusWidget);
+
+ // Connection state
+ _coreConnectionStatusWidget->update();
+ statusBar()->addPermanentWidget(_coreConnectionStatusWidget);
+
+ 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)));
+
+ connect(Client::coreConnection(), SIGNAL(connectionMsg(QString)), statusBar(), SLOT(showMessage(QString)));
+}
+