Don't invoke notifications for own messages, fixes #507
[quassel.git] / src / qtui / mainwin.cpp
index 72a3c71..ed5644c 100644 (file)
@@ -35,7 +35,6 @@
 #include "actioncollection.h"
 #include "buffermodel.h"
 #include "bufferview.h"
-#include "bufferviewmanager.h"
 #include "bufferwidget.h"
 #include "channellistdlg.h"
 #include "chatlinemodel.h"
@@ -45,6 +44,8 @@
 #include "client.h"
 #include "clientsyncer.h"
 #include "clientbacklogmanager.h"
+#include "clientbufferviewconfig.h"
+#include "clientbufferviewmanager.h"
 #include "coreinfodlg.h"
 #include "coreconnectdlg.h"
 #include "contextmenuactionprovider.h"
@@ -176,7 +177,7 @@ void MainWin::init() {
   restoreState(s.value("MainWinState").toByteArray());
 
   // restore locked state of docks
-  QtUi::actionCollection("General")->action("LockDockPositions")->setChecked(s.value("LockDocks", false).toBool());
+  QtUi::actionCollection("General")->action("LockLayout")->setChecked(s.value("LockLayout", false).toBool());
 
   setDisconnectedState();  // Disable menus and stuff
 
@@ -223,9 +224,10 @@ void MainWin::setupActions() {
   // View
   coll->addAction("ConfigureBufferViews", new Action(tr("&Configure Buffer Views..."), coll,
                                              this, SLOT(on_actionConfigureViews_triggered())));
-  QAction *lockAct = coll->addAction("LockDockPositions", new Action(tr("&Lock Dock Positions"), coll));
+
+  QAction *lockAct = coll->addAction("LockLayout", new Action(tr("&Lock Layout"), coll));
   lockAct->setCheckable(true);
-  connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockDockPositions_toggled(bool)));
+  connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockLayout_toggled(bool)));
 
   coll->addAction("ToggleSearchBar", new Action(SmallIcon("edit-find"), tr("Show &Search Bar"), coll,
                                                0, 0, tr("Ctrl+F")))->setCheckable(true);
@@ -276,6 +278,7 @@ void MainWin::setupMenus() {
   _viewMenu = menuBar()->addMenu(tr("&View"));
   _bufferViewsMenu = _viewMenu->addMenu(tr("&Buffer Views"));
   _bufferViewsMenu->addAction(coll->action("ConfigureBufferViews"));
+  _toolbarMenu = _viewMenu->addMenu(tr("&Toolbars"));
   _viewMenu->addSeparator();
   _viewMenu->addAction(coll->action("ToggleSearchBar"));
 
@@ -285,7 +288,7 @@ void MainWin::setupMenus() {
 
   _viewMenu->addAction(coll->action("ToggleStatusBar"));
   _viewMenu->addSeparator();
-  _viewMenu->addAction(coll->action("LockDockPositions"));
+  _viewMenu->addAction(coll->action("LockLayout"));
 
   _settingsMenu = menuBar()->addMenu(tr("&Settings"));
 #ifdef HAVE_KDE
@@ -316,13 +319,14 @@ void MainWin::setupBufferWidget() {
 }
 
 void MainWin::addBufferView(int bufferViewConfigId) {
-  addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewConfigId));
+  addBufferView(Client::bufferViewManager()->clientBufferViewConfig(bufferViewConfigId));
 }
 
-void MainWin::addBufferView(BufferViewConfig *config) {
+void MainWin::addBufferView(ClientBufferViewConfig *config) {
   if(!config)
     return;
 
+  config->setLocked(QtUiSettings().value("LockLayout", false).toBool());
   BufferViewDock *dock = new BufferViewDock(config, this);
 
   //create the view and initialize it's filter
@@ -380,12 +384,17 @@ void MainWin::on_actionConfigureViews_triggered() {
   dlg.exec();
 }
 
-void MainWin::on_actionLockDockPositions_toggled(bool lock) {
+void MainWin::on_actionLockLayout_toggled(bool lock) {
   QList<VerticalDock *> docks = findChildren<VerticalDock *>();
   foreach(VerticalDock *dock, docks) {
     dock->showTitle(!lock);
   }
-  QtUiSettings().setValue("LockDocks", lock);
+  if(Client::bufferViewManager()) {
+    foreach(ClientBufferViewConfig *config, Client::bufferViewManager()->clientBufferViewConfigs()) {
+      config->setLocked(lock);
+    }
+  }
+  QtUiSettings().setValue("LockLayout", lock);
 }
 
 void MainWin::setupNickWidget() {
@@ -528,16 +537,17 @@ void MainWin::setupToolBars() {
   connect(_nickListWidget, SIGNAL(nickSelectionChanged(QModelIndexList)),
           QtUi::toolBarActionProvider(), SLOT(nickSelectionChanged(QModelIndexList)));
 
-  _networkToolBar = addToolBar("Network");
-  _networkToolBar->setObjectName("NetworkToolBar");
-  QtUi::toolBarActionProvider()->addActions(_networkToolBar, ToolBarActionProvider::NetworkToolBar);
+  _mainToolBar = addToolBar("Main Toolbar");
+  _mainToolBar->setObjectName("MainToolBar");
+  QtUi::toolBarActionProvider()->addActions(_mainToolBar, ToolBarActionProvider::MainToolBar);
+  _toolbarMenu->addAction(_mainToolBar->toggleViewAction());
 
   //_nickToolBar = addToolBar("User");
   //_nickToolBar->setObjectName("NickToolBar");
   //QtUi::toolBarActionProvider()->addActions(_nickToolBar, ToolBarActionProvider::NickToolBar);
 
 #ifdef HAVE_KDE
-  _networkToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+  _mainToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
   //_nickToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 #endif
 }
@@ -587,6 +597,8 @@ void MainWin::setConnectedState() {
   // _viewMenu->setEnabled(true);
   if(!Client::internalCore())
     statusBar()->showMessage(tr("Connected to core."));
+  else
+    statusBar()->clearMessage();
 
   if(Client::signalProxy()->isSecure()) {
     sslLabel->setPixmap(SmallIcon("security-high"));
@@ -653,6 +665,8 @@ void MainWin::setDisconnectedState() {
   sslLabel->hide();
   updateLagIndicator();
   coreLagLabel->hide();
+  if(msgProcessorStatusWidget)
+    msgProcessorStatusWidget->setProgress(0, 0);
   updateIcon();
 }
 
@@ -787,7 +801,7 @@ void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) {
       continue;
     }
     Message::Flags flags = (Message::Flags)idx.data(ChatLineModel::FlagsRole).toInt();
-    if(flags.testFlag(Message::Backlog)) continue;
+    if(flags.testFlag(Message::Backlog) || flags.testFlag(Message::Self)) continue;
     flags |= Message::Backlog;  // we only want to trigger a highlight once!
     Client::messageModel()->setData(idx, (int)flags, ChatLineModel::FlagsRole);