Allow arbitrary resizing of the main window & restore sidebar's size
fixes #160 fixes #163 fixes #187 fixes #127
This commit is contained in:
parent
4344b6964f
commit
d56446ce97
@ -83,14 +83,23 @@ private slots:
|
||||
void showWelcomePage()
|
||||
{
|
||||
removeOverlayProgressBar();
|
||||
pageStack_->addWidget(welcome_page_);
|
||||
pageStack_->setCurrentWidget(welcome_page_);
|
||||
}
|
||||
|
||||
//! Show the login page in the main window.
|
||||
void showLoginPage() { pageStack_->setCurrentWidget(login_page_); }
|
||||
void showLoginPage()
|
||||
{
|
||||
pageStack_->addWidget(login_page_);
|
||||
pageStack_->setCurrentWidget(login_page_);
|
||||
}
|
||||
|
||||
//! Show the register page in the main window.
|
||||
void showRegisterPage() { pageStack_->setCurrentWidget(register_page_); }
|
||||
void showRegisterPage()
|
||||
{
|
||||
pageStack_->addWidget(register_page_);
|
||||
pageStack_->setCurrentWidget(register_page_);
|
||||
}
|
||||
|
||||
//! Show user settings page.
|
||||
void showUserSettingsPage() { pageStack_->setCurrentWidget(userSettingsPage_); }
|
||||
|
@ -24,6 +24,9 @@ class Splitter : public QSplitter
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Splitter(QWidget *parent = nullptr);
|
||||
~Splitter();
|
||||
|
||||
void restoreSizes(int fallback);
|
||||
|
||||
private:
|
||||
void onSplitterMoved(int pos, int index);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
#include <QDebug>
|
||||
#include <QSettings>
|
||||
|
||||
#include "Splitter.h"
|
||||
#include "Theme.h"
|
||||
@ -28,6 +29,43 @@ Splitter::Splitter(QWidget *parent)
|
||||
setStyleSheet("QSplitter::handle { image: none; }");
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user