summary refs log tree commit diff
path: root/src
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
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')
-rw-r--r--src/ChatPage.cc2
-rw-r--r--src/MainWindow.cc5
-rw-r--r--src/Splitter.cc38
3 files changed, 43 insertions, 2 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc

index 2b8a6b89..3d026ab3 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc
@@ -118,7 +118,7 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) // Splitter splitter->addWidget(sideBar_); splitter->addWidget(content_); - splitter->setSizes({ui::sidebar::NormalSize, parent->width() - ui::sidebar::NormalSize}); + splitter->restoreSizes(parent->width()); text_input_ = new TextInputWidget(this); typingDisplay_ = new TypingDisplay(this); diff --git a/src/MainWindow.cc b/src/MainWindow.cc
index c7c3432f..7733a002 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc
@@ -234,9 +234,12 @@ MainWindow::showChatPage() showOverlayProgressBar(); - welcome_page_->hide(); pageStack_->setCurrentWidget(chat_page_); + pageStack_->removeWidget(welcome_page_); + pageStack_->removeWidget(login_page_); + pageStack_->removeWidget(register_page_); + login_page_->reset(); chat_page_->bootstrap(userid, homeserver, token); 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);