summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
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);