Qt: fix handler not found in pad settings after changing language

This commit is contained in:
Megamouse 2025-03-20 00:04:54 +01:00
parent 971fd40353
commit 24b6b6cad5

View file

@ -27,7 +27,6 @@
LOG_CHANNEL(cfg_log, "CFG"); LOG_CHANNEL(cfg_log, "CFG");
inline std::string sstr(const QString& _in) { return _in.toStdString(); } inline std::string sstr(const QString& _in) { return _in.toStdString(); }
constexpr auto qstr = QString::fromStdString;
cfg_input_configurations g_cfg_input_configs; cfg_input_configurations g_cfg_input_configs;
@ -77,7 +76,7 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
if (game) if (game)
{ {
m_title_id = game->serial; m_title_id = game->serial;
setWindowTitle(tr("Gamepad Settings: [%0] %1").arg(qstr(game->serial)).arg(qstr(game->name).simplified())); setWindowTitle(tr("Gamepad Settings: [%0] %1").arg(QString::fromStdString(game->serial)).arg(QString::fromStdString(game->name).simplified()));
} }
else else
{ {
@ -89,13 +88,13 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
if (m_title_id.empty()) if (m_title_id.empty())
{ {
const QString input_config_dir = qstr(rpcs3::utils::get_input_config_dir(m_title_id)); const QString input_config_dir = QString::fromStdString(rpcs3::utils::get_input_config_dir(m_title_id));
QStringList config_files = gui::utils::get_dir_entries(QDir(input_config_dir), QStringList() << "*.yml"); QStringList config_files = gui::utils::get_dir_entries(QDir(input_config_dir), QStringList() << "*.yml");
QString active_config_file = qstr(g_cfg_input_configs.active_configs.get_value(g_cfg_input_configs.global_key)); QString active_config_file = QString::fromStdString(g_cfg_input_configs.active_configs.get_value(g_cfg_input_configs.global_key));
if (!config_files.contains(active_config_file)) if (!config_files.contains(active_config_file))
{ {
const QString default_config_file = qstr(g_cfg_input_configs.default_config); const QString default_config_file = QString::fromStdString(g_cfg_input_configs.default_config);
if (!config_files.contains(default_config_file) && CreateConfigFile(input_config_dir, default_config_file)) if (!config_files.contains(default_config_file) && CreateConfigFile(input_config_dir, default_config_file))
{ {
@ -114,7 +113,7 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
} }
else else
{ {
ui->chooseConfig->addItem(qstr(m_title_id)); ui->chooseConfig->addItem(QString::fromStdString(m_title_id));
ui->gb_config_files->setEnabled(false); ui->gb_config_files->setEnabled(false);
} }
@ -673,7 +672,7 @@ void pad_settings_dialog::ReloadButtons()
auto updateButton = [this](int id, QPushButton* button, cfg::string* cfg_text) auto updateButton = [this](int id, QPushButton* button, cfg::string* cfg_text)
{ {
const QString text = qstr(*cfg_text); const QString text = QString::fromStdString(*cfg_text);
m_cfg_entries.insert(std::make_pair(id, pad_button{cfg_text, *cfg_text, text})); m_cfg_entries.insert(std::make_pair(id, pad_button{cfg_text, *cfg_text, text}));
button->setText(text); button->setText(text);
}; };
@ -1228,7 +1227,7 @@ void pad_settings_dialog::UpdateLabels(bool is_reset)
if (is_reset) if (is_reset)
{ {
button.keys = *button.cfg_text; button.keys = *button.cfg_text;
button.text = qstr(button.keys); button.text = QString::fromStdString(button.keys);
} }
// The button has to contain at least one character, because it would be square'ish otherwise // The button has to contain at least one character, because it would be square'ish otherwise
@ -1493,7 +1492,7 @@ void pad_settings_dialog::ChangeHandler()
case pad_handler::skateboard: case pad_handler::skateboard:
case pad_handler::move: case pad_handler::move:
{ {
const QString name_string = qstr(m_handler->name_string()); const QString name_string = QString::fromStdString(m_handler->name_string());
for (usz i = 1; i <= m_handler->max_devices(); i++) // Controllers 1-n in GUI for (usz i = 1; i <= m_handler->max_devices(); i++) // Controllers 1-n in GUI
{ {
const QString device_name = name_string + QString::number(i); const QString device_name = name_string + QString::number(i);
@ -1628,15 +1627,15 @@ void pad_settings_dialog::ChangeConfig(const QString& config_file)
} }
const u32 player_id = GetPlayerIndex(); const u32 player_id = GetPlayerIndex();
const std::string handler = fmt::format("%s", g_cfg_input.player[player_id]->handler.get()); const QString q_handler = QString::fromStdString(g_cfg_input.player[player_id]->handler.to_string());
if (const QString q_handler = qstr(handler); ui->chooseHandler->findText(q_handler) >= 0) if (const int index = ui->chooseHandler->findData(q_handler); index >= 0)
{ {
ui->chooseHandler->setCurrentText(q_handler); ui->chooseHandler->setCurrentIndex(index);
} }
else else
{ {
cfg_log.error("Handler '%s' not found in handler dropdown.", handler); cfg_log.error("Handler '%s' not found in handler dropdown.", q_handler);
} }
// Force Refresh // Force Refresh
@ -1773,7 +1772,7 @@ void pad_settings_dialog::AddConfigFile()
QMessageBox::warning(this, tr("Error"), tr("Please choose a non-existing name")); QMessageBox::warning(this, tr("Error"), tr("Please choose a non-existing name"));
continue; continue;
} }
if (CreateConfigFile(qstr(rpcs3::utils::get_input_config_dir(m_title_id)), config_name)) if (CreateConfigFile(QString::fromStdString(rpcs3::utils::get_input_config_dir(m_title_id)), config_name))
{ {
ui->chooseConfig->addItem(config_name); ui->chooseConfig->addItem(config_name);
ui->chooseConfig->setCurrentText(config_name); ui->chooseConfig->setCurrentText(config_name);
@ -1799,12 +1798,12 @@ void pad_settings_dialog::RefreshHandlers()
const std::vector<std::string> str_inputs = g_cfg_input.player[0]->handler.to_list(); const std::vector<std::string> str_inputs = g_cfg_input.player[0]->handler.to_list();
for (usz i = 0; i < str_inputs.size(); i++) for (usz i = 0; i < str_inputs.size(); i++)
{ {
const QString item_data = qstr(str_inputs[i]); const QString item_data = QString::fromStdString(str_inputs[i]);
ui->chooseHandler->addItem(GetLocalizedPadHandler(item_data, static_cast<pad_handler>(i)), QVariant(item_data)); ui->chooseHandler->addItem(GetLocalizedPadHandler(item_data, static_cast<pad_handler>(i)), QVariant(item_data));
} }
const auto& handler = g_cfg_input.player[player_id]->handler; const QString item_data = QString::fromStdString(g_cfg_input.player[player_id]->handler.to_string());
ui->chooseHandler->setCurrentText(GetLocalizedPadHandler(qstr(handler.to_string()), handler)); ui->chooseHandler->setCurrentIndex(ui->chooseHandler->findData(QVariant(item_data)));
} }
ui->chooseHandler->blockSignals(false); ui->chooseHandler->blockSignals(false);
@ -1932,7 +1931,9 @@ void pad_settings_dialog::SaveExit()
m_gui_settings->ShowConfirmationBox( m_gui_settings->ShowConfirmationBox(
tr("Warning!"), tr("Warning!"),
tr("The %0 button <b>%1</b> of <b>Player %2</b> was assigned at least twice.<br>Please consider adjusting the configuration.<br><br>Continue anyway?<br>") tr("The %0 button <b>%1</b> of <b>Player %2</b> was assigned at least twice.<br>Please consider adjusting the configuration.<br><br>Continue anyway?<br>")
.arg(qstr(g_cfg_input.player[player_id]->handler.to_string())).arg(qstr(key)).arg(player_id + 1), .arg(QString::fromStdString(g_cfg_input.player[player_id]->handler.to_string()))
.arg(QString::fromStdString(key))
.arg(player_id + 1),
gui::ib_same_buttons, &result, this); gui::ib_same_buttons, &result, this);
if (result == QMessageBox::No) if (result == QMessageBox::No)