Qt: Save UI settings and geometry safely on closeEvent

This commit is contained in:
Eladash 2023-06-20 19:22:59 +03:00 committed by Megamouse
parent f87db1ac14
commit 593f850693
12 changed files with 38 additions and 10 deletions

View File

@ -230,6 +230,9 @@ bool debugger_frame::eventFilter(QObject* object, QEvent* event)
void debugger_frame::closeEvent(QCloseEvent* event) void debugger_frame::closeEvent(QCloseEvent* event)
{ {
SaveSettings();
m_gui_settings->sync();
QDockWidget::closeEvent(event); QDockWidget::closeEvent(event);
Q_EMIT DebugFrameClosed(); Q_EMIT DebugFrameClosed();
} }

View File

@ -222,8 +222,6 @@ game_list_frame::~game_list_frame()
WaitAndAbortRepaintThreads(); WaitAndAbortRepaintThreads();
gui::utils::stop_future_watcher(m_parsing_watcher, true); gui::utils::stop_future_watcher(m_parsing_watcher, true);
gui::utils::stop_future_watcher(m_refresh_watcher, true); gui::utils::stop_future_watcher(m_refresh_watcher, true);
SaveSettings();
} }
void game_list_frame::OnColClicked(int col) void game_list_frame::OnColClicked(int col)
@ -2226,6 +2224,9 @@ void game_list_frame::FocusAndSelectFirstEntryIfNoneIs()
void game_list_frame::closeEvent(QCloseEvent *event) void game_list_frame::closeEvent(QCloseEvent *event)
{ {
SaveSettings();
m_gui_settings->sync();
QDockWidget::closeEvent(event); QDockWidget::closeEvent(event);
Q_EMIT GameListFrameClosed(); Q_EMIT GameListFrameClosed();
} }

View File

@ -109,7 +109,6 @@ main_window::main_window(std::shared_ptr<gui_settings> gui_settings, std::shared
main_window::~main_window() main_window::~main_window()
{ {
SaveWindowState();
} }
/* An init method is used so that RPCS3App can create the necessary connects before calling init (specifically the stylesheet connect). /* An init method is used so that RPCS3App can create the necessary connects before calling init (specifically the stylesheet connect).
@ -1667,6 +1666,8 @@ void main_window::SaveWindowState() const
m_game_list_frame->SaveSettings(); m_game_list_frame->SaveSettings();
// Save splitter state // Save splitter state
m_debugger_frame->SaveSettings(); m_debugger_frame->SaveSettings();
m_gui_settings->sync();
} }
void main_window::RepaintThumbnailIcons() void main_window::RepaintThumbnailIcons()
@ -3204,6 +3205,7 @@ void main_window::closeEvent(QCloseEvent* closeEvent)
Emu.GracefulShutdown(false); Emu.GracefulShutdown(false);
} }
SaveWindowState();
Emu.Quit(true); Emu.Quit(true);
} }

View File

@ -220,18 +220,22 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
ChangeProfile(ui->chooseProfile->currentText()); ChangeProfile(ui->chooseProfile->currentText());
} }
void pad_settings_dialog::closeEvent(QCloseEvent* event)
{
m_gui_settings->SetValue(gui::pads_geometry, saveGeometry());
m_gui_settings->sync();
QDialog::closeEvent(event);
}
pad_settings_dialog::~pad_settings_dialog() pad_settings_dialog::~pad_settings_dialog()
{ {
if (m_input_thread) if (m_input_thread)
{ {
m_input_thread_state = input_thread_state::pausing; m_input_thread_state = input_thread_state::pausing;
auto& thread = *m_input_thread; *m_input_thread = thread_state::finished;
thread = thread_state::aborting;
thread();
} }
m_gui_settings->SetValue(gui::pads_geometry, saveGeometry());
if (!Emu.IsStopped()) if (!Emu.IsStopped())
{ {
pad::reset(Emu.GetTitleID()); pad::reset(Emu.GetTitleID());

View File

@ -236,4 +236,5 @@ protected:
void mouseMoveEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override; void wheelEvent(QWheelEvent *event) override;
bool eventFilter(QObject* object, QEvent* event) override; bool eventFilter(QObject* object, QEvent* event) override;
void closeEvent(QCloseEvent* event) override;
}; };

View File

@ -151,11 +151,18 @@ patch_manager_dialog::patch_manager_dialog(std::shared_ptr<gui_settings> gui_set
download_update(true, false); download_update(true, false);
} }
patch_manager_dialog::~patch_manager_dialog() void patch_manager_dialog::closeEvent(QCloseEvent* event)
{ {
// Save gui settings // Save gui settings
m_gui_settings->SetValue(gui::pm_geometry, saveGeometry()); m_gui_settings->SetValue(gui::pm_geometry, saveGeometry());
m_gui_settings->SetValue(gui::pm_splitter_state, ui->splitter->saveState()); m_gui_settings->SetValue(gui::pm_splitter_state, ui->splitter->saveState());
m_gui_settings->sync();
QDialog::closeEvent(event);
}
patch_manager_dialog::~patch_manager_dialog()
{
} }
int patch_manager_dialog::exec() int patch_manager_dialog::exec()

View File

@ -83,4 +83,5 @@ protected:
void dragEnterEvent(QDragEnterEvent* event) override; void dragEnterEvent(QDragEnterEvent* event) override;
void dragMoveEvent(QDragMoveEvent* event) override; void dragMoveEvent(QDragMoveEvent* event) override;
void dragLeaveEvent(QDragLeaveEvent* event) override; void dragLeaveEvent(QDragLeaveEvent* event) override;
void closeEvent(QCloseEvent* event) override;
}; };

View File

@ -267,6 +267,7 @@ void rsx_debugger::closeEvent(QCloseEvent* event)
m_gui_settings->SetValue(gui::rsx_states, states); m_gui_settings->SetValue(gui::rsx_states, states);
m_gui_settings->SetValue(gui::rsx_geometry, saveGeometry()); m_gui_settings->SetValue(gui::rsx_geometry, saveGeometry());
m_gui_settings->sync();
QDialog::closeEvent(event); QDialog::closeEvent(event);
} }

View File

@ -589,6 +589,7 @@ void save_manager_dialog::SetIconSize(int size)
void save_manager_dialog::closeEvent(QCloseEvent *event) void save_manager_dialog::closeEvent(QCloseEvent *event)
{ {
m_gui_settings->SetValue(gui::sd_geometry, saveGeometry()); m_gui_settings->SetValue(gui::sd_geometry, saveGeometry());
m_gui_settings->sync();
QDialog::closeEvent(event); QDialog::closeEvent(event);
} }

View File

@ -2365,9 +2365,14 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
} }
} }
settings_dialog::~settings_dialog() void settings_dialog::closeEvent(QCloseEvent* event)
{ {
m_gui_settings->SetValue(gui::cfg_geometry, saveGeometry()); m_gui_settings->SetValue(gui::cfg_geometry, saveGeometry());
m_gui_settings->sync();
}
settings_dialog::~settings_dialog()
{
} }
void settings_dialog::EnhanceSlider(emu_settings_type settings_type, QSlider* slider, QLabel* label, const QString& label_text) const void settings_dialog::EnhanceSlider(emu_settings_type settings_type, QSlider* slider, QLabel* label, const QString& label_text) const

View File

@ -64,4 +64,5 @@ private:
void SubscribeDescription(QLabel* description); void SubscribeDescription(QLabel* description);
void SubscribeTooltip(QObject* object, const QString& tooltip); void SubscribeTooltip(QObject* object, const QString& tooltip);
bool eventFilter(QObject* object, QEvent* event) override; bool eventFilter(QObject* object, QEvent* event) override;
void closeEvent(QCloseEvent* event) override;
}; };

View File

@ -1224,6 +1224,7 @@ void trophy_manager_dialog::closeEvent(QCloseEvent *event)
m_gui_settings->SetValue(gui::tr_splitterState, m_splitter->saveState()); m_gui_settings->SetValue(gui::tr_splitterState, m_splitter->saveState());
m_gui_settings->SetValue(gui::tr_games_state, m_game_table->horizontalHeader()->saveState()); m_gui_settings->SetValue(gui::tr_games_state, m_game_table->horizontalHeader()->saveState());
m_gui_settings->SetValue(gui::tr_trophy_state, m_trophy_table->horizontalHeader()->saveState()); m_gui_settings->SetValue(gui::tr_trophy_state, m_trophy_table->horizontalHeader()->saveState());
m_gui_settings->sync();
QWidget::closeEvent(event); QWidget::closeEvent(event);
} }