Lock Dock Positions has been replaced by Lock Layout
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 10 Feb 2009 23:25:47 +0000 (00:25 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 10 Feb 2009 23:25:47 +0000 (00:25 +0100)
This option now also prohibits manual reordering of the buffer views

14 files changed:
src/client/CMakeLists.txt
src/client/client.cpp
src/client/client.h
src/client/clientbufferviewconfig.cpp [new file with mode: 0644]
src/client/clientbufferviewconfig.h [new file with mode: 0644]
src/client/clientbufferviewmanager.cpp [new file with mode: 0644]
src/client/clientbufferviewmanager.h [new file with mode: 0644]
src/common/bufferviewconfig.h
src/common/bufferviewmanager.cpp
src/common/bufferviewmanager.h
src/qtui/mainwin.cpp
src/qtui/mainwin.h
src/qtui/settingspages/bufferviewsettingspage.cpp
src/uisupport/bufferviewfilter.cpp

index 2622cd1..044565b 100644 (file)
@@ -14,6 +14,8 @@ set(SOURCES
     buffersettings.cpp
     client.cpp
     clientbacklogmanager.cpp
     buffersettings.cpp
     client.cpp
     clientbacklogmanager.cpp
+    clientbufferviewconfig.cpp
+    clientbufferviewmanager.cpp
     clientidentity.cpp
     clientirclisthelper.cpp
     clientsettings.cpp
     clientidentity.cpp
     clientirclisthelper.cpp
     clientsettings.cpp
@@ -31,6 +33,8 @@ set(MOC_HDRS
     buffermodel.h
     client.h
     clientbacklogmanager.h
     buffermodel.h
     client.h
     clientbacklogmanager.h
+    clientbufferviewconfig.h
+    clientbufferviewmanager.h
     clientcoreinfo.h
     clientidentity.h
     clientirclisthelper.h
     clientcoreinfo.h
     clientidentity.h
     clientirclisthelper.h
index de3b5d1..b0f68e4 100644 (file)
@@ -27,8 +27,8 @@
 #include "buffersettings.h"
 #include "buffersyncer.h"
 #include "bufferviewconfig.h"
 #include "buffersettings.h"
 #include "buffersyncer.h"
 #include "bufferviewconfig.h"
-#include "bufferviewmanager.h"
 #include "clientbacklogmanager.h"
 #include "clientbacklogmanager.h"
+#include "clientbufferviewmanager.h"
 #include "clientirclisthelper.h"
 #include "clientidentity.h"
 #include "ircchannel.h"
 #include "clientirclisthelper.h"
 #include "clientidentity.h"
 #include "ircchannel.h"
@@ -297,7 +297,7 @@ void Client::setSyncedToCore() {
 
   // create a new BufferViewManager
   Q_ASSERT(!_bufferViewManager);
 
   // create a new BufferViewManager
   Q_ASSERT(!_bufferViewManager);
-  _bufferViewManager = new BufferViewManager(signalProxy(), this);
+  _bufferViewManager = new ClientBufferViewManager(signalProxy(), this);
   connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
   connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefaultBufferView()));
 
   connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
   connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefaultBufferView()));
 
index ea30bcd..3679d65 100644 (file)
@@ -45,7 +45,7 @@ class BufferSyncer;
 class ClientBacklogManager;
 class ClientIrcListHelper;
 class ClientSyncer;
 class ClientBacklogManager;
 class ClientIrcListHelper;
 class ClientSyncer;
-class BufferViewManager;
+class ClientBufferViewManager;
 class IrcUser;
 class IrcChannel;
 class SignalProxy;
 class IrcUser;
 class IrcChannel;
 class SignalProxy;
@@ -102,7 +102,7 @@ public:
 
   static inline ClientBacklogManager *backlogManager() { return instance()->_backlogManager; }
   static inline ClientIrcListHelper *ircListHelper() { return instance()->_ircListHelper; }
 
   static inline ClientBacklogManager *backlogManager() { return instance()->_backlogManager; }
   static inline ClientIrcListHelper *ircListHelper() { return instance()->_ircListHelper; }
-  static inline BufferViewManager *bufferViewManager() { return instance()->_bufferViewManager; }
+  static inline ClientBufferViewManager *bufferViewManager() { return instance()->_bufferViewManager; }
 
   static AccountId currentCoreAccount();
 
 
   static AccountId currentCoreAccount();
 
@@ -205,7 +205,7 @@ private:
   BufferModel * _bufferModel;
   BufferSyncer * _bufferSyncer;
   ClientBacklogManager *_backlogManager;
   BufferModel * _bufferModel;
   BufferSyncer * _bufferSyncer;
   ClientBacklogManager *_backlogManager;
-  BufferViewManager *_bufferViewManager;
+  ClientBufferViewManager *_bufferViewManager;
   ClientIrcListHelper *_ircListHelper;
 
   MessageModel *_messageModel;
   ClientIrcListHelper *_ircListHelper;
 
   MessageModel *_messageModel;
diff --git a/src/client/clientbufferviewconfig.cpp b/src/client/clientbufferviewconfig.cpp
new file mode 100644 (file)
index 0000000..86fbfd9
--- /dev/null
@@ -0,0 +1,27 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "clientbufferviewconfig.h"
+
+ClientBufferViewConfig::ClientBufferViewConfig(int bufferViewId, QObject *parent)
+  : BufferViewConfig(bufferViewId, parent),
+    _locked(false)
+{
+}
diff --git a/src/client/clientbufferviewconfig.h b/src/client/clientbufferviewconfig.h
new file mode 100644 (file)
index 0000000..1bd188f
--- /dev/null
@@ -0,0 +1,41 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef CLIENTBUFFERVIEWCONFIG_H
+#define CLIENTBUFFERVIEWCONFIG_H
+
+#include "bufferviewconfig.h"
+
+class ClientBufferViewConfig : public BufferViewConfig {
+  Q_OBJECT
+
+public:
+  ClientBufferViewConfig(int bufferViewId, QObject *parent = 0);
+
+  inline bool isLocked() { return _locked || sortAlphabetically(); }
+  inline void setLocked(bool locked) { _locked = locked; }
+  inline void lock() { setLocked(true); };
+  inline void unlock() { setLocked(false); };
+
+private:
+  bool _locked;
+};
+
+#endif //CLIENTBUFFERVIEWCONFIG_H
diff --git a/src/client/clientbufferviewmanager.cpp b/src/client/clientbufferviewmanager.cpp
new file mode 100644 (file)
index 0000000..c46ff3a
--- /dev/null
@@ -0,0 +1,45 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "clientbufferviewmanager.h"
+
+#include "clientbufferviewconfig.h"
+
+ClientBufferViewManager::ClientBufferViewManager(SignalProxy *proxy, QObject *parent)
+  : BufferViewManager(proxy, parent)
+{
+}
+
+BufferViewConfig *ClientBufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) {
+  return new ClientBufferViewConfig(bufferViewConfigId, this);
+}
+
+QList<ClientBufferViewConfig *> ClientBufferViewManager::clientBufferViewConfigs() const {
+  QList<ClientBufferViewConfig *> clientConfigs;
+  foreach(BufferViewConfig *config, bufferViewConfigs()) {
+    clientConfigs << static_cast<ClientBufferViewConfig *>(config);
+  }
+  return clientConfigs;
+}
+
+ClientBufferViewConfig *ClientBufferViewManager::clientBufferViewConfig(int bufferViewId) const {
+  return static_cast<ClientBufferViewConfig *>(bufferViewConfig(bufferViewId));
+}
+
diff --git a/src/client/clientbufferviewmanager.h b/src/client/clientbufferviewmanager.h
new file mode 100644 (file)
index 0000000..6ecef78
--- /dev/null
@@ -0,0 +1,40 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef CLIENTBUFFERVIEWMANAGER_H
+#define CLIENTBUFFERVIEWMANAGER_H
+
+#include "bufferviewmanager.h"
+class ClientBufferViewConfig;
+
+class ClientBufferViewManager : public BufferViewManager {
+  Q_OBJECT
+
+public:
+  ClientBufferViewManager(SignalProxy *proxy, QObject *parent = 0);
+
+  QList<ClientBufferViewConfig *> clientBufferViewConfigs() const;
+  ClientBufferViewConfig *clientBufferViewConfig(int bufferViewId) const;
+
+protected:
+  virtual BufferViewConfig *bufferViewConfigFactory(int bufferViewConfigId);
+};
+
+#endif //CLIENTBUFFERVIEWMANAGER_H
index 87f109a..9142053 100644 (file)
@@ -40,6 +40,7 @@ public:
   BufferViewConfig(int bufferViewId, QObject *parent = 0);
   BufferViewConfig(int bufferViewId, const QVariantMap &properties, QObject *parent = 0);
 
   BufferViewConfig(int bufferViewId, QObject *parent = 0);
   BufferViewConfig(int bufferViewId, const QVariantMap &properties, QObject *parent = 0);
 
+  inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
 
 public slots:
   inline int bufferViewId() const { return _bufferViewId; }
 
 public slots:
   inline int bufferViewId() const { return _bufferViewId; }
index 8347fd9..59d3a9b 100644 (file)
@@ -37,6 +37,10 @@ BufferViewConfig *BufferViewManager::bufferViewConfig(int bufferViewId) const {
     return 0;
 }
 
     return 0;
 }
 
+BufferViewConfig *BufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) {
+  return new BufferViewConfig(bufferViewConfigId, this);
+}
+
 void BufferViewManager::addBufferViewConfig(BufferViewConfig *config) {
   if(_bufferViewConfigs.contains(config->bufferViewId()))
      return;
 void BufferViewManager::addBufferViewConfig(BufferViewConfig *config) {
   if(_bufferViewConfigs.contains(config->bufferViewId()))
      return;
@@ -50,7 +54,7 @@ void BufferViewManager::addBufferViewConfig(int bufferViewConfigId) {
   if(_bufferViewConfigs.contains(bufferViewConfigId))
      return;
   
   if(_bufferViewConfigs.contains(bufferViewConfigId))
      return;
   
-  addBufferViewConfig(new BufferViewConfig(bufferViewConfigId, this));
+  addBufferViewConfig(bufferViewConfigFactory(bufferViewConfigId));
 }
 
 void BufferViewManager::deleteBufferViewConfig(int bufferViewConfigId) {
 }
 
 void BufferViewManager::deleteBufferViewConfig(int bufferViewConfigId) {
index 0e0934a..6281a44 100644 (file)
@@ -35,6 +35,8 @@ class BufferViewManager : public SyncableObject {
 public:
   BufferViewManager(SignalProxy *proxy, QObject *parent = 0);
 
 public:
   BufferViewManager(SignalProxy *proxy, QObject *parent = 0);
 
+  inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
+
   inline QList<BufferViewConfig *> bufferViewConfigs() const { return _bufferViewConfigs.values(); }
   BufferViewConfig *bufferViewConfig(int bufferViewId) const;
 
   inline QList<BufferViewConfig *> bufferViewConfigs() const { return _bufferViewConfigs.values(); }
   BufferViewConfig *bufferViewConfig(int bufferViewId) const;
 
@@ -64,6 +66,7 @@ signals:
 protected:
   typedef QHash<int, BufferViewConfig *> BufferViewConfigHash;
   inline const BufferViewConfigHash &bufferViewConfigHash() { return _bufferViewConfigs; }
 protected:
   typedef QHash<int, BufferViewConfig *> BufferViewConfigHash;
   inline const BufferViewConfigHash &bufferViewConfigHash() { return _bufferViewConfigs; }
+  virtual BufferViewConfig *bufferViewConfigFactory(int bufferViewConfigId);
 
 private:
   BufferViewConfigHash _bufferViewConfigs;
 
 private:
   BufferViewConfigHash _bufferViewConfigs;
index 37c5865..2343b8a 100644 (file)
@@ -35,7 +35,6 @@
 #include "actioncollection.h"
 #include "buffermodel.h"
 #include "bufferview.h"
 #include "actioncollection.h"
 #include "buffermodel.h"
 #include "bufferview.h"
-#include "bufferviewmanager.h"
 #include "bufferwidget.h"
 #include "channellistdlg.h"
 #include "chatlinemodel.h"
 #include "bufferwidget.h"
 #include "channellistdlg.h"
 #include "chatlinemodel.h"
@@ -45,6 +44,8 @@
 #include "client.h"
 #include "clientsyncer.h"
 #include "clientbacklogmanager.h"
 #include "client.h"
 #include "clientsyncer.h"
 #include "clientbacklogmanager.h"
+#include "clientbufferviewconfig.h"
+#include "clientbufferviewmanager.h"
 #include "coreinfodlg.h"
 #include "coreconnectdlg.h"
 #include "contextmenuactionprovider.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
   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
 
 
   setDisconnectedState();  // Disable menus and stuff
 
@@ -224,9 +225,9 @@ void MainWin::setupActions() {
   coll->addAction("ConfigureBufferViews", new Action(tr("&Configure Buffer Views..."), coll,
                                              this, SLOT(on_actionConfigureViews_triggered())));
 
   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);
   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);
 
   coll->addAction("ToggleSearchBar", new Action(SmallIcon("edit-find"), tr("Show &Search Bar"), coll,
                                                0, 0, tr("Ctrl+F")))->setCheckable(true);
@@ -287,7 +288,7 @@ void MainWin::setupMenus() {
 
   _viewMenu->addAction(coll->action("ToggleStatusBar"));
   _viewMenu->addSeparator();
 
   _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
 
   _settingsMenu = menuBar()->addMenu(tr("&Settings"));
 #ifdef HAVE_KDE
@@ -318,10 +319,10 @@ void MainWin::setupBufferWidget() {
 }
 
 void MainWin::addBufferView(int bufferViewConfigId) {
 }
 
 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;
 
   if(!config)
     return;
 
@@ -382,12 +383,15 @@ void MainWin::on_actionConfigureViews_triggered() {
   dlg.exec();
 }
 
   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);
   }
   QList<VerticalDock *> docks = findChildren<VerticalDock *>();
   foreach(VerticalDock *dock, docks) {
     dock->showTitle(!lock);
   }
-  QtUiSettings().setValue("LockDocks", lock);
+  foreach(ClientBufferViewConfig *config, Client::bufferViewManager()->clientBufferViewConfigs()) {
+    config->setLocked(lock);
+  }
+  QtUiSettings().setValue("LockLayout", lock);
 }
 
 void MainWin::setupNickWidget() {
 }
 
 void MainWin::setupNickWidget() {
index fdd8c5e..4d16825 100644 (file)
@@ -36,6 +36,7 @@
 class ActionCollection;
 class BufferView;
 class BufferViewConfig;
 class ActionCollection;
 class BufferView;
 class BufferViewConfig;
+class ClientBufferViewConfig;
 class BufferViewDock;
 class BufferWidget;
 class InputWidget;
 class BufferViewDock;
 class BufferWidget;
 class InputWidget;
@@ -64,7 +65,7 @@ class MainWin
 
     void init();
 
 
     void init();
 
-    void addBufferView(BufferViewConfig *config);
+    void addBufferView(ClientBufferViewConfig *config);
     BufferView *allBuffersView() const;
 
     inline QSystemTrayIcon *systemTrayIcon() const;
     BufferView *allBuffersView() const;
 
     inline QSystemTrayIcon *systemTrayIcon() const;
@@ -109,7 +110,7 @@ class MainWin
 #endif
     void on_actionConfigureNetworks_triggered();
     void on_actionConfigureViews_triggered();
 #endif
     void on_actionConfigureNetworks_triggered();
     void on_actionConfigureViews_triggered();
-    void on_actionLockDockPositions_toggled(bool lock);
+    void on_actionLockLayout_toggled(bool lock);
     void on_actionDebugNetworkModel_triggered();
     void on_actionDebugMessageModel_triggered();
     void on_actionDebugLog_triggered();
     void on_actionDebugNetworkModel_triggered();
     void on_actionDebugMessageModel_triggered();
     void on_actionDebugLog_triggered();
index 5447735..e10386c 100644 (file)
@@ -27,8 +27,8 @@
 #include "network.h"
 #include "bufferviewconfig.h"
 #include "bufferviewfilter.h"
 #include "network.h"
 #include "bufferviewconfig.h"
 #include "bufferviewfilter.h"
-#include "bufferviewmanager.h"
 #include "buffermodel.h"
 #include "buffermodel.h"
+#include "clientbufferviewmanager.h"
 #include "networkmodel.h"
 
 BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
 #include "networkmodel.h"
 
 BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
index 7179f26..51dfe15 100644 (file)
@@ -28,6 +28,7 @@
 #include "buffermodel.h"
 #include "buffersettings.h"
 #include "client.h"
 #include "buffermodel.h"
 #include "buffersettings.h"
 #include "client.h"
+#include "clientbufferviewconfig.h"
 #include "iconloader.h"
 #include "networkmodel.h"
 
 #include "iconloader.h"
 #include "networkmodel.h"
 
@@ -167,12 +168,16 @@ void BufferViewFilter::enableEditMode(bool enable) {
 Qt::ItemFlags BufferViewFilter::flags(const QModelIndex &index) const {
   QModelIndex source_index = mapToSource(index);
   Qt::ItemFlags flags = sourceModel()->flags(source_index);
 Qt::ItemFlags BufferViewFilter::flags(const QModelIndex &index) const {
   QModelIndex source_index = mapToSource(index);
   Qt::ItemFlags flags = sourceModel()->flags(source_index);
-  if(_config) {
+  if(config()) {
     if(source_index == QModelIndex() || sourceModel()->data(source_index, NetworkModel::ItemTypeRole) == NetworkModel::NetworkItemType) {
       flags |= Qt::ItemIsDropEnabled;
     } else if(_editMode) {
       flags |= Qt::ItemIsUserCheckable | Qt::ItemIsTristate;
     }
     if(source_index == QModelIndex() || sourceModel()->data(source_index, NetworkModel::ItemTypeRole) == NetworkModel::NetworkItemType) {
       flags |= Qt::ItemIsDropEnabled;
     } else if(_editMode) {
       flags |= Qt::ItemIsUserCheckable | Qt::ItemIsTristate;
     }
+    ClientBufferViewConfig *clientConf = qobject_cast<ClientBufferViewConfig *>(config());
+    if(clientConf && clientConf->isLocked()) {
+      flags &= ~(Qt::ItemIsDropEnabled | Qt::ItemIsDragEnabled);
+    }
   }
   return flags;
 }
   }
   return flags;
 }