mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-12 12:45:56 +00:00
qt: save gui settings to separate file (#2984)
* initial save classes for gui save file * fixup * some more settings passed to the new saving file * even more variables parsing * more settings * fixup * more settings * more settings * clang fix * fixed wrong setting * more setting * more setting * added ca_ES * rename to general_settings * added set-addon-folder in main * fixup * fixup2 * added sr_CS * Update CMakeLists.txt --------- Co-authored-by: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com>
This commit is contained in:
parent
34d0d85c15
commit
a1d6cd15f4
19 changed files with 383 additions and 370 deletions
|
@ -32,6 +32,9 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
|||
ui->setupUi(this);
|
||||
installEventFilter(this);
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
m_gui_settings = std::make_shared<gui_settings>();
|
||||
ui->toggleLabelsAct->setChecked(
|
||||
m_gui_settings->GetValue(gui::mw_showLabelsUnderIcons).toBool());
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {
|
||||
|
@ -139,7 +142,7 @@ void MainWindow::PauseGame() {
|
|||
|
||||
void MainWindow::toggleLabelsUnderIcons() {
|
||||
bool showLabels = ui->toggleLabelsAct->isChecked();
|
||||
Config::setShowLabelsUnderIcons();
|
||||
m_gui_settings->SetValue(gui::mw_showLabelsUnderIcons, showLabels);
|
||||
UpdateToolbarLabels();
|
||||
if (isGameRunning) {
|
||||
UpdateToolbarButtons();
|
||||
|
@ -290,21 +293,21 @@ void MainWindow::CreateDockWindows() {
|
|||
setCentralWidget(phCentralWidget);
|
||||
|
||||
m_dock_widget.reset(new QDockWidget(tr("Game List"), this));
|
||||
m_game_list_frame.reset(new GameListFrame(m_game_info, m_compat_info, this));
|
||||
m_game_list_frame.reset(new GameListFrame(m_gui_settings, m_game_info, m_compat_info, this));
|
||||
m_game_list_frame->setObjectName("gamelist");
|
||||
m_game_grid_frame.reset(new GameGridFrame(m_game_info, m_compat_info, this));
|
||||
m_game_grid_frame.reset(new GameGridFrame(m_gui_settings, m_game_info, m_compat_info, this));
|
||||
m_game_grid_frame->setObjectName("gamegridlist");
|
||||
m_elf_viewer.reset(new ElfViewer(this));
|
||||
m_elf_viewer->setObjectName("elflist");
|
||||
|
||||
int table_mode = Config::getTableMode();
|
||||
int table_mode = m_gui_settings->GetValue(gui::gl_mode).toInt();
|
||||
int slider_pos = 0;
|
||||
if (table_mode == 0) { // List
|
||||
m_game_grid_frame->hide();
|
||||
m_elf_viewer->hide();
|
||||
m_game_list_frame->show();
|
||||
m_dock_widget->setWidget(m_game_list_frame.data());
|
||||
slider_pos = Config::getSliderPosition();
|
||||
slider_pos = m_gui_settings->GetValue(gui::gl_slider_pos).toInt();
|
||||
ui->sizeSlider->setSliderPosition(slider_pos); // set slider pos at start;
|
||||
isTableList = true;
|
||||
} else if (table_mode == 1) { // Grid
|
||||
|
@ -312,7 +315,7 @@ void MainWindow::CreateDockWindows() {
|
|||
m_elf_viewer->hide();
|
||||
m_game_grid_frame->show();
|
||||
m_dock_widget->setWidget(m_game_grid_frame.data());
|
||||
slider_pos = Config::getSliderPositionGrid();
|
||||
slider_pos = m_gui_settings->GetValue(gui::gg_slider_pos).toInt();
|
||||
ui->sizeSlider->setSliderPosition(slider_pos); // set slider pos at start;
|
||||
isTableList = false;
|
||||
} else {
|
||||
|
@ -356,11 +359,11 @@ void MainWindow::LoadGameLists() {
|
|||
#ifdef ENABLE_UPDATER
|
||||
void MainWindow::CheckUpdateMain(bool checkSave) {
|
||||
if (checkSave) {
|
||||
if (!Config::autoUpdate()) {
|
||||
if (!m_gui_settings->GetValue(gui::gen_checkForUpdates).toBool()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
auto checkUpdate = new CheckUpdate(false);
|
||||
auto checkUpdate = new CheckUpdate(m_gui_settings, false);
|
||||
checkUpdate->exec();
|
||||
}
|
||||
#endif
|
||||
|
@ -380,13 +383,13 @@ void MainWindow::CreateConnects() {
|
|||
m_game_list_frame->icon_size =
|
||||
48 + value; // 48 is the minimum icon size to use due to text disappearing.
|
||||
m_game_list_frame->ResizeIcons(48 + value);
|
||||
Config::setIconSize(48 + value);
|
||||
Config::setSliderPosition(value);
|
||||
m_gui_settings->SetValue(gui::gl_icon_size, 48 + value);
|
||||
m_gui_settings->SetValue(gui::gl_slider_pos, value);
|
||||
} else {
|
||||
m_game_grid_frame->icon_size = 69 + value;
|
||||
m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false);
|
||||
Config::setIconSizeGrid(69 + value);
|
||||
Config::setSliderPositionGrid(value);
|
||||
m_gui_settings->SetValue(gui::gg_icon_size, 69 + value);
|
||||
m_gui_settings->SetValue(gui::gg_slider_pos, value);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -404,7 +407,7 @@ void MainWindow::CreateConnects() {
|
|||
&MainWindow::StartGame);
|
||||
|
||||
connect(ui->configureAct, &QAction::triggered, this, [this]() {
|
||||
auto settingsDialog = new SettingsDialog(m_compat_info, this);
|
||||
auto settingsDialog = new SettingsDialog(m_gui_settings, m_compat_info, this);
|
||||
|
||||
connect(settingsDialog, &SettingsDialog::LanguageChanged, this,
|
||||
&MainWindow::OnLanguageChanged);
|
||||
|
@ -418,7 +421,8 @@ void MainWindow::CreateConnects() {
|
|||
|
||||
connect(settingsDialog, &SettingsDialog::BackgroundOpacityChanged, this,
|
||||
[this](int opacity) {
|
||||
Config::setBackgroundImageOpacity(opacity);
|
||||
m_gui_settings->SetValue(gui::gl_backgroundImageOpacity,
|
||||
std::clamp(opacity, 0, 100));
|
||||
if (m_game_list_frame) {
|
||||
QTableWidgetItem* current = m_game_list_frame->GetCurrentItem();
|
||||
if (current) {
|
||||
|
@ -437,7 +441,7 @@ void MainWindow::CreateConnects() {
|
|||
});
|
||||
|
||||
connect(ui->settingsButton, &QPushButton::clicked, this, [this]() {
|
||||
auto settingsDialog = new SettingsDialog(m_compat_info, this);
|
||||
auto settingsDialog = new SettingsDialog(m_gui_settings, m_compat_info, this);
|
||||
|
||||
connect(settingsDialog, &SettingsDialog::LanguageChanged, this,
|
||||
&MainWindow::OnLanguageChanged);
|
||||
|
@ -451,7 +455,8 @@ void MainWindow::CreateConnects() {
|
|||
|
||||
connect(settingsDialog, &SettingsDialog::BackgroundOpacityChanged, this,
|
||||
[this](int opacity) {
|
||||
Config::setBackgroundImageOpacity(opacity);
|
||||
m_gui_settings->SetValue(gui::gl_backgroundImageOpacity,
|
||||
std::clamp(opacity, 0, 100));
|
||||
if (m_game_list_frame) {
|
||||
QTableWidgetItem* current = m_game_list_frame->GetCurrentItem();
|
||||
if (current) {
|
||||
|
@ -481,7 +486,7 @@ void MainWindow::CreateConnects() {
|
|||
|
||||
#ifdef ENABLE_UPDATER
|
||||
connect(ui->updaterAct, &QAction::triggered, this, [this]() {
|
||||
auto checkUpdate = new CheckUpdate(true);
|
||||
auto checkUpdate = new CheckUpdate(m_gui_settings, true);
|
||||
checkUpdate->exec();
|
||||
});
|
||||
#endif
|
||||
|
@ -496,13 +501,13 @@ void MainWindow::CreateConnects() {
|
|||
m_game_list_frame->icon_size =
|
||||
36; // 36 is the minimum icon size to use due to text disappearing.
|
||||
ui->sizeSlider->setValue(0); // icone_size - 36
|
||||
Config::setIconSize(36);
|
||||
Config::setSliderPosition(0);
|
||||
m_gui_settings->SetValue(gui::gl_icon_size, 36);
|
||||
m_gui_settings->SetValue(gui::gl_slider_pos, 0);
|
||||
} else {
|
||||
m_game_grid_frame->icon_size = 69;
|
||||
ui->sizeSlider->setValue(0); // icone_size - 36
|
||||
Config::setIconSizeGrid(69);
|
||||
Config::setSliderPositionGrid(0);
|
||||
m_gui_settings->SetValue(gui::gg_icon_size, 69);
|
||||
m_gui_settings->SetValue(gui::gg_slider_pos, 9);
|
||||
m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false);
|
||||
}
|
||||
});
|
||||
|
@ -511,13 +516,13 @@ void MainWindow::CreateConnects() {
|
|||
if (isTableList) {
|
||||
m_game_list_frame->icon_size = 64;
|
||||
ui->sizeSlider->setValue(28);
|
||||
Config::setIconSize(64);
|
||||
Config::setSliderPosition(28);
|
||||
m_gui_settings->SetValue(gui::gl_icon_size, 64);
|
||||
m_gui_settings->SetValue(gui::gl_slider_pos, 28);
|
||||
} else {
|
||||
m_game_grid_frame->icon_size = 97;
|
||||
ui->sizeSlider->setValue(28);
|
||||
Config::setIconSizeGrid(97);
|
||||
Config::setSliderPositionGrid(28);
|
||||
m_gui_settings->SetValue(gui::gg_icon_size, 97);
|
||||
m_gui_settings->SetValue(gui::gg_slider_pos, 28);
|
||||
m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false);
|
||||
}
|
||||
});
|
||||
|
@ -526,13 +531,13 @@ void MainWindow::CreateConnects() {
|
|||
if (isTableList) {
|
||||
m_game_list_frame->icon_size = 128;
|
||||
ui->sizeSlider->setValue(92);
|
||||
Config::setIconSize(128);
|
||||
Config::setSliderPosition(92);
|
||||
m_gui_settings->SetValue(gui::gl_icon_size, 128);
|
||||
m_gui_settings->SetValue(gui::gl_slider_pos, 92);
|
||||
} else {
|
||||
m_game_grid_frame->icon_size = 161;
|
||||
ui->sizeSlider->setValue(92);
|
||||
Config::setIconSizeGrid(161);
|
||||
Config::setSliderPositionGrid(92);
|
||||
m_gui_settings->SetValue(gui::gg_icon_size, 161);
|
||||
m_gui_settings->SetValue(gui::gg_slider_pos, 92);
|
||||
m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false);
|
||||
}
|
||||
});
|
||||
|
@ -541,13 +546,13 @@ void MainWindow::CreateConnects() {
|
|||
if (isTableList) {
|
||||
m_game_list_frame->icon_size = 256;
|
||||
ui->sizeSlider->setValue(220);
|
||||
Config::setIconSize(256);
|
||||
Config::setSliderPosition(220);
|
||||
m_gui_settings->SetValue(gui::gl_icon_size, 256);
|
||||
m_gui_settings->SetValue(gui::gl_slider_pos, 220);
|
||||
} else {
|
||||
m_game_grid_frame->icon_size = 256;
|
||||
ui->sizeSlider->setValue(220);
|
||||
Config::setIconSizeGrid(256);
|
||||
Config::setSliderPositionGrid(220);
|
||||
m_gui_settings->SetValue(gui::gg_icon_size, 256);
|
||||
m_gui_settings->SetValue(gui::gg_slider_pos, 220);
|
||||
m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false);
|
||||
}
|
||||
});
|
||||
|
@ -563,8 +568,8 @@ void MainWindow::CreateConnects() {
|
|||
m_game_list_frame->PopulateGameList();
|
||||
}
|
||||
isTableList = true;
|
||||
Config::setTableMode(0);
|
||||
int slider_pos = Config::getSliderPosition();
|
||||
m_gui_settings->SetValue(gui::gl_mode, 0);
|
||||
int slider_pos = m_gui_settings->GetValue(gui::gl_slider_pos).toInt();
|
||||
ui->sizeSlider->setEnabled(true);
|
||||
ui->sizeSlider->setSliderPosition(slider_pos);
|
||||
ui->mw_searchbar->setText("");
|
||||
|
@ -582,8 +587,8 @@ void MainWindow::CreateConnects() {
|
|||
m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false);
|
||||
}
|
||||
isTableList = false;
|
||||
Config::setTableMode(1);
|
||||
int slider_pos_grid = Config::getSliderPositionGrid();
|
||||
m_gui_settings->SetValue(gui::gl_mode, 1);
|
||||
int slider_pos_grid = m_gui_settings->GetValue(gui::gg_slider_pos).toInt();
|
||||
ui->sizeSlider->setEnabled(true);
|
||||
ui->sizeSlider->setSliderPosition(slider_pos_grid);
|
||||
ui->mw_searchbar->setText("");
|
||||
|
@ -598,7 +603,7 @@ void MainWindow::CreateConnects() {
|
|||
m_elf_viewer->show();
|
||||
isTableList = false;
|
||||
ui->sizeSlider->setDisabled(true);
|
||||
Config::setTableMode(2);
|
||||
m_gui_settings->SetValue(gui::gl_mode, 2);
|
||||
SetLastIconSizeBullet();
|
||||
});
|
||||
|
||||
|
@ -840,7 +845,7 @@ void MainWindow::CreateConnects() {
|
|||
void MainWindow::StartGame() {
|
||||
BackgroundMusicPlayer::getInstance().stopMusic();
|
||||
QString gamePath = "";
|
||||
int table_mode = Config::getTableMode();
|
||||
int table_mode = m_gui_settings->GetValue(gui::gl_mode).toInt();
|
||||
if (table_mode == 0) {
|
||||
if (m_game_list_frame->currentItem()) {
|
||||
int itemID = m_game_list_frame->currentItem()->row();
|
||||
|
@ -925,25 +930,25 @@ void MainWindow::RefreshGameTable() {
|
|||
}
|
||||
|
||||
void MainWindow::ConfigureGuiFromSettings() {
|
||||
setGeometry(Config::getMainWindowGeometryX(), Config::getMainWindowGeometryY(),
|
||||
Config::getMainWindowGeometryW(), Config::getMainWindowGeometryH());
|
||||
|
||||
if (!restoreGeometry(m_gui_settings->GetValue(gui::mw_geometry).toByteArray())) {
|
||||
// By default, set the window to 70% of the screen
|
||||
resize(QGuiApplication::primaryScreen()->availableSize() * 0.7);
|
||||
}
|
||||
ui->showGameListAct->setChecked(true);
|
||||
if (Config::getTableMode() == 0) {
|
||||
int table_mode = m_gui_settings->GetValue(gui::gl_mode).toInt();
|
||||
if (table_mode == 0) {
|
||||
ui->setlistModeListAct->setChecked(true);
|
||||
} else if (Config::getTableMode() == 1) {
|
||||
} else if (table_mode == 1) {
|
||||
ui->setlistModeGridAct->setChecked(true);
|
||||
} else if (Config::getTableMode() == 2) {
|
||||
} else if (table_mode == 2) {
|
||||
ui->setlistElfAct->setChecked(true);
|
||||
}
|
||||
BackgroundMusicPlayer::getInstance().setVolume(Config::getBGMvolume());
|
||||
BackgroundMusicPlayer::getInstance().setVolume(
|
||||
m_gui_settings->GetValue(gui::gl_backgroundMusicVolume).toInt());
|
||||
}
|
||||
|
||||
void MainWindow::SaveWindowState() const {
|
||||
Config::setMainWindowWidth(this->width());
|
||||
Config::setMainWindowHeight(this->height());
|
||||
Config::setMainWindowGeometry(this->geometry().x(), this->geometry().y(),
|
||||
this->geometry().width(), this->geometry().height());
|
||||
void MainWindow::SaveWindowState() {
|
||||
m_gui_settings->SetValue(gui::mw_geometry, saveGeometry(), false);
|
||||
}
|
||||
|
||||
void MainWindow::BootGame() {
|
||||
|
@ -1024,8 +1029,8 @@ void MainWindow::SetLastUsedTheme() {
|
|||
|
||||
void MainWindow::SetLastIconSizeBullet() {
|
||||
// set QAction bullet point if applicable
|
||||
int lastSize = Config::getIconSize();
|
||||
int lastSizeGrid = Config::getIconSizeGrid();
|
||||
int lastSize = m_gui_settings->GetValue(gui::gl_icon_size).toInt();
|
||||
int lastSizeGrid = m_gui_settings->GetValue(gui::gg_icon_size).toInt();
|
||||
if (isTableList) {
|
||||
switch (lastSize) {
|
||||
case 36:
|
||||
|
@ -1195,7 +1200,7 @@ bool MainWindow::eventFilter(QObject* obj, QEvent* event) {
|
|||
if (event->type() == QEvent::KeyPress) {
|
||||
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
||||
if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return) {
|
||||
auto tblMode = Config::getTableMode();
|
||||
auto tblMode = m_gui_settings->GetValue(gui::gl_mode).toInt();
|
||||
if (tblMode != 2 && (tblMode != 1 || m_game_grid_frame->IsValidCellSelected())) {
|
||||
StartGame();
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue