Merge pull request #5010 from FearlessTobi/port-2513-new

yuzu/main: Specify string conversions explicitly
This commit is contained in:
James Rowe 2020-01-23 16:29:50 -07:00 committed by GitHub
commit 5d502dfecc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 140 additions and 113 deletions

View file

@ -235,12 +235,15 @@ void Config::ReadControlValues() {
} }
void Config::ReadUtilityValues() { void Config::ReadUtilityValues() {
qt_config->beginGroup("Utility"); qt_config->beginGroup(QStringLiteral("Utility"));
Settings::values.dump_textures = ReadSetting("dump_textures", false).toBool(); Settings::values.dump_textures = ReadSetting(QStringLiteral("dump_textures"), false).toBool();
Settings::values.custom_textures = ReadSetting("custom_textures", false).toBool(); Settings::values.custom_textures =
Settings::values.preload_textures = ReadSetting("preload_textures", false).toBool(); ReadSetting(QStringLiteral("custom_textures"), false).toBool();
Settings::values.use_disk_shader_cache = ReadSetting("use_disk_shader_cache", true).toBool(); Settings::values.preload_textures =
ReadSetting(QStringLiteral("preload_textures"), false).toBool();
Settings::values.use_disk_shader_cache =
ReadSetting(QStringLiteral("use_disk_shader_cache"), true).toBool();
qt_config->endGroup(); qt_config->endGroup();
} }
@ -711,12 +714,13 @@ void Config::SaveControlValues() {
} }
void Config::SaveUtilityValues() { void Config::SaveUtilityValues() {
qt_config->beginGroup("Utility"); qt_config->beginGroup(QStringLiteral("Utility"));
WriteSetting("dump_textures", Settings::values.dump_textures, false); WriteSetting(QStringLiteral("dump_textures"), Settings::values.dump_textures, false);
WriteSetting("custom_textures", Settings::values.custom_textures, false); WriteSetting(QStringLiteral("custom_textures"), Settings::values.custom_textures, false);
WriteSetting("preload_textures", Settings::values.preload_textures, false); WriteSetting(QStringLiteral("preload_textures"), Settings::values.preload_textures, false);
WriteSetting("use_disk_shader_cache", Settings::values.use_disk_shader_cache, true); WriteSetting(QStringLiteral("use_disk_shader_cache"), Settings::values.use_disk_shader_cache,
true);
qt_config->endGroup(); qt_config->endGroup();
} }

View file

@ -277,7 +277,7 @@ void GMainWindow::InitializeWidgets() {
statusBar()->setVisible(true); statusBar()->setVisible(true);
// Removes an ugly inner border from the status bar widgets under Linux // Removes an ugly inner border from the status bar widgets under Linux
setStyleSheet("QStatusBar::item{border: none;}"); setStyleSheet(QStringLiteral("QStatusBar::item{border: none;}"));
QActionGroup* actionGroup_ScreenLayouts = new QActionGroup(this); QActionGroup* actionGroup_ScreenLayouts = new QActionGroup(this);
actionGroup_ScreenLayouts->addAction(ui.action_Screen_Layout_Default); actionGroup_ScreenLayouts->addAction(ui.action_Screen_Layout_Default);
@ -385,26 +385,35 @@ void GMainWindow::InitializeRecentFileMenuActions() {
void GMainWindow::InitializeHotkeys() { void GMainWindow::InitializeHotkeys() {
hotkey_registry.LoadHotkeys(); hotkey_registry.LoadHotkeys();
const QString main_window = QStringLiteral("Main Window");
const QString load_file = QStringLiteral("Load File");
const QString exit_citra = QStringLiteral("Exit Citra");
const QString stop_emulation = QStringLiteral("Stop Emulation");
const QString toggle_filter_bar = QStringLiteral("Toggle Filter Bar");
const QString toggle_status_bar = QStringLiteral("Toggle Status Bar");
const QString fullscreen = QStringLiteral("Fullscreen");
ui.action_Show_Filter_Bar->setShortcut( ui.action_Show_Filter_Bar->setShortcut(
hotkey_registry.GetKeySequence("Main Window", "Toggle Filter Bar")); hotkey_registry.GetKeySequence(main_window, toggle_filter_bar));
ui.action_Show_Filter_Bar->setShortcutContext( ui.action_Show_Filter_Bar->setShortcutContext(
hotkey_registry.GetShortcutContext("Main Window", "Toggle Filter Bar")); hotkey_registry.GetShortcutContext(main_window, toggle_filter_bar));
ui.action_Show_Status_Bar->setShortcut( ui.action_Show_Status_Bar->setShortcut(
hotkey_registry.GetKeySequence("Main Window", "Toggle Status Bar")); hotkey_registry.GetKeySequence(main_window, toggle_status_bar));
ui.action_Show_Status_Bar->setShortcutContext( ui.action_Show_Status_Bar->setShortcutContext(
hotkey_registry.GetShortcutContext("Main Window", "Toggle Status Bar")); hotkey_registry.GetShortcutContext(main_window, toggle_status_bar));
connect(hotkey_registry.GetHotkey("Main Window", "Load File", this), &QShortcut::activated, connect(hotkey_registry.GetHotkey(main_window, load_file, this), &QShortcut::activated,
ui.action_Load_File, &QAction::trigger); ui.action_Load_File, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Stop Emulation", this), &QShortcut::activated, connect(hotkey_registry.GetHotkey(main_window, stop_emulation, this), &QShortcut::activated,
ui.action_Stop, &QAction::trigger); ui.action_Stop, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Exit Citra", this), &QShortcut::activated, connect(hotkey_registry.GetHotkey(main_window, exit_citra, this), &QShortcut::activated,
ui.action_Exit, &QAction::trigger); ui.action_Exit, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Continue/Pause Emulation", this), connect(
hotkey_registry.GetHotkey(main_window, QStringLiteral("Continue/Pause Emulation"), this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
if (emulation_running) { if (emulation_running) {
if (emu_thread->IsRunning()) { if (emu_thread->IsRunning()) {
@ -414,71 +423,73 @@ void GMainWindow::InitializeHotkeys() {
} }
} }
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Restart Emulation", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Restart Emulation"), this),
&QShortcut::activated, this, [this] { &QShortcut::activated, this, [this] {
if (!Core::System::GetInstance().IsPoweredOn()) if (!Core::System::GetInstance().IsPoweredOn())
return; return;
BootGame(QString(game_path)); BootGame(QString(game_path));
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Swap Screens", render_window), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Swap Screens"), render_window),
&QShortcut::activated, ui.action_Screen_Layout_Swap_Screens, &QAction::trigger); &QShortcut::activated, ui.action_Screen_Layout_Swap_Screens, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Rotate Screens Upright", render_window), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Rotate Screens Upright"),
render_window),
&QShortcut::activated, ui.action_Screen_Layout_Upright_Screens, &QAction::trigger); &QShortcut::activated, ui.action_Screen_Layout_Upright_Screens, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Toggle Screen Layout", render_window), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Toggle Screen Layout"),
render_window),
&QShortcut::activated, this, &GMainWindow::ToggleScreenLayout); &QShortcut::activated, this, &GMainWindow::ToggleScreenLayout);
connect(hotkey_registry.GetHotkey("Main Window", "Fullscreen", render_window), connect(hotkey_registry.GetHotkey(main_window, fullscreen, render_window),
&QShortcut::activated, ui.action_Fullscreen, &QAction::trigger); &QShortcut::activated, ui.action_Fullscreen, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Fullscreen", render_window), connect(hotkey_registry.GetHotkey(main_window, fullscreen, render_window),
&QShortcut::activatedAmbiguously, ui.action_Fullscreen, &QAction::trigger); &QShortcut::activatedAmbiguously, ui.action_Fullscreen, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Exit Fullscreen", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Exit Fullscreen"), this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
if (emulation_running) { if (emulation_running) {
ui.action_Fullscreen->setChecked(false); ui.action_Fullscreen->setChecked(false);
ToggleFullscreen(); ToggleFullscreen();
} }
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Toggle Speed Limit", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Toggle Speed Limit"), this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
Settings::values.use_frame_limit = !Settings::values.use_frame_limit; Settings::values.use_frame_limit = !Settings::values.use_frame_limit;
UpdateStatusBar(); UpdateStatusBar();
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Toggle Texture Dumping", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Toggle Texture Dumping"), this),
&QShortcut::activated, this, &QShortcut::activated, this,
[&] { Settings::values.dump_textures = !Settings::values.dump_textures; }); [&] { Settings::values.dump_textures = !Settings::values.dump_textures; });
// We use "static" here in order to avoid capturing by lambda due to a MSVC bug, which makes // We use "static" here in order to avoid capturing by lambda due to a MSVC bug, which makes
// the variable hold a garbage value after this function exits // the variable hold a garbage value after this function exits
static constexpr u16 SPEED_LIMIT_STEP = 5; static constexpr u16 SPEED_LIMIT_STEP = 5;
connect(hotkey_registry.GetHotkey("Main Window", "Increase Speed Limit", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Increase Speed Limit"), this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
if (Settings::values.frame_limit < 9999 - SPEED_LIMIT_STEP) { if (Settings::values.frame_limit < 9999 - SPEED_LIMIT_STEP) {
Settings::values.frame_limit += SPEED_LIMIT_STEP; Settings::values.frame_limit += SPEED_LIMIT_STEP;
UpdateStatusBar(); UpdateStatusBar();
} }
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Decrease Speed Limit", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Decrease Speed Limit"), this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
if (Settings::values.frame_limit > SPEED_LIMIT_STEP) { if (Settings::values.frame_limit > SPEED_LIMIT_STEP) {
Settings::values.frame_limit -= SPEED_LIMIT_STEP; Settings::values.frame_limit -= SPEED_LIMIT_STEP;
UpdateStatusBar(); UpdateStatusBar();
} }
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Toggle Frame Advancing", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Toggle Frame Advancing"), this),
&QShortcut::activated, ui.action_Enable_Frame_Advancing, &QAction::trigger); &QShortcut::activated, ui.action_Enable_Frame_Advancing, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Advance Frame", this), &QShortcut::activated, connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Advance Frame"), this),
ui.action_Advance_Frame, &QAction::trigger); &QShortcut::activated, ui.action_Advance_Frame, &QAction::trigger);
connect(hotkey_registry.GetHotkey("Main Window", "Load Amiibo", this), &QShortcut::activated, connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Load Amiibo"), this),
this, [&] { &QShortcut::activated, this, [&] {
if (ui.action_Load_Amiibo->isEnabled()) { if (ui.action_Load_Amiibo->isEnabled()) {
OnLoadAmiibo(); OnLoadAmiibo();
} }
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Remove Amiibo", this), &QShortcut::activated, connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Remove Amiibo"), this),
this, [&] { &QShortcut::activated, this, [&] {
if (ui.action_Remove_Amiibo->isEnabled()) { if (ui.action_Remove_Amiibo->isEnabled()) {
OnRemoveAmiibo(); OnRemoveAmiibo();
} }
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Capture Screenshot", this), connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Capture Screenshot"), this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
if (emu_thread->IsRunning()) { if (emu_thread->IsRunning()) {
OnCaptureScreenshot(); OnCaptureScreenshot();
@ -617,9 +628,13 @@ void GMainWindow::ConnectMenuEvents() {
&MultiplayerState::OnOpenNetworkRoom); &MultiplayerState::OnOpenNetworkRoom);
ui.action_Fullscreen->setShortcut( ui.action_Fullscreen->setShortcut(
hotkey_registry.GetHotkey("Main Window", "Fullscreen", this)->key()); hotkey_registry
.GetHotkey(QStringLiteral("Main Window"), QStringLiteral("Fullscreen"), this)
->key());
ui.action_Screen_Layout_Swap_Screens->setShortcut( ui.action_Screen_Layout_Swap_Screens->setShortcut(
hotkey_registry.GetHotkey("Main Window", "Swap Screens", this)->key()); hotkey_registry
.GetHotkey(QStringLiteral("Main Window"), QStringLiteral("Swap Screens"), this)
->key());
ui.action_Screen_Layout_Swap_Screens->setShortcutContext(Qt::WidgetWithChildrenShortcut); ui.action_Screen_Layout_Swap_Screens->setShortcutContext(Qt::WidgetWithChildrenShortcut);
ui.action_Screen_Layout_Upright_Screens->setShortcut( ui.action_Screen_Layout_Upright_Screens->setShortcut(
hotkey_registry.GetHotkey("Main Window", "Rotate Screens Upright", this)->key()); hotkey_registry.GetHotkey("Main Window", "Rotate Screens Upright", this)->key());
@ -674,8 +689,9 @@ void GMainWindow::ConnectMenuEvents() {
// Help // Help
connect(ui.action_Open_Citra_Folder, &QAction::triggered, this, connect(ui.action_Open_Citra_Folder, &QAction::triggered, this,
&GMainWindow::OnOpenCitraFolder); &GMainWindow::OnOpenCitraFolder);
connect(ui.action_FAQ, &QAction::triggered, connect(ui.action_FAQ, &QAction::triggered, []() {
[]() { QDesktopServices::openUrl(QUrl("https://citra-emu.org/wiki/faq/")); }); QDesktopServices::openUrl(QUrl(QStringLiteral("https://citra-emu.org/wiki/faq/")));
});
connect(ui.action_About, &QAction::triggered, this, &GMainWindow::OnMenuAboutCitra); connect(ui.action_About, &QAction::triggered, this, &GMainWindow::OnMenuAboutCitra);
connect(ui.action_Check_For_Updates, &QAction::triggered, this, connect(ui.action_Check_For_Updates, &QAction::triggered, this,
&GMainWindow::OnCheckForUpdates); &GMainWindow::OnCheckForUpdates);
@ -890,7 +906,7 @@ bool GMainWindow::LoadROM(const QString& filename) {
} }
void GMainWindow::BootGame(const QString& filename) { void GMainWindow::BootGame(const QString& filename) {
if (filename.endsWith(".cia")) { if (filename.endsWith(QStringLiteral(".cia"))) {
const auto answer = QMessageBox::question( const auto answer = QMessageBox::question(
this, tr("CIA must be installed before usage"), this, tr("CIA must be installed before usage"),
tr("Before using this CIA, you must install it. Do you want to install it now?"), tr("Before using this CIA, you must install it. Do you want to install it now?"),
@ -1067,7 +1083,7 @@ void GMainWindow::UpdateRecentFiles() {
std::min(UISettings::values.recent_files.size(), max_recent_files_item); std::min(UISettings::values.recent_files.size(), max_recent_files_item);
for (int i = 0; i < num_recent_files; i++) { for (int i = 0; i < num_recent_files; i++) {
const QString text = QString("&%1. %2").arg(i + 1).arg( const QString text = QStringLiteral("&%1. %2").arg(i + 1).arg(
QFileInfo(UISettings::values.recent_files[i]).fileName()); QFileInfo(UISettings::values.recent_files[i]).fileName());
actions_recent_files[i]->setText(text); actions_recent_files[i]->setText(text);
actions_recent_files[i]->setData(UISettings::values.recent_files[i]); actions_recent_files[i]->setData(UISettings::values.recent_files[i]);
@ -1158,12 +1174,12 @@ void GMainWindow::OnGameListNavigateToGamedbEntry(u64 program_id,
void GMainWindow::OnGameListOpenDirectory(const QString& directory) { void GMainWindow::OnGameListOpenDirectory(const QString& directory) {
QString path; QString path;
if (directory == "INSTALLED") { if (directory == QStringLiteral("INSTALLED")) {
path = QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir) + path = QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir) +
"Nintendo " "Nintendo "
"3DS/00000000000000000000000000000000/" "3DS/00000000000000000000000000000000/"
"00000000000000000000000000000000/title/00040000"); "00000000000000000000000000000000/title/00040000");
} else if (directory == "SYSTEM") { } else if (directory == QStringLiteral("SYSTEM")) {
path = QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + path = QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) +
"00000000000000000000000000000000/title/00040010"); "00000000000000000000000000000000/title/00040010");
} else { } else {
@ -1197,8 +1213,8 @@ void GMainWindow::OnGameListShowList(bool show) {
}; };
void GMainWindow::OnMenuLoadFile() { void GMainWindow::OnMenuLoadFile() {
const QString extensions = const QString extensions = QStringLiteral("*.").append(
QString("*.").append(GameList::supported_file_extensions.join(" *.")); GameList::supported_file_extensions.join(QStringLiteral(" *.")));
const QString file_filter = tr("3DS Executable (%1);;All Files (*.*)", const QString file_filter = tr("3DS Executable (%1);;All Files (*.*)",
"%1 is an identifier for the 3DS executable file extensions.") "%1 is an identifier for the 3DS executable file extensions.")
.arg(extensions); .arg(extensions);
@ -1507,9 +1523,9 @@ void GMainWindow::OnConfigure() {
} }
void GMainWindow::OnLoadAmiibo() { void GMainWindow::OnLoadAmiibo() {
const QString extensions{"*.bin"}; const QString extensions{QStringLiteral("*.bin")};
const QString file_filter = tr("Amiibo File (%1);; All Files (*.*)").arg(extensions); const QString file_filter = tr("Amiibo File (%1);; All Files (*.*)").arg(extensions);
const QString filename = QFileDialog::getOpenFileName(this, tr("Load Amiibo"), "", file_filter); const QString filename = QFileDialog::getOpenFileName(this, tr("Load Amiibo"), {}, file_filter);
if (filename.isEmpty()) { if (filename.isEmpty()) {
return; return;
@ -1728,7 +1744,7 @@ void GMainWindow::OnCaptureScreenshot() {
QFileDialog png_dialog(this, tr("Capture Screenshot"), UISettings::values.screenshot_path, QFileDialog png_dialog(this, tr("Capture Screenshot"), UISettings::values.screenshot_path,
tr("PNG Image (*.png)")); tr("PNG Image (*.png)"));
png_dialog.setAcceptMode(QFileDialog::AcceptSave); png_dialog.setAcceptMode(QFileDialog::AcceptSave);
png_dialog.setDefaultSuffix("png"); png_dialog.setDefaultSuffix(QStringLiteral("png"));
if (png_dialog.exec()) { if (png_dialog.exec()) {
const QString path = png_dialog.selectedFiles().first(); const QString path = png_dialog.selectedFiles().first();
if (!path.isEmpty()) { if (!path.isEmpty()) {
@ -1821,11 +1837,11 @@ void GMainWindow::OnCoreError(Core::System::ResultStatus result, std::string det
if (!details.empty()) { if (!details.empty()) {
message = common_message.arg(QString::fromStdString(details)); message = common_message.arg(QString::fromStdString(details));
} else { } else {
message = common_message.arg("A system archive"); message = common_message.arg(tr("A system archive"));
} }
title = tr("System Archive Not Found"); title = tr("System Archive Not Found");
status_message = "System Archive Missing"; status_message = tr("System Archive Missing");
} else { } else {
title = tr("Fatal Error"); title = tr("Fatal Error");
message = message =
@ -1833,7 +1849,7 @@ void GMainWindow::OnCoreError(Core::System::ResultStatus result, std::string det
"<a href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check " "<a href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check "
"the log</a> for details." "the log</a> for details."
"<br/>Continuing emulation may result in crashes and bugs."); "<br/>Continuing emulation may result in crashes and bugs.");
status_message = "Fatal Error encountered"; status_message = tr("Fatal Error encountered");
} }
QMessageBox message_box; QMessageBox message_box;
@ -1941,7 +1957,7 @@ bool GMainWindow::DropAction(QDropEvent* event) {
const QMimeData* mime_data = event->mimeData(); const QMimeData* mime_data = event->mimeData();
const QString& filename = mime_data->urls().at(0).toLocalFile(); const QString& filename = mime_data->urls().at(0).toLocalFile();
if (emulation_running && QFileInfo(filename).suffix() == "bin") { if (emulation_running && QFileInfo(filename).suffix() == QStringLiteral("bin")) {
// Amiibo // Amiibo
LoadAmiibo(filename); LoadAmiibo(filename);
} else { } else {
@ -1981,32 +1997,38 @@ void GMainWindow::filterBarSetChecked(bool state) {
} }
void GMainWindow::UpdateUITheme() { void GMainWindow::UpdateUITheme() {
const QString default_icons = QStringLiteral(":/icons/default");
const QString& current_theme = UISettings::values.theme;
const bool is_default_theme = current_theme == QString::fromUtf8(UISettings::themes[0].second);
QStringList theme_paths(default_theme_paths); QStringList theme_paths(default_theme_paths);
if (UISettings::values.theme != UISettings::themes[0].second &&
!UISettings::values.theme.isEmpty()) { if (is_default_theme || current_theme.isEmpty()) {
const QString theme_uri(":" + UISettings::values.theme + "/style.qss"); qApp->setStyleSheet({});
setStyleSheet({});
theme_paths.append(default_icons);
QIcon::setThemeName(default_icons);
} else {
const QString theme_uri(QLatin1Char{':'} + current_theme + QStringLiteral("/style.qss"));
QFile f(theme_uri); QFile f(theme_uri);
if (f.open(QFile::ReadOnly | QFile::Text)) { if (f.open(QFile::ReadOnly | QFile::Text)) {
QTextStream ts(&f); QTextStream ts(&f);
qApp->setStyleSheet(ts.readAll()); qApp->setStyleSheet(ts.readAll());
GMainWindow::setStyleSheet(ts.readAll()); setStyleSheet(ts.readAll());
} else { } else {
LOG_ERROR(Frontend, "Unable to set style, stylesheet file not found"); LOG_ERROR(Frontend, "Unable to set style, stylesheet file not found");
} }
theme_paths.append(QStringList{":/icons/default", ":/icons/" + UISettings::values.theme});
QIcon::setThemeName(":/icons/" + UISettings::values.theme); const QString theme_name = QStringLiteral(":/icons/") + current_theme;
} else { theme_paths.append({default_icons, theme_name});
qApp->setStyleSheet(""); QIcon::setThemeName(theme_name);
GMainWindow::setStyleSheet("");
theme_paths.append(QStringList{":/icons/default"});
QIcon::setThemeName(":/icons/default");
} }
QIcon::setThemeSearchPaths(theme_paths); QIcon::setThemeSearchPaths(theme_paths);
} }
void GMainWindow::LoadTranslation() { void GMainWindow::LoadTranslation() {
// If the selected language is English, no need to install any translation // If the selected language is English, no need to install any translation
if (UISettings::values.language == "en") { if (UISettings::values.language == QStringLiteral("en")) {
return; return;
} }
@ -2014,21 +2036,21 @@ void GMainWindow::LoadTranslation() {
if (UISettings::values.language.isEmpty()) { if (UISettings::values.language.isEmpty()) {
// If the selected language is empty, use system locale // If the selected language is empty, use system locale
loaded = translator.load(QLocale(), "", "", ":/languages/"); loaded = translator.load(QLocale(), {}, {}, QStringLiteral(":/languages/"));
} else { } else {
// Otherwise load from the specified file // Otherwise load from the specified file
loaded = translator.load(UISettings::values.language, ":/languages/"); loaded = translator.load(UISettings::values.language, QStringLiteral(":/languages/"));
} }
if (loaded) { if (loaded) {
qApp->installTranslator(&translator); qApp->installTranslator(&translator);
} else { } else {
UISettings::values.language = "en"; UISettings::values.language = QStringLiteral("en");
} }
} }
void GMainWindow::OnLanguageChanged(const QString& locale) { void GMainWindow::OnLanguageChanged(const QString& locale) {
if (UISettings::values.language != "en") { if (UISettings::values.language != QStringLiteral("en")) {
qApp->removeTranslator(&translator); qApp->removeTranslator(&translator);
} }
@ -2110,8 +2132,8 @@ int main(int argc, char* argv[]) {
SCOPE_EXIT({ MicroProfileShutdown(); }); SCOPE_EXIT({ MicroProfileShutdown(); });
// Init settings params // Init settings params
QCoreApplication::setOrganizationName("Citra team"); QCoreApplication::setOrganizationName(QStringLiteral("Citra team"));
QCoreApplication::setApplicationName("Citra"); QCoreApplication::setApplicationName(QStringLiteral("Citra"));
QSurfaceFormat format; QSurfaceFormat format;
format.setVersion(3, 3); format.setVersion(3, 3);

View file

@ -128,25 +128,25 @@ static QString StringToInputMask(const QString& input) {
QString mask = input; QString mask = input;
// ... replace any special characters by their escaped counterparts ... // ... replace any special characters by their escaped counterparts ...
mask.replace("\\", "\\\\"); mask.replace(QStringLiteral("\\"), QStringLiteral("\\\\"));
mask.replace("A", "\\A"); mask.replace(QLatin1Char{'A'}, QStringLiteral("\\A"));
mask.replace("a", "\\a"); mask.replace(QLatin1Char{'a'}, QStringLiteral("\\a"));
mask.replace("N", "\\N"); mask.replace(QLatin1Char{'N'}, QStringLiteral("\\N"));
mask.replace("n", "\\n"); mask.replace(QLatin1Char{'n'}, QStringLiteral("\\n"));
mask.replace("X", "\\X"); mask.replace(QLatin1Char{'X'}, QStringLiteral("\\X"));
mask.replace("x", "\\x"); mask.replace(QLatin1Char{'x'}, QStringLiteral("\\x"));
mask.replace("9", "\\9"); mask.replace(QLatin1Char{'9'}, QStringLiteral("\\9"));
mask.replace("0", "\\0"); mask.replace(QLatin1Char{'0'}, QStringLiteral("\\0"));
mask.replace("D", "\\D"); mask.replace(QLatin1Char{'D'}, QStringLiteral("\\D"));
mask.replace("d", "\\d"); mask.replace(QLatin1Char{'d'}, QStringLiteral("\\d"));
mask.replace("#", "\\#"); mask.replace(QLatin1Char{'#'}, QStringLiteral("\\#"));
mask.replace("H", "\\H"); mask.replace(QLatin1Char{'H'}, QStringLiteral("\\H"));
mask.replace("h", "\\h"); mask.replace(QLatin1Char{'h'}, QStringLiteral("\\h"));
mask.replace("B", "\\B"); mask.replace(QLatin1Char{'B'}, QStringLiteral("\\B"));
mask.replace("b", "\\b"); mask.replace(QLatin1Char{'b'}, QStringLiteral("\\b"));
mask.replace(">", "\\>"); mask.replace(QLatin1Char{'>'}, QStringLiteral("\\>"));
mask.replace("<", "\\<"); mask.replace(QLatin1Char{'<'}, QStringLiteral("\\<"));
mask.replace("!", "\\!"); mask.replace(QLatin1Char{'!'}, QStringLiteral("\\!"));
return mask; return mask;
} }
@ -160,19 +160,19 @@ void CSpinBox::UpdateText() {
// For base 10 and negative range, demand a single sign character // For base 10 and negative range, demand a single sign character
if (HasSign()) if (HasSign())
mask += "X"; // identified as "-" or "+" in the validator mask.append(QLatin1Char{'X'}); // identified as "-" or "+" in the validator
// Uppercase digits greater than 9. // Uppercase digits greater than 9.
mask += ">"; mask.append(QLatin1Char{'>'});
// Match num_digits digits // Match num_digits digits
// Digits irrelevant to the chosen number base are filtered in the validator // Digits irrelevant to the chosen number base are filtered in the validator
mask += QString("H").repeated(std::max(num_digits, 1)); mask.append(QStringLiteral("H").repeated(std::max(num_digits, 1)));
// Switch off case conversion // Switch off case conversion
mask += "!"; mask.append(QLatin1Char{'!'});
mask += StringToInputMask(suffix); mask.append(StringToInputMask(suffix));
} }
lineEdit()->setInputMask(mask); lineEdit()->setInputMask(mask);
@ -185,8 +185,9 @@ void CSpinBox::UpdateText() {
} }
QString CSpinBox::TextFromValue() { QString CSpinBox::TextFromValue() {
return prefix + QString(HasSign() ? ((value < 0) ? "-" : "+") : "") + return prefix +
QString("%1").arg(std::abs(value), num_digits, base, QLatin1Char('0')).toUpper() + (HasSign() ? ((value < 0) ? QStringLiteral("-") : QStringLiteral("+")) : QString{}) +
QStringLiteral("%1").arg(std::abs(value), num_digits, base, QLatin1Char('0')).toUpper() +
suffix; suffix;
} }
@ -224,20 +225,20 @@ QValidator::State CSpinBox::validate(QString& input, int& pos) const {
// Demand sign character for negative ranges // Demand sign character for negative ranges
if (HasSign()) if (HasSign())
regexp += "[+\\-]"; regexp.append(QStringLiteral("[+\\-]"));
// Match digits corresponding to the chosen number base. // Match digits corresponding to the chosen number base.
regexp += QString("[0-%1").arg(std::min(base, 9)); regexp.append(QStringLiteral("[0-%1").arg(std::min(base, 9)));
if (base == 16) { if (base == 16) {
regexp += "a-fA-F"; regexp.append(QStringLiteral("a-fA-F"));
} }
regexp += "]"; regexp.append(QLatin1Char(']'));
// Specify number of digits // Specify number of digits
if (num_digits > 0) { if (num_digits > 0) {
regexp += QString("{%1}").arg(num_digits); regexp.append(QStringLiteral("{%1}").arg(num_digits));
} else { } else {
regexp += "+"; regexp.append(QLatin1Char{'+'});
} }
// Match string // Match string