diff --git a/src/qt_gui/cheats_patches.cpp b/src/qt_gui/cheats_patches.cpp index 597729a45..bf7877f18 100644 --- a/src/qt_gui/cheats_patches.cpp +++ b/src/qt_gui/cheats_patches.cpp @@ -26,8 +26,10 @@ #include #include #include -#include + #include "cheats_patches.h" +#include "common/config.h" +#include "common/logging/log.h" #include "common/memory_patcher.h" #include "common/path_util.h" #include "core/module.h" @@ -92,7 +94,7 @@ void CheatsPatches::setupUI() { gameVersionLabel->setAlignment(Qt::AlignLeft); gameInfoLayout->addWidget(gameVersionLabel); - if (m_gameSize.left(4) != "0.00") { + if (Config::GetLoadGameSizeEnabled()) { QLabel* gameSizeLabel = new QLabel(tr("Size: ") + m_gameSize); gameSizeLabel->setAlignment(Qt::AlignLeft); gameInfoLayout->addWidget(gameSizeLabel); diff --git a/src/qt_gui/gui_context_menus.h b/src/qt_gui/gui_context_menus.h index deb35de8d..1a059a850 100644 --- a/src/qt_gui/gui_context_menus.h +++ b/src/qt_gui/gui_context_menus.h @@ -84,7 +84,9 @@ public: copyMenu->addAction(copyName); copyMenu->addAction(copySerial); copyMenu->addAction(copyVersion); - copyMenu->addAction(copySize); + if (Config::GetLoadGameSizeEnabled()) { + copyMenu->addAction(copySize); + } copyMenu->addAction(copyNameAll); menu.addMenu(copyMenu); @@ -362,12 +364,18 @@ public: } if (selected == copyNameAll) { + QString GameSizeEnabled; + if (Config::GetLoadGameSizeEnabled()) { + GameSizeEnabled = " | Size:" + QString::fromStdString(m_games[itemID].size); + } + QClipboard* clipboard = QGuiApplication::clipboard(); - QString combinedText = QString("Name:%1 | Serial:%2 | Version:%3 | Size:%4") + QString combinedText = QString("Name:%1 | Serial:%2 | Version:%3%4") .arg(QString::fromStdString(m_games[itemID].name)) .arg(QString::fromStdString(m_games[itemID].serial)) .arg(QString::fromStdString(m_games[itemID].version)) - .arg(QString::fromStdString(m_games[itemID].size)); + .arg(GameSizeEnabled); + clipboard->setText(combinedText); } diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 0da6428aa..96bd1d9e5 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -290,6 +290,27 @@ void MainWindow::CreateConnects() { connect(settingsDialog, &SettingsDialog::CompatibilityChanged, this, &MainWindow::RefreshGameTable); + connect(settingsDialog, &SettingsDialog::accepted, this, &MainWindow::RefreshGameTable); + connect(settingsDialog, &SettingsDialog::rejected, this, &MainWindow::RefreshGameTable); + connect(settingsDialog, &SettingsDialog::close, this, &MainWindow::RefreshGameTable); + + connect(settingsDialog, &SettingsDialog::BackgroundOpacityChanged, this, + [this](int opacity) { + Config::setBackgroundImageOpacity(opacity); + if (m_game_list_frame) { + QTableWidgetItem* current = m_game_list_frame->GetCurrentItem(); + if (current) { + m_game_list_frame->SetListBackgroundImage(current); + } + } + if (m_game_grid_frame) { + if (m_game_grid_frame->IsValidCellSelected()) { + m_game_grid_frame->SetGridBackgroundImage(m_game_grid_frame->crtRow, + m_game_grid_frame->crtColumn); + } + } + }); + settingsDialog->exec(); }); @@ -302,6 +323,10 @@ void MainWindow::CreateConnects() { connect(settingsDialog, &SettingsDialog::CompatibilityChanged, this, &MainWindow::RefreshGameTable); + connect(settingsDialog, &SettingsDialog::accepted, this, &MainWindow::RefreshGameTable); + connect(settingsDialog, &SettingsDialog::rejected, this, &MainWindow::RefreshGameTable); + connect(settingsDialog, &SettingsDialog::close, this, &MainWindow::RefreshGameTable); + connect(settingsDialog, &SettingsDialog::BackgroundOpacityChanged, this, [this](int opacity) { Config::setBackgroundImageOpacity(opacity); diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index bebb16c9a..ee88bbbab 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -63,6 +63,9 @@ QMap logTypeMap; QMap fullscreenModeMap; QMap chooseHomeTabMap; +int backgroundImageOpacitySlider_backup; +int bgm_volume_backup; + SettingsDialog::SettingsDialog(std::span physical_devices, std::shared_ptr m_compat_info, QWidget* parent) @@ -115,6 +118,7 @@ SettingsDialog::SettingsDialog(std::span physical_devices, connect(ui->buttonBox, &QDialogButtonBox::clicked, this, [this, config_dir](QAbstractButton* button) { if (button == ui->buttonBox->button(QDialogButtonBox::Save)) { + is_saving = true; UpdateSettings(); Config::save(config_dir / "config.toml"); QWidget::close(); @@ -126,6 +130,10 @@ SettingsDialog::SettingsDialog(std::span physical_devices, Config::save(config_dir / "config.toml"); LoadValuesFromConfig(); } else if (button == ui->buttonBox->button(QDialogButtonBox::Close)) { + ui->backgroundImageOpacitySlider->setValue(backgroundImageOpacitySlider_backup); + emit BackgroundOpacityChanged(backgroundImageOpacitySlider_backup); + ui->BGMVolumeSlider->setValue(bgm_volume_backup); + BackgroundMusicPlayer::getInstance().setVolume(bgm_volume_backup); ResetInstallFolders(); } if (Common::Log::IsActive()) { @@ -197,6 +205,12 @@ SettingsDialog::SettingsDialog(std::span physical_devices, // Gui TAB { + connect(ui->backgroundImageOpacitySlider, &QSlider::valueChanged, this, + [this](int value) { emit BackgroundOpacityChanged(value); }); + + connect(ui->BGMVolumeSlider, &QSlider::valueChanged, this, + [](int value) { BackgroundMusicPlayer::getInstance().setVolume(value); }); + connect(ui->chooseHomeTabComboBox, &QComboBox::currentTextChanged, this, [](const QString& hometab) { Config::setChooseHomeTab(hometab.toStdString()); }); @@ -330,6 +344,16 @@ SettingsDialog::SettingsDialog(std::span physical_devices, } } +void SettingsDialog::closeEvent(QCloseEvent* event) { + if (!is_saving) { + ui->backgroundImageOpacitySlider->setValue(backgroundImageOpacitySlider_backup); + emit BackgroundOpacityChanged(backgroundImageOpacitySlider_backup); + ui->BGMVolumeSlider->setValue(bgm_volume_backup); + BackgroundMusicPlayer::getInstance().setVolume(bgm_volume_backup); + } + QDialog::closeEvent(event); +} + void SettingsDialog::LoadValuesFromConfig() { std::filesystem::path userdir = Common::FS::GetUserPath(Common::FS::PathType::UserDir); @@ -460,6 +484,9 @@ void SettingsDialog::LoadValuesFromConfig() { ResetInstallFolders(); ui->backgroundImageOpacitySlider->setValue(Config::getBackgroundImageOpacity()); ui->showBackgroundImageCheckBox->setChecked(Config::getShowBackgroundImage()); + + backgroundImageOpacitySlider_backup = Config::getBackgroundImageOpacity(); + bgm_volume_backup = Config::getBGMvolume(); } void SettingsDialog::InitializeEmulatorLanguages() { diff --git a/src/qt_gui/settings_dialog.h b/src/qt_gui/settings_dialog.h index c440351f6..09aa2b855 100644 --- a/src/qt_gui/settings_dialog.h +++ b/src/qt_gui/settings_dialog.h @@ -42,6 +42,7 @@ private: void InitializeEmulatorLanguages(); void OnLanguageChanged(int index); void OnCursorStateChanged(s16 index); + void closeEvent(QCloseEvent* event) override; std::unique_ptr ui; @@ -50,4 +51,6 @@ private: QString defaultTextEdit; int initialHeight; + + bool is_saving = false; };