+ // restore mainwin state
+ restoreState(s.value("MainWinState").toByteArray());
+
+ // restore locked state of docks
+ ui.actionLockDockPositions->setChecked(s.value("LockDocks", false).toBool());
+
+
+ setDisconnectedState(); // Disable menus and stuff
+ showCoreConnectionDlg(true); // autoconnect if appropriate
+
+ // attach the BufferWidget to the BufferModel and the default selection
+ ui.bufferWidget->setModel(Client::bufferModel());
+ ui.bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+
+ _titleSetter.setModel(Client::bufferModel());
+ _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel());
+}
+
+MainWin::~MainWin() {
+ QtUiSettings s;
+ s.setValue("MainWinSize", size());
+ s.setValue("MainWinPos", pos());
+ s.setValue("MainWinState", saveState());
+}
+
+void MainWin::setupMenus() {
+ connect(ui.actionConnectCore, SIGNAL(triggered()), this, SLOT(showCoreConnectionDlg()));
+ connect(ui.actionDisconnectCore, SIGNAL(triggered()), Client::instance(), SLOT(disconnectFromCore()));
+ connect(ui.actionQuit, SIGNAL(triggered()), QCoreApplication::instance(), SLOT(quit()));
+ connect(ui.actionSettingsDlg, SIGNAL(triggered()), this, SLOT(showSettingsDlg()));
+ // connect(ui.actionDebug_Console, SIGNAL(triggered()), this, SLOT(showDebugConsole()));
+ connect(ui.actionAboutQuassel, SIGNAL(triggered()), this, SLOT(showAboutDlg()));
+ connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt()));
+}
+
+void MainWin::setupViews() {
+ addBufferView();
+}
+
+void MainWin::addBufferView(int bufferViewConfigId) {
+ addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewConfigId));
+}
+
+void MainWin::addBufferView(BufferViewConfig *config) {
+ BufferViewDock *dock;
+ if(config)
+ dock = new BufferViewDock(config, this);
+ else
+ dock = new BufferViewDock(this);
+
+ //create the view and initialize it's filter
+ BufferView *view = new BufferView(dock);
+ view->setFilteredModel(Client::bufferModel(), config);
+ view->show();
+
+ connect(&view->showChannelList, SIGNAL(triggered()), this, SLOT(showChannelList()));
+
+ Client::bufferModel()->synchronizeView(view);
+
+ dock->setWidget(view);
+ dock->show();
+
+ addDockWidget(Qt::LeftDockWidgetArea, dock);
+ ui.menuBufferViews->addAction(dock->toggleViewAction());
+
+ _netViews.append(dock);
+}
+
+void MainWin::removeBufferView(int bufferViewConfigId) {
+ QVariant actionData;
+ BufferViewDock *dock;
+ foreach(QAction *action, ui.menuBufferViews->actions()) {
+ actionData = action->data();
+ if(!actionData.isValid())
+ continue;
+
+ dock = qobject_cast<BufferViewDock *>(action->parent());
+ if(dock && actionData.toInt() == bufferViewConfigId) {
+ removeAction(action);
+ dock->deleteLater();
+ }
+ }
+}
+
+void MainWin::setupSettingsDlg() {
+ //Category: Appearance
+ settingsDlg->registerSettingsPage(new ColorSettingsPage(settingsDlg));
+ settingsDlg->registerSettingsPage(new FontsSettingsPage(settingsDlg));
+ settingsDlg->registerSettingsPage(new AppearanceSettingsPage(settingsDlg)); //General
+ //Category: Behaviour
+ settingsDlg->registerSettingsPage(new GeneralSettingsPage(settingsDlg));
+ settingsDlg->registerSettingsPage(new HighlightSettingsPage(settingsDlg));
+ //Category: General
+ settingsDlg->registerSettingsPage(new IdentitiesSettingsPage(settingsDlg));
+ settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg));
+ settingsDlg->registerSettingsPage(new BufferViewSettingsPage(settingsDlg));
+}
+
+void MainWin::on_actionEditNetworks_triggered() {
+ SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
+ dlg.exec();
+}
+
+void MainWin::on_actionManageViews_triggered() {
+ SettingsPageDlg dlg(new BufferViewSettingsPage(this), this);
+ dlg.exec();
+}
+
+void MainWin::on_actionLockDockPositions_toggled(bool lock) {
+ QList<VerticalDock *> docks = findChildren<VerticalDock *>();
+ foreach(VerticalDock *dock, docks) {
+ dock->showTitle(!lock);
+ }
+ QtUiSettings().setValue("LockDocks", lock);
+}
+
+void MainWin::setupNickWidget() {