@@ -48,47 +48,69 @@ MainWindow::MainWindow()
48
48
connect ( roomListDock, &RoomListDock::roomSelected, chatRoomWidget, &ChatRoomWidget::setRoom );
49
49
connect ( roomListDock, &RoomListDock::roomSelected, userListDock, &UserListDock::setRoom );
50
50
systemTray = new SystemTray (this );
51
- systemTray->show ();
51
+ createMenu ();
52
+ loadSettings ();
52
53
show ();
54
+ systemTray->show ();
53
55
QTimer::singleShot (0 , this , SLOT (initialize ()));
54
56
}
55
57
56
58
MainWindow::~MainWindow ()
57
59
{
58
60
}
59
61
60
- void MainWindow::enableDebug ()
62
+ void MainWindow::createMenu ()
61
63
{
62
- chatRoomWidget-> enableDebug ();
63
- }
64
+ // Connection menu
65
+ auto connectionMenu = menuBar ()-> addMenu ( tr ( " &Connection " ));
64
66
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 (); } );
70
69
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
73
73
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 ();
77
75
78
- connectionMenu->addSeparator ();
76
+ auto quitAction = connectionMenu->addAction (tr (" &Quit" ));
77
+ quitAction->setShortcut (QKeySequence::Quit);
78
+ connect ( quitAction, &QAction::triggered, qApp, &QApplication::closeAllWindows );
79
79
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" ));
86
82
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
+ }
90
111
91
- setMenuBar (menuBar);
112
+ void MainWindow::initialize ()
113
+ {
92
114
invokeLogin ();
93
115
}
94
116
@@ -211,7 +233,7 @@ void MainWindow::connectionError(QString error)
211
233
void MainWindow::closeEvent (QCloseEvent* event)
212
234
{
213
235
setConnection (nullptr );
214
-
236
+ saveSettings ();
215
237
event->accept ();
216
238
}
217
239
0 commit comments