you can now lock the positions of the docks (inputline, chat monitor, topic) which...
[quassel.git] / src / qtui / mainwin.cpp
index 925c64f..52699e9 100644 (file)
@@ -25,6 +25,7 @@
 #include "bufferviewconfig.h"
 #include "bufferviewfilter.h"
 #include "bufferviewmanager.h"
+#include "channellistdlg.h"
 #include "client.h"
 #include "clientbacklogmanager.h"
 #include "coreconnectdlg.h"
@@ -36,6 +37,7 @@
 #include "signalproxy.h"
 #include "topicwidget.h"
 #include "inputwidget.h"
+#include "irclistmodel.h"
 #include "verticaldock.h"
 #include "uisettings.h"
 #include "qtuisettings.h"
@@ -72,6 +74,7 @@ MainWin::MainWin(QtUi *_gui, QWidget *parent)
     offlineTrayIcon(":/icons/quassel-icon-offline.png"),
     trayIconActive(false),
     timer(new QTimer(this)),
+    channelListDlg(new ChannelListDlg(this)),
     settingsDlg(new SettingsDlg(this)),
     debugConsole(new DebugConsole(this))
 {
@@ -127,6 +130,12 @@ void MainWin::init() {
   setupTopicWidget();
   setupChatMonitor();
   setupInputWidget();
+
+  QAction *toggleLockDocksAction = ui.menuViews->addAction(tr("Lock dock positions"));
+  toggleLockDocksAction->setCheckable(true);
+  connect(toggleLockDocksAction, SIGNAL(toggled(bool)), this, SLOT(lockVerticalDocks(bool)));
+  toggleLockDocksAction->setChecked(s.value("LockDocks", false).toBool());
+  
   setupStatusBar();
   setupSystray();
 
@@ -159,7 +168,7 @@ void MainWin::setupMenus() {
   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.actionDebug_Console, SIGNAL(triggered()), this, SLOT(showDebugConsole()));
   connect(ui.actionAboutQuassel, SIGNAL(triggered()), this, SLOT(showAboutDlg()));
   connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt()));
 
@@ -191,6 +200,8 @@ void MainWin::addBufferView(BufferViewConfig *config) {
   view->setFilteredModel(Client::bufferModel(), config);
   view->show();
 
+  connect(&view->showChannelList, SIGNAL(triggered()), this, SLOT(showChannelList()));
+  
   Client::bufferModel()->synchronizeView(view);
 
   dock->setWidget(view);
@@ -254,6 +265,14 @@ void MainWin::showManageViewsDlg() {
   dlg.exec();
 }
 
+void MainWin::lockVerticalDocks(bool lock) {
+  QList<VerticalDock *> docks = findChildren<VerticalDock *>();
+  foreach(VerticalDock *dock, docks) {
+    dock->showTitle(!lock);
+  }
+  QtUiSettings().setValue("LockDocks", lock);
+}
+
 void MainWin::setupNickWidget() {
   // create nick dock
   NickListDock *nickDock = new NickListDock(tr("Nicks"), this);
@@ -496,6 +515,16 @@ void MainWin::coreConnectionDlgFinished(int /*code*/) {
   //exit(1);
 }
 
+void MainWin::showChannelList(NetworkId netId) {
+  if(!netId.isValid()) {
+    QAction *action = qobject_cast<QAction *>(sender());
+    if(action)
+      netId = action->data().value<NetworkId>();
+  }
+  channelListDlg->setNetwork(netId);
+  channelListDlg->show();
+}
+
 void MainWin::showSettingsDlg() {
   settingsDlg->show();
 }