Skip to content

Commit be73028

Browse files
authored
Merge pull request #58 from KitsuneRal/save-window-state
Save geometry of the main window and state of dock widgets
2 parents e07368c + ad36fca commit be73028

File tree

2 files changed

+51
-26
lines changed

2 files changed

+51
-26
lines changed

client/mainwindow.cpp

+48-26
Original file line numberDiff line numberDiff line change
@@ -48,47 +48,69 @@ MainWindow::MainWindow()
4848
connect( roomListDock, &RoomListDock::roomSelected, chatRoomWidget, &ChatRoomWidget::setRoom );
4949
connect( roomListDock, &RoomListDock::roomSelected, userListDock, &UserListDock::setRoom );
5050
systemTray = new SystemTray(this);
51-
systemTray->show();
51+
createMenu();
52+
loadSettings();
5253
show();
54+
systemTray->show();
5355
QTimer::singleShot(0, this, SLOT(initialize()));
5456
}
5557

5658
MainWindow::~MainWindow()
5759
{
5860
}
5961

60-
void MainWindow::enableDebug()
62+
void MainWindow::createMenu()
6163
{
62-
chatRoomWidget->enableDebug();
63-
}
64+
// Connection menu
65+
auto connectionMenu = menuBar()->addMenu(tr("&Connection"));
6466

65-
void MainWindow::initialize()
66-
{
67-
auto menuBar = new QMenuBar();
68-
{ // Connection menu
69-
auto connectionMenu = menuBar->addMenu(tr("&Connection"));
67+
loginAction = connectionMenu->addAction(tr("&Login..."));
68+
connect( loginAction, &QAction::triggered, [=]{ showLoginWindow(); } );
7069

71-
loginAction = connectionMenu->addAction(tr("&Login..."));
72-
connect( loginAction, &QAction::triggered, [=]{ showLoginWindow(); } );
70+
logoutAction = connectionMenu->addAction(tr("&Logout"));
71+
connect( logoutAction, &QAction::triggered, [=]{ logout(); } );
72+
logoutAction->setEnabled(false); // we start in a logged out state
7373

74-
logoutAction = connectionMenu->addAction(tr("&Logout"));
75-
connect( logoutAction, &QAction::triggered, this, &MainWindow::logout );
76-
logoutAction->setEnabled(false); // we start in a logged out state
74+
connectionMenu->addSeparator();
7775

78-
connectionMenu->addSeparator();
76+
auto quitAction = connectionMenu->addAction(tr("&Quit"));
77+
quitAction->setShortcut(QKeySequence::Quit);
78+
connect( quitAction, &QAction::triggered, qApp, &QApplication::closeAllWindows );
7979

80-
auto quitAction = connectionMenu->addAction(tr("&Quit"));
81-
quitAction->setShortcut(QKeySequence::Quit);
82-
connect( quitAction, &QAction::triggered, qApp, &QApplication::quit );
83-
}
84-
{ // Room menu
85-
auto roomMenu = menuBar->addMenu(tr("&Room"));
80+
// Room menu
81+
auto roomMenu = menuBar()->addMenu(tr("&Room"));
8682

87-
auto joinRoomAction = roomMenu->addAction(tr("&Join Room..."));
88-
connect( joinRoomAction, &QAction::triggered, this, &MainWindow::showJoinRoomDialog );
89-
}
83+
auto joinRoomAction = roomMenu->addAction(tr("&Join Room..."));
84+
connect( joinRoomAction, &QAction::triggered, [=]{ showJoinRoomDialog(); } );
85+
}
86+
87+
void MainWindow::loadSettings()
88+
{
89+
QMatrixClient::SettingsGroup sg("UI/MainWindow");
90+
if (sg.contains("normal_geometry"))
91+
setGeometry(sg.value("normal_geometry").toRect());
92+
if (sg.value("maximized").toBool())
93+
showMaximized();
94+
if (sg.contains("parts_state"))
95+
restoreState(sg.value("window_parts_state").toByteArray());
96+
}
97+
98+
void MainWindow::saveSettings() const
99+
{
100+
QMatrixClient::SettingsGroup sg("UI/MainWindow");
101+
sg.setValue("normal_geometry", normalGeometry());
102+
sg.setValue("maximized", isMaximized());
103+
sg.setValue("window_parts_state", saveState());
104+
sg.sync();
105+
}
106+
107+
void MainWindow::enableDebug()
108+
{
109+
chatRoomWidget->enableDebug();
110+
}
90111

91-
setMenuBar(menuBar);
112+
void MainWindow::initialize()
113+
{
92114
invokeLogin();
93115
}
94116

@@ -211,7 +233,7 @@ void MainWindow::connectionError(QString error)
211233
void MainWindow::closeEvent(QCloseEvent* event)
212234
{
213235
setConnection(nullptr);
214-
236+
saveSettings();
215237
event->accept();
216238
}
217239

client/mainwindow.h

+3
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ class MainWindow: public QMainWindow
7373

7474
SystemTray* systemTray;
7575

76+
void createMenu();
7677
void invokeLogin();
78+
void loadSettings();
79+
void saveSettings() const;
7780
};
7881

7982
#endif // MAINWINDOW_H

0 commit comments

Comments
 (0)