+ // restore mainwin state
+ restoreState(s.value("MainWinState").toByteArray());
+
+ 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());
+
+}
+
+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.actionNetworkList, SIGNAL(triggered()), this, SLOT(showServerList()));
+ 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()));
+
+ actionEditNetworks = new QAction(QIcon(":/22x22/actions/configure"), tr("Edit &Networks..."), this);
+ ui.menuNetworks->addAction(actionEditNetworks);
+ connect(actionEditNetworks, SIGNAL(triggered()), this, SLOT(showNetworkDlg()));
+ connect(ui.actionManageViews, SIGNAL(triggered()), this, SLOT(showManageViewsDlg()));
+}
+
+void MainWin::setupViews() {
+ QAction *separator = ui.menuViews->addSeparator();
+ separator->setData("__EOBV__");
+ 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();
+
+ Client::bufferModel()->synchronizeView(view);
+
+ dock->setWidget(view);
+ dock->show();
+
+ addDockWidget(Qt::LeftDockWidgetArea, dock);
+
+ QAction *endOfBufferViews = 0;
+ foreach(QAction *action, ui.menuViews->actions()) {
+ if(action->data().toString() == "__EOBV__") {
+ endOfBufferViews = action;
+ break;
+ }
+ }
+ Q_CHECK_PTR(endOfBufferViews);
+ ui.menuViews->insertAction(endOfBufferViews, dock->toggleViewAction());
+
+ _netViews.append(dock);
+}
+
+void MainWin::removeBufferView(int bufferViewConfigId) {
+ QVariant actionData;
+ BufferViewDock *dock;
+ foreach(QAction *action, ui.menuViews->actions()) {
+ actionData = action->data();
+ if(!actionData.isValid())
+ continue;
+
+ if(actionData.toString() == "__EOBV__")
+ break;
+
+ 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::showNetworkDlg() {
+ SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
+ dlg.exec();
+}
+
+void MainWin::showManageViewsDlg() {
+ SettingsPageDlg dlg(new BufferViewSettingsPage(this), this);
+ dlg.exec();
+}
+
+void MainWin::setupNickWidget() {