diff --git a/src/citra_qt/configuration/configure_general.cpp b/src/citra_qt/configuration/configure_general.cpp index 606414e20..f80b00760 100644 --- a/src/citra_qt/configuration/configure_general.cpp +++ b/src/citra_qt/configuration/configure_general.cpp @@ -60,12 +60,14 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent) }); connect(ui->change_screenshot_dir, &QToolButton::clicked, this, [this] { + ui->change_screenshot_dir->setEnabled(false); const QString dir_path = QFileDialog::getExistingDirectory( this, tr("Select Screenshot Directory"), ui->screenshot_dir_path->text(), QFileDialog::ShowDirsOnly); if (!dir_path.isEmpty()) { ui->screenshot_dir_path->setText(dir_path); } + ui->change_screenshot_dir->setEnabled(true); }); } @@ -135,12 +137,14 @@ void ConfigureGeneral::SetConfiguration() { } void ConfigureGeneral::ResetDefaults() { + ui->button_reset_defaults->setEnabled(false); QMessageBox::StandardButton answer = QMessageBox::question( this, tr("Azahar"), tr("Are you sure you want to reset your settings and close Azahar?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); if (answer == QMessageBox::No) { + ui->button_reset_defaults->setEnabled(true); return; } diff --git a/src/citra_qt/configuration/configure_input.cpp b/src/citra_qt/configuration/configure_input.cpp index 502c5caba..2cc319968 100644 --- a/src/citra_qt/configuration/configure_input.cpp +++ b/src/citra_qt/configuration/configure_input.cpp @@ -1,4 +1,4 @@ -// Copyright Citra Emulator Project / Lime3DS Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -377,8 +377,10 @@ ConfigureInput::ConfigureInput(Core::System& _system, QWidget* parent) }); connect(ui->buttonMotionTouch, &QPushButton::clicked, this, [this] { + ui->buttonMotionTouch->setEnabled(false); QDialog* motion_touch_dialog = new ConfigureMotionTouch(this); - return motion_touch_dialog->exec(); + motion_touch_dialog->exec(); + ui->buttonMotionTouch->setEnabled(true); }); ui->buttonDelete->setEnabled(ui->profile->count() > 1); @@ -580,9 +582,11 @@ void ConfigureInput::MapFromButton(const Common::ParamPackage& params) { } void ConfigureInput::AutoMap() { + ui->buttonAutoMap->setEnabled(false); if (QMessageBox::information(this, tr("Information"), tr("After pressing OK, press any button on your joystick"), QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Cancel) { + ui->buttonAutoMap->setEnabled(true); return; } input_setter = [this](const Common::ParamPackage& params) { @@ -597,6 +601,7 @@ void ConfigureInput::AutoMap() { } timeout_timer->start(5000); // Cancel after 5 seconds poll_timer->start(200); // Check for new inputs every 200ms + ui->buttonAutoMap->setEnabled(true); } void ConfigureInput::HandleClick(QPushButton* button, @@ -671,13 +676,16 @@ void ConfigureInput::RetranslateUI() { } void ConfigureInput::NewProfile() { + ui->buttonNew->setEnabled(false); const QString name = QInputDialog::getText(this, tr("New Profile"), tr("Enter the name for the new profile.")); if (name.isEmpty()) { + ui->buttonNew->setEnabled(true); return; } if (IsProfileNameDuplicate(name)) { WarnProposedProfileNameIsDuplicate(); + ui->buttonNew->setEnabled(true); return; } @@ -688,12 +696,15 @@ void ConfigureInput::NewProfile() { ui->profile->setCurrentIndex(Settings::values.current_input_profile_index); LoadConfiguration(); ui->buttonDelete->setEnabled(ui->profile->count() > 1); + ui->buttonNew->setEnabled(true); } void ConfigureInput::DeleteProfile() { + ui->buttonDelete->setEnabled(false); const auto answer = QMessageBox::question( this, tr("Delete Profile"), tr("Delete profile %1?").arg(ui->profile->currentText())); if (answer != QMessageBox::Yes) { + ui->buttonDelete->setEnabled(true); return; } const int index = ui->profile->currentIndex(); @@ -705,18 +716,22 @@ void ConfigureInput::DeleteProfile() { } void ConfigureInput::RenameProfile() { + ui->buttonRename->setEnabled(false); const QString new_name = QInputDialog::getText(this, tr("Rename Profile"), tr("New name:")); if (new_name.isEmpty()) { + ui->buttonRename->setEnabled(true); return; } if (IsProfileNameDuplicate(new_name)) { WarnProposedProfileNameIsDuplicate(); + ui->buttonRename->setEnabled(true); return; } ui->profile->setItemText(ui->profile->currentIndex(), new_name); Settings::RenameCurrentProfile(new_name.toStdString()); Settings::SaveProfile(ui->profile->currentIndex()); + ui->buttonRename->setEnabled(true); } bool ConfigureInput::IsProfileNameDuplicate(const QString& name) const { diff --git a/src/citra_qt/configuration/configure_layout.cpp b/src/citra_qt/configuration/configure_layout.cpp index cc78d8948..3f61d6044 100644 --- a/src/citra_qt/configuration/configure_layout.cpp +++ b/src/citra_qt/configuration/configure_layout.cpp @@ -1,4 +1,4 @@ -// Copyright Citra Emulator Project / Lime3DS Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -98,8 +98,10 @@ ConfigureLayout::ConfigureLayout(QWidget* parent) #endif connect(ui->bg_button, &QPushButton::clicked, this, [this] { + ui->bg_button->setEnabled(false); const QColor new_bg_color = QColorDialog::getColor(bg_color); if (!new_bg_color.isValid()) { + ui->bg_button->setEnabled(true); return; } bg_color = new_bg_color; @@ -107,6 +109,7 @@ ConfigureLayout::ConfigureLayout(QWidget* parent) pixmap.fill(bg_color); const QIcon color_icon(pixmap); ui->bg_button->setIcon(color_icon); + ui->bg_button->setEnabled(true); }); } diff --git a/src/citra_qt/configuration/configure_storage.cpp b/src/citra_qt/configuration/configure_storage.cpp index d46cb0614..2346f06c2 100644 --- a/src/citra_qt/configuration/configure_storage.cpp +++ b/src/citra_qt/configuration/configure_storage.cpp @@ -1,4 +1,4 @@ -// Copyright 2021 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -21,6 +21,7 @@ ConfigureStorage::ConfigureStorage(bool is_powered_on_, QWidget* parent) }); connect(ui->change_nand_dir, &QPushButton::clicked, this, [this]() { + ui->change_nand_dir->setEnabled(false); const QString dir_path = QFileDialog::getExistingDirectory( this, tr("Select NAND Directory"), QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir)), @@ -29,6 +30,7 @@ ConfigureStorage::ConfigureStorage(bool is_powered_on_, QWidget* parent) FileUtil::UpdateUserPath(FileUtil::UserPath::NANDDir, dir_path.toStdString()); SetConfiguration(); } + ui->change_nand_dir->setEnabled(true); }); connect(ui->open_sdmc_dir, &QPushButton::clicked, []() { @@ -37,6 +39,7 @@ ConfigureStorage::ConfigureStorage(bool is_powered_on_, QWidget* parent) }); connect(ui->change_sdmc_dir, &QPushButton::clicked, this, [this]() { + ui->change_sdmc_dir->setEnabled(false); const QString dir_path = QFileDialog::getExistingDirectory( this, tr("Select SDMC Directory"), QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir)), @@ -45,6 +48,7 @@ ConfigureStorage::ConfigureStorage(bool is_powered_on_, QWidget* parent) FileUtil::UpdateUserPath(FileUtil::UserPath::SDMCDir, dir_path.toStdString()); SetConfiguration(); } + ui->change_sdmc_dir->setEnabled(true); }); connect(ui->toggle_virtual_sd, &QCheckBox::clicked, this, [this]() { diff --git a/src/citra_qt/configuration/configure_system.cpp b/src/citra_qt/configuration/configure_system.cpp index 4ce036394..c0be39424 100644 --- a/src/citra_qt/configuration/configure_system.cpp +++ b/src/citra_qt/configuration/configure_system.cpp @@ -238,7 +238,7 @@ ConfigureSystem::ConfigureSystem(Core::System& system_, QWidget* parent) connect(ui->button_regenerate_console_id, &QPushButton::clicked, this, &ConfigureSystem::RefreshConsoleID); connect(ui->button_regenerate_mac, &QPushButton::clicked, this, &ConfigureSystem::RefreshMAC); - connect(ui->button_linked_console, &QPushButton::clicked, this, + connect(ui->button_unlink_console, &QPushButton::clicked, this, &ConfigureSystem::UnlinkConsole); connect(ui->combo_country, qOverload(&QComboBox::currentIndexChanged), this, [this](int index) { @@ -557,15 +557,17 @@ void ConfigureSystem::UpdateInitTicks(int init_ticks_type) { } void ConfigureSystem::RefreshConsoleID() { + ui->button_regenerate_console_id->setEnabled(false); QMessageBox::StandardButton reply; QString warning_text = tr("This will replace your current virtual 3DS console ID with a new one. " "Your current virtual 3DS console ID will not be recoverable. " "This might have unexpected effects in applications. This might fail " "if you use an outdated config save. Continue?"); - reply = QMessageBox::critical(this, tr("Warning"), warning_text, - QMessageBox::No | QMessageBox::Yes); + reply = + QMessageBox::warning(this, tr("Warning"), warning_text, QMessageBox::No | QMessageBox::Yes); if (reply == QMessageBox::No) { + ui->button_regenerate_console_id->setEnabled(true); return; } @@ -574,9 +576,11 @@ void ConfigureSystem::RefreshConsoleID() { cfg->UpdateConfigNANDSavegame(); ui->label_console_id->setText( tr("Console ID: 0x%1").arg(QString::number(console_id, 16).toUpper())); + ui->button_regenerate_console_id->setEnabled(true); } void ConfigureSystem::RefreshMAC() { + ui->button_regenerate_mac->setEnabled(false); QMessageBox::StandardButton reply; QString warning_text = tr("This will replace your current MAC address with a new one. " "It is not recommended to do this if you got the MAC address from " @@ -584,14 +588,17 @@ void ConfigureSystem::RefreshMAC() { reply = QMessageBox::warning(this, tr("Warning"), warning_text, QMessageBox::No | QMessageBox::Yes); if (reply == QMessageBox::No) { + ui->button_regenerate_mac->setEnabled(true); return; } mac_address = Service::CFG::GenerateRandomMAC(); ui->label_mac->setText(tr("MAC: %1").arg(QString::fromStdString(mac_address))); + ui->button_regenerate_mac->setEnabled(true); } void ConfigureSystem::UnlinkConsole() { + ui->button_unlink_console->setEnabled(false); QMessageBox::StandardButton reply; QString warning_text = tr("This action will unlink your real console from Azahar, with the following " @@ -603,11 +610,13 @@ void ConfigureSystem::UnlinkConsole() { reply = QMessageBox::warning(this, tr("Warning"), warning_text, QMessageBox::No | QMessageBox::Yes); if (reply == QMessageBox::No) { + ui->button_unlink_console->setEnabled(true); return; } HW::UniqueData::UnlinkConsole(); RefreshSecureDataStatus(); + ui->button_unlink_console->setEnabled(true); } void ConfigureSystem::CheckCountryValid(u8 country) { diff --git a/src/citra_qt/configuration/configure_system.ui b/src/citra_qt/configuration/configure_system.ui index e46f90c85..244fb3c5f 100644 --- a/src/citra_qt/configuration/configure_system.ui +++ b/src/citra_qt/configuration/configure_system.ui @@ -590,7 +590,7 @@ online features (if installed) - + 0