+void MainWin::setupMenus() {
+ ActionCollection *coll = QtUi::actionCollection("General");
+
+ _fileMenu = menuBar()->addMenu(tr("&File"));
+ _fileMenu->addAction(coll->action("ConnectCore"));
+ _fileMenu->addAction(coll->action("DisconnectCore"));
+ _fileMenu->addAction(coll->action("CoreInfo"));
+ _fileMenu->addSeparator();
+ _networksMenu = _fileMenu->addMenu(tr("&Networks"));
+ _networksMenu->addAction(coll->action("EditNetworks"));
+ _networksMenu->addSeparator();
+ _fileMenu->addSeparator();
+ _fileMenu->addAction(coll->action("Quit"));
+
+ _viewMenu = menuBar()->addMenu(tr("&View"));
+ _bufferViewsMenu = _viewMenu->addMenu(tr("&Buffer Views"));
+ _bufferViewsMenu->addAction(coll->action("ManageBufferViews"));
+ _viewMenu->addSeparator();
+ _viewMenu->addAction(coll->action("ToggleSearchBar"));
+ _viewMenu->addAction(coll->action("ToggleStatusBar"));
+ _viewMenu->addSeparator();
+ _viewMenu->addAction(coll->action("LockDockPositions"));
+
+ _settingsMenu = menuBar()->addMenu(tr("&Settings"));
+ _settingsMenu->addAction(coll->action("ConfigureQuassel"));
+
+ _helpMenu = menuBar()->addMenu(tr("&Help"));
+ _helpMenu->addAction(coll->action("AboutQuassel"));
+ _helpMenu->addAction(coll->action("AboutQt"));
+ _helpMenu->addSeparator();
+ _helpDebugMenu = _helpMenu->addMenu(SmallIcon("tools-report-bug"), tr("Debug"));
+ _helpDebugMenu->addAction(coll->action("DebugNetworkModel"));
+ _helpDebugMenu->addAction(coll->action("DebugLog"));
+}
+
+void MainWin::setupBufferWidget() {
+ _bufferWidget = new BufferWidget(this);
+ _bufferWidget->setModel(Client::bufferModel());
+ _bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+ setCentralWidget(_bufferWidget);
+}
+
+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);
+ _bufferViewsMenu->addAction(dock->toggleViewAction());
+
+ _netViews.append(dock);
+}
+
+void MainWin::removeBufferView(int bufferViewConfigId) {
+ QVariant actionData;
+ BufferViewDock *dock;
+ foreach(QAction *action, _bufferViewsMenu->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::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() {