mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 23:06:43 +08:00 
			
		
		
		
	Merge pull request #2499 from lioncash/translate
yuzu/configuration: Specify string conversions explicitly
This commit is contained in:
		
						commit
						0adb54abc1
					
				| @ -16,21 +16,21 @@ ConfigureAudio::ConfigureAudio(QWidget* parent) | ||||
|     ui->setupUi(this); | ||||
| 
 | ||||
|     ui->output_sink_combo_box->clear(); | ||||
|     ui->output_sink_combo_box->addItem("auto"); | ||||
|     ui->output_sink_combo_box->addItem(QString::fromUtf8(AudioCore::auto_device_name)); | ||||
|     for (const char* id : AudioCore::GetSinkIDs()) { | ||||
|         ui->output_sink_combo_box->addItem(id); | ||||
|         ui->output_sink_combo_box->addItem(QString::fromUtf8(id)); | ||||
|     } | ||||
| 
 | ||||
|     connect(ui->volume_slider, &QSlider::valueChanged, this, | ||||
|             &ConfigureAudio::setVolumeIndicatorText); | ||||
| 
 | ||||
|     this->setConfiguration(); | ||||
|     connect(ui->output_sink_combo_box, | ||||
|             static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, | ||||
|     connect(ui->output_sink_combo_box, qOverload<int>(&QComboBox::currentIndexChanged), this, | ||||
|             &ConfigureAudio::updateAudioDevices); | ||||
| 
 | ||||
|     ui->output_sink_combo_box->setEnabled(!Core::System::GetInstance().IsPoweredOn()); | ||||
|     ui->audio_device_combo_box->setEnabled(!Core::System::GetInstance().IsPoweredOn()); | ||||
|     const bool is_powered_on = Core::System::GetInstance().IsPoweredOn(); | ||||
|     ui->output_sink_combo_box->setEnabled(!is_powered_on); | ||||
|     ui->audio_device_combo_box->setEnabled(!is_powered_on); | ||||
| } | ||||
| 
 | ||||
| ConfigureAudio::~ConfigureAudio() = default; | ||||
| @ -94,7 +94,7 @@ void ConfigureAudio::applyConfiguration() { | ||||
| 
 | ||||
| void ConfigureAudio::updateAudioDevices(int sink_index) { | ||||
|     ui->audio_device_combo_box->clear(); | ||||
|     ui->audio_device_combo_box->addItem(AudioCore::auto_device_name); | ||||
|     ui->audio_device_combo_box->addItem(QString::fromUtf8(AudioCore::auto_device_name)); | ||||
| 
 | ||||
|     const std::string sink_id = ui->output_sink_combo_box->itemText(sink_index).toStdString(); | ||||
|     for (const auto& device : AudioCore::GetDeviceListForSink(sink_id)) { | ||||
|  | ||||
| @ -100,13 +100,15 @@ void ConfigureGameList::RetranslateUI() { | ||||
| 
 | ||||
| void ConfigureGameList::InitializeIconSizeComboBox() { | ||||
|     for (const auto& size : default_icon_sizes) { | ||||
|         ui->icon_size_combobox->addItem(size.second, size.first); | ||||
|         ui->icon_size_combobox->addItem(QString::fromUtf8(size.second), size.first); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void ConfigureGameList::InitializeRowComboBoxes() { | ||||
|     for (std::size_t i = 0; i < row_text_names.size(); ++i) { | ||||
|         ui->row_1_text_combobox->addItem(row_text_names[i], QVariant::fromValue(i)); | ||||
|         ui->row_2_text_combobox->addItem(row_text_names[i], QVariant::fromValue(i)); | ||||
|         const QString row_text_name = QString::fromUtf8(row_text_names[i]); | ||||
| 
 | ||||
|         ui->row_1_text_combobox->addItem(row_text_name, QVariant::fromValue(i)); | ||||
|         ui->row_2_text_combobox->addItem(row_text_name, QVariant::fromValue(i)); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -14,7 +14,8 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent) | ||||
|     ui->setupUi(this); | ||||
| 
 | ||||
|     for (const auto& theme : UISettings::themes) { | ||||
|         ui->theme_combobox->addItem(theme.first, theme.second); | ||||
|         ui->theme_combobox->addItem(QString::fromUtf8(theme.first), | ||||
|                                     QString::fromUtf8(theme.second)); | ||||
|     } | ||||
| 
 | ||||
|     this->setConfiguration(); | ||||
|  | ||||
| @ -75,8 +75,8 @@ ConfigureInput::ConfigureInput(QWidget* parent) | ||||
|     }; | ||||
| 
 | ||||
|     for (auto* controller_box : players_controller) { | ||||
|         controller_box->addItems({"None", "Pro Controller", "Dual Joycons", "Single Right Joycon", | ||||
|                                   "Single Left Joycon"}); | ||||
|         controller_box->addItems({tr("None"), tr("Pro Controller"), tr("Dual Joycons"), | ||||
|                                   tr("Single Right Joycon"), tr("Single Left Joycon")}); | ||||
|     } | ||||
| 
 | ||||
|     this->loadConfiguration(); | ||||
| @ -85,9 +85,10 @@ ConfigureInput::ConfigureInput(QWidget* parent) | ||||
|     connect(ui->restore_defaults_button, &QPushButton::pressed, this, | ||||
|             &ConfigureInput::restoreDefaults); | ||||
| 
 | ||||
|     for (auto* enabled : players_controller) | ||||
|     for (auto* enabled : players_controller) { | ||||
|         connect(enabled, QOverload<int>::of(&QComboBox::currentIndexChanged), this, | ||||
|                 &ConfigureInput::updateUIEnabled); | ||||
|     } | ||||
|     connect(ui->use_docked_mode, &QCheckBox::stateChanged, this, &ConfigureInput::updateUIEnabled); | ||||
|     connect(ui->handheld_connected, &QCheckBox::stateChanged, this, | ||||
|             &ConfigureInput::updateUIEnabled); | ||||
| @ -147,10 +148,12 @@ void ConfigureInput::updateUIEnabled() { | ||||
|     bool hit_disabled = false; | ||||
|     for (auto* player : players_controller) { | ||||
|         player->setDisabled(hit_disabled); | ||||
|         if (hit_disabled) | ||||
|         if (hit_disabled) { | ||||
|             player->setCurrentIndex(0); | ||||
|         if (!hit_disabled && player->currentIndex() == 0) | ||||
|         } | ||||
|         if (!hit_disabled && player->currentIndex() == 0) { | ||||
|             hit_disabled = true; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     for (std::size_t i = 0; i < players_controller.size(); ++i) { | ||||
|  | ||||
| @ -45,7 +45,7 @@ static QString GetKeyName(int key_code) { | ||||
|     case Qt::Key_Alt: | ||||
|         return QObject::tr("Alt"); | ||||
|     case Qt::Key_Meta: | ||||
|         return ""; | ||||
|         return {}; | ||||
|     default: | ||||
|         return QKeySequence(key_code).toString(); | ||||
|     } | ||||
| @ -65,46 +65,70 @@ static void SetAnalogButton(const Common::ParamPackage& input_param, | ||||
| static QString ButtonToText(const Common::ParamPackage& param) { | ||||
|     if (!param.Has("engine")) { | ||||
|         return QObject::tr("[not set]"); | ||||
|     } else if (param.Get("engine", "") == "keyboard") { | ||||
|         return GetKeyName(param.Get("code", 0)); | ||||
|     } else if (param.Get("engine", "") == "sdl") { | ||||
|         if (param.Has("hat")) { | ||||
|             return QString(QObject::tr("Hat %1 %2")) | ||||
|                 .arg(param.Get("hat", "").c_str(), param.Get("direction", "").c_str()); | ||||
|         } | ||||
|         if (param.Has("axis")) { | ||||
|             return QString(QObject::tr("Axis %1%2")) | ||||
|                 .arg(param.Get("axis", "").c_str(), param.Get("direction", "").c_str()); | ||||
|         } | ||||
|         if (param.Has("button")) { | ||||
|             return QString(QObject::tr("Button %1")).arg(param.Get("button", "").c_str()); | ||||
|         } | ||||
|         return QString(); | ||||
|     } else { | ||||
|         return QObject::tr("[unknown]"); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
|     if (param.Get("engine", "") == "keyboard") { | ||||
|         return GetKeyName(param.Get("code", 0)); | ||||
|     } | ||||
| 
 | ||||
|     if (param.Get("engine", "") == "sdl") { | ||||
|         if (param.Has("hat")) { | ||||
|             const QString hat_str = QString::fromStdString(param.Get("hat", "")); | ||||
|             const QString direction_str = QString::fromStdString(param.Get("direction", "")); | ||||
| 
 | ||||
|             return QObject::tr("Hat %1 %2").arg(hat_str, direction_str); | ||||
|         } | ||||
| 
 | ||||
|         if (param.Has("axis")) { | ||||
|             const QString axis_str = QString::fromStdString(param.Get("axis", "")); | ||||
|             const QString direction_str = QString::fromStdString(param.Get("direction", "")); | ||||
| 
 | ||||
|             return QObject::tr("Axis %1%2").arg(axis_str, direction_str); | ||||
|         } | ||||
| 
 | ||||
|         if (param.Has("button")) { | ||||
|             const QString button_str = QString::fromStdString(param.Get("button", "")); | ||||
| 
 | ||||
|             return QObject::tr("Button %1").arg(button_str); | ||||
|         } | ||||
| 
 | ||||
|         return {}; | ||||
|     } | ||||
| 
 | ||||
|     return QObject::tr("[unknown]"); | ||||
| } | ||||
| 
 | ||||
| static QString AnalogToText(const Common::ParamPackage& param, const std::string& dir) { | ||||
|     if (!param.Has("engine")) { | ||||
|         return QObject::tr("[not set]"); | ||||
|     } else if (param.Get("engine", "") == "analog_from_button") { | ||||
|     } | ||||
| 
 | ||||
|     if (param.Get("engine", "") == "analog_from_button") { | ||||
|         return ButtonToText(Common::ParamPackage{param.Get(dir, "")}); | ||||
|     } else if (param.Get("engine", "") == "sdl") { | ||||
|     } | ||||
| 
 | ||||
|     if (param.Get("engine", "") == "sdl") { | ||||
|         if (dir == "modifier") { | ||||
|             return QString(QObject::tr("[unused]")); | ||||
|             return QObject::tr("[unused]"); | ||||
|         } | ||||
| 
 | ||||
|         if (dir == "left" || dir == "right") { | ||||
|             return QString(QObject::tr("Axis %1")).arg(param.Get("axis_x", "").c_str()); | ||||
|         } else if (dir == "up" || dir == "down") { | ||||
|             return QString(QObject::tr("Axis %1")).arg(param.Get("axis_y", "").c_str()); | ||||
|             const QString axis_x_str = QString::fromStdString(param.Get("axis_x", "")); | ||||
| 
 | ||||
|             return QObject::tr("Axis %1").arg(axis_x_str); | ||||
|         } | ||||
|         return QString(); | ||||
|     } else { | ||||
|         return QObject::tr("[unknown]"); | ||||
| 
 | ||||
|         if (dir == "up" || dir == "down") { | ||||
|             const QString axis_y_str = QString::fromStdString(param.Get("axis_y", "")); | ||||
| 
 | ||||
|             return QObject::tr("Axis %1").arg(axis_y_str); | ||||
|         } | ||||
| 
 | ||||
|         return {}; | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
|     return QObject::tr("[unknown]"); | ||||
| } | ||||
| 
 | ||||
| ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_index, bool debug) | ||||
|     : QDialog(parent), ui(std::make_unique<Ui::ConfigureInputPlayer>()), player_index(player_index), | ||||
| @ -214,38 +238,42 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i | ||||
|     analog_map_stick = {ui->buttonLStickAnalog, ui->buttonRStickAnalog}; | ||||
| 
 | ||||
|     for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; button_id++) { | ||||
|         if (!button_map[button_id]) | ||||
|         auto* const button = button_map[button_id]; | ||||
|         if (button == nullptr) { | ||||
|             continue; | ||||
|         button_map[button_id]->setContextMenuPolicy(Qt::CustomContextMenu); | ||||
|         connect(button_map[button_id], &QPushButton::released, [=]() { | ||||
|         } | ||||
| 
 | ||||
|         button->setContextMenuPolicy(Qt::CustomContextMenu); | ||||
|         connect(button, &QPushButton::released, [=] { | ||||
|             handleClick( | ||||
|                 button_map[button_id], | ||||
|                 [=](const Common::ParamPackage& params) { buttons_param[button_id] = params; }, | ||||
|                 InputCommon::Polling::DeviceType::Button); | ||||
|         }); | ||||
|         connect(button_map[button_id], &QPushButton::customContextMenuRequested, | ||||
|                 [=](const QPoint& menu_location) { | ||||
|                     QMenu context_menu; | ||||
|                     context_menu.addAction(tr("Clear"), [&] { | ||||
|                         buttons_param[button_id].Clear(); | ||||
|                         button_map[button_id]->setText(tr("[not set]")); | ||||
|                     }); | ||||
|                     context_menu.addAction(tr("Restore Default"), [&] { | ||||
|                         buttons_param[button_id] = Common::ParamPackage{ | ||||
|                             InputCommon::GenerateKeyboardParam(Config::default_buttons[button_id])}; | ||||
|                         button_map[button_id]->setText(ButtonToText(buttons_param[button_id])); | ||||
|                     }); | ||||
|                     context_menu.exec(button_map[button_id]->mapToGlobal(menu_location)); | ||||
|                 }); | ||||
|         connect(button, &QPushButton::customContextMenuRequested, [=](const QPoint& menu_location) { | ||||
|             QMenu context_menu; | ||||
|             context_menu.addAction(tr("Clear"), [&] { | ||||
|                 buttons_param[button_id].Clear(); | ||||
|                 button_map[button_id]->setText(tr("[not set]")); | ||||
|             }); | ||||
|             context_menu.addAction(tr("Restore Default"), [&] { | ||||
|                 buttons_param[button_id] = Common::ParamPackage{ | ||||
|                     InputCommon::GenerateKeyboardParam(Config::default_buttons[button_id])}; | ||||
|                 button_map[button_id]->setText(ButtonToText(buttons_param[button_id])); | ||||
|             }); | ||||
|             context_menu.exec(button_map[button_id]->mapToGlobal(menu_location)); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { | ||||
|         for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { | ||||
|             if (!analog_map_buttons[analog_id][sub_button_id]) | ||||
|             auto* const analog_button = analog_map_buttons[analog_id][sub_button_id]; | ||||
|             if (analog_button == nullptr) { | ||||
|                 continue; | ||||
|             analog_map_buttons[analog_id][sub_button_id]->setContextMenuPolicy( | ||||
|                 Qt::CustomContextMenu); | ||||
|             connect(analog_map_buttons[analog_id][sub_button_id], &QPushButton::released, [=]() { | ||||
|             } | ||||
| 
 | ||||
|             analog_button->setContextMenuPolicy(Qt::CustomContextMenu); | ||||
|             connect(analog_button, &QPushButton::released, [=]() { | ||||
|                 handleClick(analog_map_buttons[analog_id][sub_button_id], | ||||
|                             [=](const Common::ParamPackage& params) { | ||||
|                                 SetAnalogButton(params, analogs_param[analog_id], | ||||
| @ -253,8 +281,8 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i | ||||
|                             }, | ||||
|                             InputCommon::Polling::DeviceType::Button); | ||||
|             }); | ||||
|             connect(analog_map_buttons[analog_id][sub_button_id], | ||||
|                     &QPushButton::customContextMenuRequested, [=](const QPoint& menu_location) { | ||||
|             connect(analog_button, &QPushButton::customContextMenuRequested, | ||||
|                     [=](const QPoint& menu_location) { | ||||
|                         QMenu context_menu; | ||||
|                         context_menu.addAction(tr("Clear"), [&] { | ||||
|                             analogs_param[analog_id].Erase(analog_sub_buttons[sub_button_id]); | ||||
| @ -272,7 +300,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i | ||||
|                             menu_location)); | ||||
|                     }); | ||||
|         } | ||||
|         connect(analog_map_stick[analog_id], &QPushButton::released, [=]() { | ||||
|         connect(analog_map_stick[analog_id], &QPushButton::released, [=] { | ||||
|             QMessageBox::information(this, tr("Information"), | ||||
|                                      tr("After pressing OK, first move your joystick horizontally, " | ||||
|                                         "and then vertically.")); | ||||
| @ -351,7 +379,7 @@ void ConfigureInputPlayer::OnControllerButtonClick(int i) { | ||||
|         return; | ||||
|     controller_colors[i] = new_bg_color; | ||||
|     controller_color_buttons[i]->setStyleSheet( | ||||
|         QString("QPushButton { background-color: %1 }").arg(controller_colors[i].name())); | ||||
|         QStringLiteral("QPushButton { background-color: %1 }").arg(controller_colors[i].name())); | ||||
| } | ||||
| 
 | ||||
| void ConfigureInputPlayer::loadConfiguration() { | ||||
| @ -388,7 +416,8 @@ void ConfigureInputPlayer::loadConfiguration() { | ||||
| 
 | ||||
|     for (std::size_t i = 0; i < colors.size(); ++i) { | ||||
|         controller_color_buttons[i]->setStyleSheet( | ||||
|             QString("QPushButton { background-color: %1 }").arg(controller_colors[i].name())); | ||||
|             QStringLiteral("QPushButton { background-color: %1 }") | ||||
|                 .arg(controller_colors[i].name())); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -410,14 +439,22 @@ void ConfigureInputPlayer::restoreDefaults() { | ||||
| 
 | ||||
| void ConfigureInputPlayer::ClearAll() { | ||||
|     for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; button_id++) { | ||||
|         if (button_map[button_id] && button_map[button_id]->isEnabled()) | ||||
|             buttons_param[button_id].Clear(); | ||||
|         const auto* const button = button_map[button_id]; | ||||
|         if (button == nullptr || !button->isEnabled()) { | ||||
|             continue; | ||||
|         } | ||||
| 
 | ||||
|         buttons_param[button_id].Clear(); | ||||
|     } | ||||
| 
 | ||||
|     for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { | ||||
|         for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { | ||||
|             if (analog_map_buttons[analog_id][sub_button_id] && | ||||
|                 analog_map_buttons[analog_id][sub_button_id]->isEnabled()) | ||||
|                 analogs_param[analog_id].Erase(analog_sub_buttons[sub_button_id]); | ||||
|             const auto* const analog_button = analog_map_buttons[analog_id][sub_button_id]; | ||||
|             if (analog_button == nullptr || !analog_button->isEnabled()) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             analogs_param[analog_id].Erase(analog_sub_buttons[sub_button_id]); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -431,10 +468,14 @@ void ConfigureInputPlayer::updateButtonLabels() { | ||||
| 
 | ||||
|     for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { | ||||
|         for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { | ||||
|             if (analog_map_buttons[analog_id][sub_button_id]) { | ||||
|                 analog_map_buttons[analog_id][sub_button_id]->setText( | ||||
|                     AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id])); | ||||
|             auto* const analog_button = analog_map_buttons[analog_id][sub_button_id]; | ||||
| 
 | ||||
|             if (analog_button == nullptr) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             analog_button->setText( | ||||
|                 AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id])); | ||||
|         } | ||||
|         analog_map_stick[analog_id]->setText(tr("Set Analog Stick")); | ||||
|     } | ||||
|  | ||||
| @ -25,7 +25,7 @@ static QString GetKeyName(int key_code) { | ||||
|     case Qt::Key_Alt: | ||||
|         return QObject::tr("Alt"); | ||||
|     case Qt::Key_Meta: | ||||
|         return ""; | ||||
|         return {}; | ||||
|     default: | ||||
|         return QKeySequence(key_code).toString(); | ||||
|     } | ||||
| @ -34,24 +34,36 @@ static QString GetKeyName(int key_code) { | ||||
| static QString ButtonToText(const Common::ParamPackage& param) { | ||||
|     if (!param.Has("engine")) { | ||||
|         return QObject::tr("[not set]"); | ||||
|     } else if (param.Get("engine", "") == "keyboard") { | ||||
|         return GetKeyName(param.Get("code", 0)); | ||||
|     } else if (param.Get("engine", "") == "sdl") { | ||||
|         if (param.Has("hat")) { | ||||
|             return QString(QObject::tr("Hat %1 %2")) | ||||
|                 .arg(param.Get("hat", "").c_str(), param.Get("direction", "").c_str()); | ||||
|         } | ||||
|         if (param.Has("axis")) { | ||||
|             return QString(QObject::tr("Axis %1%2")) | ||||
|                 .arg(param.Get("axis", "").c_str(), param.Get("direction", "").c_str()); | ||||
|         } | ||||
|         if (param.Has("button")) { | ||||
|             return QString(QObject::tr("Button %1")).arg(param.Get("button", "").c_str()); | ||||
|         } | ||||
|         return QString(); | ||||
|     } else { | ||||
|         return QObject::tr("[unknown]"); | ||||
|     } | ||||
| 
 | ||||
|     if (param.Get("engine", "") == "keyboard") { | ||||
|         return GetKeyName(param.Get("code", 0)); | ||||
|     } | ||||
| 
 | ||||
|     if (param.Get("engine", "") == "sdl") { | ||||
|         if (param.Has("hat")) { | ||||
|             const QString hat_str = QString::fromStdString(param.Get("hat", "")); | ||||
|             const QString direction_str = QString::fromStdString(param.Get("direction", "")); | ||||
| 
 | ||||
|             return QObject::tr("Hat %1 %2").arg(hat_str, direction_str); | ||||
|         } | ||||
| 
 | ||||
|         if (param.Has("axis")) { | ||||
|             const QString axis_str = QString::fromStdString(param.Get("axis", "")); | ||||
|             const QString direction_str = QString::fromStdString(param.Get("direction", "")); | ||||
| 
 | ||||
|             return QObject::tr("Axis %1%2").arg(axis_str, direction_str); | ||||
|         } | ||||
| 
 | ||||
|         if (param.Has("button")) { | ||||
|             const QString button_str = QString::fromStdString(param.Get("button", "")); | ||||
| 
 | ||||
|             return QObject::tr("Button %1").arg(button_str); | ||||
|         } | ||||
|         return {}; | ||||
|     } | ||||
| 
 | ||||
|     return QObject::tr("[unknown]"); | ||||
| } | ||||
| 
 | ||||
| ConfigureMouseAdvanced::ConfigureMouseAdvanced(QWidget* parent) | ||||
| @ -65,30 +77,31 @@ ConfigureMouseAdvanced::ConfigureMouseAdvanced(QWidget* parent) | ||||
|     }; | ||||
| 
 | ||||
|     for (int button_id = 0; button_id < Settings::NativeMouseButton::NumMouseButtons; button_id++) { | ||||
|         if (!button_map[button_id]) | ||||
|         auto* const button = button_map[button_id]; | ||||
|         if (button == nullptr) { | ||||
|             continue; | ||||
|         button_map[button_id]->setContextMenuPolicy(Qt::CustomContextMenu); | ||||
|         connect(button_map[button_id], &QPushButton::released, [=]() { | ||||
|         } | ||||
| 
 | ||||
|         button->setContextMenuPolicy(Qt::CustomContextMenu); | ||||
|         connect(button, &QPushButton::released, [=] { | ||||
|             handleClick( | ||||
|                 button_map[button_id], | ||||
|                 [=](const Common::ParamPackage& params) { buttons_param[button_id] = params; }, | ||||
|                 InputCommon::Polling::DeviceType::Button); | ||||
|         }); | ||||
|         connect(button_map[button_id], &QPushButton::customContextMenuRequested, | ||||
|                 [=](const QPoint& menu_location) { | ||||
|                     QMenu context_menu; | ||||
|                     context_menu.addAction(tr("Clear"), [&] { | ||||
|                         buttons_param[button_id].Clear(); | ||||
|                         button_map[button_id]->setText(tr("[not set]")); | ||||
|                     }); | ||||
|                     context_menu.addAction(tr("Restore Default"), [&] { | ||||
|                         buttons_param[button_id] = | ||||
|                             Common::ParamPackage{InputCommon::GenerateKeyboardParam( | ||||
|                                 Config::default_mouse_buttons[button_id])}; | ||||
|                         button_map[button_id]->setText(ButtonToText(buttons_param[button_id])); | ||||
|                     }); | ||||
|                     context_menu.exec(button_map[button_id]->mapToGlobal(menu_location)); | ||||
|                 }); | ||||
|         connect(button, &QPushButton::customContextMenuRequested, [=](const QPoint& menu_location) { | ||||
|             QMenu context_menu; | ||||
|             context_menu.addAction(tr("Clear"), [&] { | ||||
|                 buttons_param[button_id].Clear(); | ||||
|                 button_map[button_id]->setText(tr("[not set]")); | ||||
|             }); | ||||
|             context_menu.addAction(tr("Restore Default"), [&] { | ||||
|                 buttons_param[button_id] = Common::ParamPackage{ | ||||
|                     InputCommon::GenerateKeyboardParam(Config::default_mouse_buttons[button_id])}; | ||||
|                 button_map[button_id]->setText(ButtonToText(buttons_param[button_id])); | ||||
|             }); | ||||
|             context_menu.exec(button_map[button_id]->mapToGlobal(menu_location)); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     connect(ui->buttonClearAll, &QPushButton::released, [this] { ClearAll(); }); | ||||
| @ -138,8 +151,10 @@ void ConfigureMouseAdvanced::restoreDefaults() { | ||||
| 
 | ||||
| void ConfigureMouseAdvanced::ClearAll() { | ||||
|     for (int i = 0; i < Settings::NativeMouseButton::NumMouseButtons; ++i) { | ||||
|         if (button_map[i] && button_map[i]->isEnabled()) | ||||
|         const auto* const button = button_map[i]; | ||||
|         if (button != nullptr && button->isEnabled()) { | ||||
|             buttons_param[i].Clear(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     updateButtonLabels(); | ||||
|  | ||||
| @ -88,15 +88,15 @@ void ConfigurePerGameGeneral::loadFromFile(FileSys::VirtualFile file) { | ||||
| } | ||||
| 
 | ||||
| void ConfigurePerGameGeneral::loadConfiguration() { | ||||
|     if (file == nullptr) | ||||
|     if (file == nullptr) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     const auto loader = Loader::GetLoader(file); | ||||
| 
 | ||||
|     ui->display_title_id->setText(fmt::format("{:016X}", title_id).c_str()); | ||||
|     ui->display_title_id->setText(QString::fromStdString(fmt::format("{:016X}", title_id))); | ||||
| 
 | ||||
|     FileSys::PatchManager pm{title_id}; | ||||
|     const auto control = pm.GetControlMetadata(); | ||||
|     const auto loader = Loader::GetLoader(file); | ||||
| 
 | ||||
|     if (control.first != nullptr) { | ||||
|         ui->display_version->setText(QString::fromStdString(control.first->GetVersionString())); | ||||
| @ -142,8 +142,10 @@ void ConfigurePerGameGeneral::loadConfiguration() { | ||||
|     const auto& disabled = Settings::values.disabled_addons[title_id]; | ||||
| 
 | ||||
|     for (const auto& patch : pm.GetPatchVersionNames(update_raw)) { | ||||
|         QStandardItem* first_item = new QStandardItem; | ||||
|         const auto name = QString::fromStdString(patch.first).replace("[D] ", ""); | ||||
|         const auto name = | ||||
|             QString::fromStdString(patch.first).replace(QStringLiteral("[D] "), QString{}); | ||||
| 
 | ||||
|         auto* const first_item = new QStandardItem; | ||||
|         first_item->setText(name); | ||||
|         first_item->setCheckable(true); | ||||
| 
 | ||||
|  | ||||
| @ -98,7 +98,7 @@ ConfigureProfileManager ::ConfigureProfileManager(QWidget* parent) | ||||
|     tree_view->setContextMenuPolicy(Qt::NoContextMenu); | ||||
| 
 | ||||
|     item_model->insertColumns(0, 1); | ||||
|     item_model->setHeaderData(0, Qt::Horizontal, "Users"); | ||||
|     item_model->setHeaderData(0, Qt::Horizontal, tr("Users")); | ||||
| 
 | ||||
|     // We must register all custom types with the Qt Automoc system so that we are able to use it
 | ||||
|     // with signals/slots. In this case, QList falls under the umbrells of custom types.
 | ||||
|  | ||||
| @ -66,8 +66,9 @@ void ConfigureSystem::setConfiguration() { | ||||
|     ui->rng_seed_checkbox->setChecked(Settings::values.rng_seed.has_value()); | ||||
|     ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.has_value()); | ||||
| 
 | ||||
|     const auto rng_seed = | ||||
|         QString("%1").arg(Settings::values.rng_seed.value_or(0), 8, 16, QLatin1Char{'0'}).toUpper(); | ||||
|     const auto rng_seed = QStringLiteral("%1") | ||||
|                               .arg(Settings::values.rng_seed.value_or(0), 8, 16, QLatin1Char{'0'}) | ||||
|                               .toUpper(); | ||||
|     ui->rng_seed_edit->setText(rng_seed); | ||||
| 
 | ||||
|     ui->custom_rtc_checkbox->setChecked(Settings::values.custom_rtc.has_value()); | ||||
|  | ||||
| @ -78,12 +78,16 @@ void ConfigureWeb::RefreshTelemetryID() { | ||||
| void ConfigureWeb::OnLoginChanged() { | ||||
|     if (ui->edit_username->text().isEmpty() && ui->edit_token->text().isEmpty()) { | ||||
|         user_verified = true; | ||||
|         ui->label_username_verified->setPixmap(QIcon::fromTheme("checked").pixmap(16)); | ||||
|         ui->label_token_verified->setPixmap(QIcon::fromTheme("checked").pixmap(16)); | ||||
| 
 | ||||
|         const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("checked")).pixmap(16); | ||||
|         ui->label_username_verified->setPixmap(pixmap); | ||||
|         ui->label_token_verified->setPixmap(pixmap); | ||||
|     } else { | ||||
|         user_verified = false; | ||||
|         ui->label_username_verified->setPixmap(QIcon::fromTheme("failed").pixmap(16)); | ||||
|         ui->label_token_verified->setPixmap(QIcon::fromTheme("failed").pixmap(16)); | ||||
| 
 | ||||
|         const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("failed")).pixmap(16); | ||||
|         ui->label_username_verified->setPixmap(pixmap); | ||||
|         ui->label_token_verified->setPixmap(pixmap); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -101,11 +105,15 @@ void ConfigureWeb::OnLoginVerified() { | ||||
|     ui->button_verify_login->setText(tr("Verify")); | ||||
|     if (verify_watcher.result()) { | ||||
|         user_verified = true; | ||||
|         ui->label_username_verified->setPixmap(QIcon::fromTheme("checked").pixmap(16)); | ||||
|         ui->label_token_verified->setPixmap(QIcon::fromTheme("checked").pixmap(16)); | ||||
| 
 | ||||
|         const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("checked")).pixmap(16); | ||||
|         ui->label_username_verified->setPixmap(pixmap); | ||||
|         ui->label_token_verified->setPixmap(pixmap); | ||||
|     } else { | ||||
|         ui->label_username_verified->setPixmap(QIcon::fromTheme("failed").pixmap(16)); | ||||
|         ui->label_token_verified->setPixmap(QIcon::fromTheme("failed").pixmap(16)); | ||||
|         const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("failed")).pixmap(16); | ||||
|         ui->label_username_verified->setPixmap(pixmap); | ||||
|         ui->label_token_verified->setPixmap(pixmap); | ||||
| 
 | ||||
|         QMessageBox::critical( | ||||
|             this, tr("Verification failed"), | ||||
|             tr("Verification failed. Check that you have entered your username and token " | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user