summary refs log tree commit diff
path: root/src/Splitter.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-06-29 14:28:48 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-06-29 14:28:48 +0300
commitd56446ce97aba86ef7b109c063b6d76968bb4ab0 (patch)
tree3f285b7ebce012db791a686d69ce5a93c4790671 /src/Splitter.cc
parentSave timeline messages in cache for faster startup times (diff)
downloadnheko-d56446ce97aba86ef7b109c063b6d76968bb4ab0.tar.xz
Allow arbitrary resizing of the main window & restore sidebar's size
fixes #160
fixes #163
fixes #187
fixes #127
Diffstat (limited to 'src/Splitter.cc')
-rw-r--r--src/Splitter.cc38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Splitter.cc b/src/Splitter.cc
index ccc250be..0344df92 100644
--- a/src/Splitter.cc
+++ b/src/Splitter.cc
@@ -16,6 +16,7 @@
  */
 
 #include <QDebug>
+#include <QSettings>
 
 #include "Splitter.h"
 #include "Theme.h"
@@ -29,6 +30,43 @@ Splitter::Splitter(QWidget *parent)
 }
 
 void
+Splitter::restoreSizes(int fallback)
+{
+        QSettings settings;
+        int savedWidth = settings.value("sidebar/width").toInt();
+
+        auto left = widget(0);
+        if (savedWidth == ui::sidebar::SmallSize) {
+                if (left) {
+                        left->setMinimumWidth(ui::sidebar::SmallSize);
+                        left->setMaximumWidth(ui::sidebar::SmallSize);
+                        return;
+                }
+        }
+
+        if (savedWidth >= ui::sidebar::NormalSize && savedWidth <= 2 * ui::sidebar::NormalSize) {
+                if (left) {
+                        left->setMinimumWidth(ui::sidebar::NormalSize);
+                        left->setMaximumWidth(2 * ui::sidebar::NormalSize);
+                        setSizes({savedWidth, fallback - savedWidth});
+                        return;
+                }
+        }
+
+        setSizes({ui::sidebar::NormalSize, fallback - ui::sidebar::NormalSize});
+}
+
+Splitter::~Splitter()
+{
+        auto left = widget(0);
+
+        if (left) {
+                QSettings settings;
+                settings.setValue("sidebar/width", left->width());
+        }
+}
+
+void
 Splitter::onSplitterMoved(int pos, int index)
 {
         Q_UNUSED(pos);