Skip to content

Commit 4539699

Browse files
authored
Merge pull request mpc-qt#304 from tbertels/panels_state
Add a setting to remember panels state and keep last window geometry setting active
2 parents b895b0d + ed6d7be commit 4539699

File tree

7 files changed

+43
-15
lines changed

7 files changed

+43
-15
lines changed

main.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,8 @@ void Flow::setupFlowConnections()
873873
this, &Flow::settingswindow_rememberFilePosition);
874874
connect(settingsWindow, &SettingsWindow::rememberWindowGeometry,
875875
this, &Flow::settingswindow_rememberWindowGeometry);
876+
connect(settingsWindow, &SettingsWindow::rememberPanels,
877+
this, &Flow::settingswindow_rememberPanels);
876878
connect(settingsWindow, &SettingsWindow::mprisIpc,
877879
this, &Flow::settingswindow_mprisIpc);
878880
connect(settingsWindow, &SettingsWindow::stylesheetIsFusion,
@@ -1198,16 +1200,16 @@ QVariantMap Flow::favoritesToVMap() const
11981200

11991201
QVariantMap Flow::windowsToVMap_v2()
12001202
{
1201-
if (!rememberWindowGeometry)
1202-
return QVariantMap();
1203-
12041203
windowManager.clearJson();
1205-
windowManager.saveDocks(mainWindow->dockHost());
1206-
windowManager.saveWindow(settingsWindow);
1207-
windowManager.saveWindow(propertiesWindow);
1208-
windowManager.saveWindow(logWindow);
1209-
windowManager.saveWindow(libraryWindow);
1210-
windowManager.saveAppWindow(mainWindow);
1204+
if (rememberPanels)
1205+
windowManager.saveDocks(mainWindow->dockHost());
1206+
if (rememberWindowGeometry) {
1207+
windowManager.saveWindow(settingsWindow);
1208+
windowManager.saveWindow(propertiesWindow);
1209+
windowManager.saveWindow(logWindow);
1210+
windowManager.saveWindow(libraryWindow);
1211+
}
1212+
windowManager.saveAppWindow(mainWindow, rememberWindowGeometry, rememberPanels);
12111213
return windowManager.json();
12121214
}
12131215

@@ -1494,6 +1496,12 @@ void Flow::settingswindow_rememberWindowGeometry(bool yes)
14941496
this->rememberWindowGeometry = yes;
14951497
}
14961498

1499+
void Flow::settingswindow_rememberPanels(bool yes)
1500+
{
1501+
// Remember our preference to save the panels state when we exit
1502+
this->rememberPanels = yes;
1503+
}
1504+
14971505
void Flow::settingswindow_keymapData(const QVariantMap &keyMap)
14981506
{
14991507
// Remember the keymap (shortcuts) data

main.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ private slots:
9191
void settingswindow_rememberHistory(bool yes, bool onlyVideos);
9292
void settingswindow_rememberFilePosition(bool yes);
9393
void settingswindow_rememberWindowGeometry(bool yes);
94+
void settingswindow_rememberPanels(bool yes);
9495
void settingswindow_keymapData(const QVariantMap &keyMap);
9596
void settingswindow_mprisIpc(bool enabled);
9697
void settingswindow_stylesheetIsFusion(bool yes);
@@ -149,6 +150,7 @@ private slots:
149150
bool rememberHistoryOnlyForVideos = true;
150151
bool rememberFilePosition = false;
151152
bool rememberWindowGeometry = false;
153+
bool rememberPanels = false;
152154
bool nowPlayingDisplayingSubtitles = true;
153155
bool nowPlayingNoSubtitleTracks = false;
154156
bool repeatAfter = false;

platform/windowmanager.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,18 @@ QVariantMap WindowManager::json()
3333
return json_;
3434
}
3535

36-
void WindowManager::saveAppWindow(MainWindow *window)
36+
void WindowManager::saveAppWindow(MainWindow *window, bool rememberWindowGeometry, bool rememberPanels)
3737
{
38+
QVariantMap geometry;
39+
QVariantMap panels;
40+
if (rememberWindowGeometry)
41+
geometry = Helpers::rectToVmap(QRect(window->geometry().topLeft(),
42+
window->size()));
43+
if (rememberPanels)
44+
panels = window->state();
3845
QVariantMap data = {
39-
{ keyGeometry, Helpers::rectToVmap(QRect(window->geometry().topLeft(),
40-
window->size())) },
41-
{ keyState, window->state() },
46+
{ keyGeometry, geometry },
47+
{ keyState, panels },
4248
{ keyMaximized, window->isMaximized() }
4349
};
4450
json_.insert(window->objectName(), data);

platform/windowmanager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class WindowManager : public QObject
3434
void setJson(const QVariantMap &json);
3535
QVariantMap json();
3636

37-
void saveAppWindow(MainWindow *window);
37+
void saveAppWindow(MainWindow *window, bool rememberWindowGeometry, bool rememberPanels);
3838
void saveDocks(QMainWindow *dockHost);
3939
void saveWindow(QWidget *window);
4040

settingswindow.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,6 @@ void SettingsWindow::disableWindowManagment()
373373
{
374374
// Wayland breaks applications
375375
ui->playerLimitProportions->setDisabled(true);
376-
ui->playerRememberWindowGeometry->setDisabled(true);
377376
ui->playbackAutoCenterWindow->setDisabled(true);
378377
}
379378

@@ -720,6 +719,7 @@ void SettingsWindow::sendSignals()
720719
emit rememberFilePosition(WIDGET_LOOKUP(ui->playerRememberFilePosition).toBool());
721720
emit rememberSelectedPlaylist(WIDGET_LOOKUP(ui->playerRememberLastPlaylist).toBool());
722721
emit rememberWindowGeometry(WIDGET_LOOKUP(ui->playerRememberWindowGeometry).toBool());
722+
emit rememberPanels(WIDGET_LOOKUP(ui->playerRememberPanels).toBool());
723723
emit rememberPanNScan(WIDGET_LOOKUP(ui->playerRememberPanScanZoom).toBool());
724724

725725
emit mprisIpc(WIDGET_LOOKUP(ui->ipcMpris).toBool());
@@ -1098,6 +1098,7 @@ void SettingsWindow::setFreestanding(bool freestanding)
10981098
ui->playerRememberFilePosition->setVisible(yes);
10991099
ui->playerRememberLastPlaylist->setVisible(false /*yes*/);
11001100
ui->playerRememberWindowGeometry->setVisible(yes);
1101+
ui->playerRememberPanels->setVisible(yes);
11011102
ui->playerRememberPanScanZoom->setVisible(false /*yes*/);
11021103
ui->playerHistoryBox->setEnabled(yes);
11031104
ui->webTcpIpBox->setEnabled(yes);

settingswindow.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class SettingsWindow : public QWidget
9090
void rememberFilePosition(bool yes);
9191
void rememberSelectedPlaylist(bool yes);
9292
void rememberWindowGeometry(bool yes);
93+
void rememberPanels(bool yes);
9394
void rememberPanNScan(bool yes);
9495

9596
void mprisIpc(bool enabled);

settingswindow.ui

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,16 @@
234234
</property>
235235
</widget>
236236
</item>
237+
<item>
238+
<widget class="QCheckBox" name="playerRememberPanels">
239+
<property name="text">
240+
<string>Remember panels state</string>
241+
</property>
242+
<property name="checked">
243+
<bool>true</bool>
244+
</property>
245+
</widget>
246+
</item>
237247
<item>
238248
<widget class="QCheckBox" name="playerRememberPanScanZoom">
239249
<property name="text">

0 commit comments

Comments
 (0)