you can now lock the positions of the docks (inputline, chat monitor, topic) which...
authorMarcus Eggenberger <egs@quassel-irc.org>
Sat, 5 Jul 2008 20:14:09 +0000 (22:14 +0200)
committerMarcus Eggenberger <egs@quassel-irc.org>
Sat, 5 Jul 2008 20:14:09 +0000 (22:14 +0200)
src/qtui/mainwin.cpp
src/qtui/mainwin.h
src/qtui/verticaldock.cpp
src/qtui/verticaldock.h

index 4d8a943..52699e9 100644 (file)
@@ -130,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();
 
@@ -259,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);
index 3c75629..453062f 100644 (file)
@@ -80,6 +80,7 @@ class MainWin : public QMainWindow {
     void showSettingsDlg();
     void showNetworkDlg();
     void showManageViewsDlg();
+    void lockVerticalDocks(bool lock);
     void showAboutDlg();
     void showDebugConsole();
 
index 28ebe68..4ac07fe 100644 (file)
@@ -29,9 +29,6 @@ VerticalDockTitle::VerticalDockTitle(QDockWidget *parent)
 {
 }
 
-VerticalDockTitle::~VerticalDockTitle() {
-}
-
 QSize VerticalDockTitle::sizeHint() const {
   return QSize(10, 15);
 }
@@ -42,7 +39,7 @@ QSize VerticalDockTitle::minimumSizeHint() const {
 
 void VerticalDockTitle::paintEvent(QPaintEvent *event) {
   Q_UNUSED(event);
-  
+
   QPainter painter(this);
   
   if(rect().isValid() && rect().height() > minimumSizeHint().height()) {
@@ -52,10 +49,11 @@ void VerticalDockTitle::paintEvent(QPaintEvent *event) {
       qDrawShadeLine(&painter, topLeft, bottomRight, palette());
     }
   }
-  
+
 }
 
 
+
 // ==============================
 //  Vertical Dock
 // ==============================
@@ -71,9 +69,6 @@ VerticalDock::VerticalDock(QWidget *parent, Qt::WindowFlags flags)
   setDefaultTitleWidget();
 }
 
-VerticalDock::~VerticalDock() {
-}
-
 void VerticalDock::setDefaultTitleWidget() {
   QWidget *oldDockTitle = titleBarWidget();
   QWidget *newDockTitle = new VerticalDockTitle(this);
@@ -85,3 +80,17 @@ void VerticalDock::setDefaultTitleWidget() {
   if(oldDockTitle)
     oldDockTitle->deleteLater();
 }
+
+void VerticalDock::showTitle(bool show) {
+  QWidget *oldDockTitle = titleBarWidget();
+  QWidget *newDockTitle = 0;
+  
+  if(show)
+    newDockTitle = new VerticalDockTitle(this);
+  else
+    newDockTitle = new EmptyDockTitle(this);
+
+  setTitleBarWidget(newDockTitle);
+  if(oldDockTitle)
+    oldDockTitle->deleteLater();
+}
index 33e684e..ba616ff 100644 (file)
@@ -29,23 +29,36 @@ class VerticalDockTitle : public QWidget {
 
 public:
   VerticalDockTitle(QDockWidget *parent);
-  virtual ~VerticalDockTitle();
 
   virtual QSize sizeHint() const;
   virtual QSize minimumSizeHint() const;
+  void show(bool show_);
 
 protected:
   virtual void paintEvent(QPaintEvent *event);
+
+private:
+  bool _show;
+};
+
+class EmptyDockTitle : public QWidget {
+  Q_OBJECT
+
+public:
+  inline EmptyDockTitle(QDockWidget *parent) : QWidget(parent) {}
+
+  inline virtual QSize sizeHint() const { return QSize(0,0); }
 };
 
+
 class VerticalDock : public QDockWidget {
   Q_OBJECT
 
 public:
   VerticalDock(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0);
   VerticalDock(QWidget *parent = 0, Qt::WindowFlags flags = 0);
-  virtual ~VerticalDock();
 
+  void showTitle(bool show);
   void setDefaultTitleWidget();
 };