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()
|
void showWelcomePage()
|
||||||
{
|
{
|
||||||
removeOverlayProgressBar();
|
removeOverlayProgressBar();
|
||||||
|
pageStack_->addWidget(welcome_page_);
|
||||||
pageStack_->setCurrentWidget(welcome_page_);
|
pageStack_->setCurrentWidget(welcome_page_);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Show the login page in the main window.
|
//! 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.
|
//! 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.
|
//! Show user settings page.
|
||||||
void showUserSettingsPage() { pageStack_->setCurrentWidget(userSettingsPage_); }
|
void showUserSettingsPage() { pageStack_->setCurrentWidget(userSettingsPage_); }
|
||||||
|
@ -24,6 +24,9 @@ class Splitter : public QSplitter
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit Splitter(QWidget *parent = nullptr);
|
explicit Splitter(QWidget *parent = nullptr);
|
||||||
|
~Splitter();
|
||||||
|
|
||||||
|
void restoreSizes(int fallback);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void onSplitterMoved(int pos, int index);
|
void onSplitterMoved(int pos, int index);
|
||||||
|
@ -118,7 +118,7 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent)
|
|||||||
// Splitter
|
// Splitter
|
||||||
splitter->addWidget(sideBar_);
|
splitter->addWidget(sideBar_);
|
||||||
splitter->addWidget(content_);
|
splitter->addWidget(content_);
|
||||||
splitter->setSizes({ui::sidebar::NormalSize, parent->width() - ui::sidebar::NormalSize});
|
splitter->restoreSizes(parent->width());
|
||||||
|
|
||||||
text_input_ = new TextInputWidget(this);
|
text_input_ = new TextInputWidget(this);
|
||||||
typingDisplay_ = new TypingDisplay(this);
|
typingDisplay_ = new TypingDisplay(this);
|
||||||
|
@ -234,9 +234,12 @@ MainWindow::showChatPage()
|
|||||||
|
|
||||||
showOverlayProgressBar();
|
showOverlayProgressBar();
|
||||||
|
|
||||||
welcome_page_->hide();
|
|
||||||
pageStack_->setCurrentWidget(chat_page_);
|
pageStack_->setCurrentWidget(chat_page_);
|
||||||
|
|
||||||
|
pageStack_->removeWidget(welcome_page_);
|
||||||
|
pageStack_->removeWidget(login_page_);
|
||||||
|
pageStack_->removeWidget(register_page_);
|
||||||
|
|
||||||
login_page_->reset();
|
login_page_->reset();
|
||||||
chat_page_->bootstrap(userid, homeserver, token);
|
chat_page_->bootstrap(userid, homeserver, token);
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
#include "Splitter.h"
|
#include "Splitter.h"
|
||||||
#include "Theme.h"
|
#include "Theme.h"
|
||||||
@ -28,6 +29,43 @@ Splitter::Splitter(QWidget *parent)
|
|||||||
setStyleSheet("QSplitter::handle { image: none; }");
|
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
|
void
|
||||||
Splitter::onSplitterMoved(int pos, int index)
|
Splitter::onSplitterMoved(int pos, int index)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user