summaryrefslogtreecommitdiff
path: root/src/yuzu
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu')
-rw-r--r--src/yuzu/configuration/configure_ui.cpp40
-rw-r--r--src/yuzu/game_list.cpp10
-rw-r--r--src/yuzu/game_list.h2
-rw-r--r--src/yuzu/main.cpp6
-rw-r--r--src/yuzu/main.h8
5 files changed, 50 insertions, 16 deletions
diff --git a/src/yuzu/configuration/configure_ui.cpp b/src/yuzu/configuration/configure_ui.cpp
index 0a28c87c0..9674119e1 100644
--- a/src/yuzu/configuration/configure_ui.cpp
+++ b/src/yuzu/configuration/configure_ui.cpp
@@ -17,17 +17,30 @@
namespace {
constexpr std::array default_icon_sizes{
- std::make_pair(0, QT_TR_NOOP("None")),
- std::make_pair(32, QT_TR_NOOP("Small (32x32)")),
- std::make_pair(64, QT_TR_NOOP("Standard (64x64)")),
- std::make_pair(128, QT_TR_NOOP("Large (128x128)")),
- std::make_pair(256, QT_TR_NOOP("Full Size (256x256)")),
+ std::make_pair(0, QT_TRANSLATE_NOOP("ConfigureUI", "None")),
+ std::make_pair(32, QT_TRANSLATE_NOOP("ConfigureUI", "Small (32x32)")),
+ std::make_pair(64, QT_TRANSLATE_NOOP("ConfigureUI", "Standard (64x64)")),
+ std::make_pair(128, QT_TRANSLATE_NOOP("ConfigureUI", "Large (128x128)")),
+ std::make_pair(256, QT_TRANSLATE_NOOP("ConfigureUI", "Full Size (256x256)")),
};
+// clang-format off
constexpr std::array row_text_names{
- QT_TR_NOOP("Filename"), QT_TR_NOOP("Filetype"), QT_TR_NOOP("Title ID"),
- QT_TR_NOOP("Title Name"), QT_TR_NOOP("None"),
+ QT_TRANSLATE_NOOP("ConfigureUI", "Filename"),
+ QT_TRANSLATE_NOOP("ConfigureUI", "Filetype"),
+ QT_TRANSLATE_NOOP("ConfigureUI", "Title ID"),
+ QT_TRANSLATE_NOOP("ConfigureUI", "Title Name"),
+ QT_TRANSLATE_NOOP("ConfigureUI", "None"),
};
+// clang-format on
+
+QString GetTranslatedIconSize(size_t index) {
+ return QCoreApplication::translate("ConfigureUI", default_icon_sizes[index].second);
+}
+
+QString GetTranslatedRowTextName(size_t index) {
+ return QCoreApplication::translate("ConfigureUI", row_text_names[index]);
+}
} // Anonymous namespace
ConfigureUi::ConfigureUi(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureUi) {
@@ -121,11 +134,11 @@ void ConfigureUi::RetranslateUI() {
ui->retranslateUi(this);
for (int i = 0; i < ui->icon_size_combobox->count(); i++) {
- ui->icon_size_combobox->setItemText(i, tr(default_icon_sizes[i].second));
+ ui->icon_size_combobox->setItemText(i, GetTranslatedIconSize(static_cast<size_t>(i)));
}
for (int i = 0; i < ui->row_1_text_combobox->count(); i++) {
- const QString name = tr(row_text_names[i]);
+ const QString name = GetTranslatedRowTextName(static_cast<size_t>(i));
ui->row_1_text_combobox->setItemText(i, name);
ui->row_2_text_combobox->setItemText(i, name);
@@ -152,8 +165,9 @@ void ConfigureUi::InitializeLanguageComboBox() {
}
void ConfigureUi::InitializeIconSizeComboBox() {
- for (const auto& size : default_icon_sizes) {
- ui->icon_size_combobox->addItem(QString::fromUtf8(size.second), size.first);
+ for (size_t i = 0; i < default_icon_sizes.size(); i++) {
+ const auto size = default_icon_sizes[i].first;
+ ui->icon_size_combobox->addItem(GetTranslatedIconSize(i), size);
}
}
@@ -170,7 +184,7 @@ void ConfigureUi::UpdateFirstRowComboBox(bool init) {
ui->row_1_text_combobox->clear();
for (std::size_t i = 0; i < row_text_names.size(); i++) {
- const QString row_text_name = QString::fromUtf8(row_text_names[i]);
+ const QString row_text_name = GetTranslatedRowTextName(i);
ui->row_1_text_combobox->addItem(row_text_name, QVariant::fromValue(i));
}
@@ -189,7 +203,7 @@ void ConfigureUi::UpdateSecondRowComboBox(bool init) {
ui->row_2_text_combobox->clear();
for (std::size_t i = 0; i < row_text_names.size(); ++i) {
- const QString row_text_name = QString::fromUtf8(row_text_names[i]);
+ const QString row_text_name = GetTranslatedRowTextName(i);
ui->row_2_text_combobox->addItem(row_text_name, QVariant::fromValue(i));
}
diff --git a/src/yuzu/game_list.cpp b/src/yuzu/game_list.cpp
index 9308cfef8..da956c99b 100644
--- a/src/yuzu/game_list.cpp
+++ b/src/yuzu/game_list.cpp
@@ -505,6 +505,10 @@ void GameList::PopupContextMenu(const QPoint& menu_location) {
void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::string& path) {
QAction* favorite = context_menu.addAction(tr("Favorite"));
context_menu.addSeparator();
+ QAction* start_game = context_menu.addAction(tr("Start Game"));
+ QAction* start_game_global =
+ context_menu.addAction(tr("Start Game without Custom Configuration"));
+ context_menu.addSeparator();
QAction* open_save_location = context_menu.addAction(tr("Open Save Data Location"));
QAction* open_mod_location = context_menu.addAction(tr("Open Mod Data Location"));
QAction* open_transferable_shader_cache =
@@ -540,6 +544,12 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri
connect(open_save_location, &QAction::triggered, [this, program_id, path]() {
emit OpenFolderRequested(program_id, GameListOpenTarget::SaveData, path);
});
+ connect(start_game, &QAction::triggered, [this, path]() {
+ emit BootGame(QString::fromStdString(path), 0, StartGameType::Normal);
+ });
+ connect(start_game_global, &QAction::triggered, [this, path]() {
+ emit BootGame(QString::fromStdString(path), 0, StartGameType::Global);
+ });
connect(open_mod_location, &QAction::triggered, [this, program_id, path]() {
emit OpenFolderRequested(program_id, GameListOpenTarget::ModData, path);
});
diff --git a/src/yuzu/game_list.h b/src/yuzu/game_list.h
index ab6866735..b630e34ff 100644
--- a/src/yuzu/game_list.h
+++ b/src/yuzu/game_list.h
@@ -28,6 +28,7 @@ class GameListWorker;
class GameListSearchField;
class GameListDir;
class GMainWindow;
+enum class StartGameType;
namespace FileSys {
class ManualContentProvider;
@@ -82,6 +83,7 @@ public:
static const QStringList supported_file_extensions;
signals:
+ void BootGame(const QString& game_path, std::size_t program_index, StartGameType type);
void GameChosen(const QString& game_path);
void ShouldCancelWorker();
void OpenFolderRequested(u64 program_id, GameListOpenTarget target,
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index e683fb920..19339ff2d 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -1094,6 +1094,7 @@ void GMainWindow::OnAppFocusStateChanged(Qt::ApplicationState state) {
}
void GMainWindow::ConnectWidgetEvents() {
+ connect(game_list, &GameList::BootGame, this, &GMainWindow::BootGame);
connect(game_list, &GameList::GameChosen, this, &GMainWindow::OnGameListLoadFile);
connect(game_list, &GameList::OpenDirectory, this, &GMainWindow::OnGameListOpenDirectory);
connect(game_list, &GameList::OpenFolderRequested, this, &GMainWindow::OnGameListOpenFolder);
@@ -1320,7 +1321,7 @@ void GMainWindow::SelectAndSetCurrentUser() {
Settings::values.current_user = dialog.GetIndex();
}
-void GMainWindow::BootGame(const QString& filename, std::size_t program_index) {
+void GMainWindow::BootGame(const QString& filename, std::size_t program_index, StartGameType type) {
LOG_INFO(Frontend, "yuzu starting...");
StoreRecentFile(filename); // Put the filename on top of the list
@@ -1332,7 +1333,8 @@ void GMainWindow::BootGame(const QString& filename, std::size_t program_index) {
const auto v_file = Core::GetGameFileFromPath(vfs, filename.toUtf8().constData());
const auto loader = Loader::GetLoader(system, v_file, program_index);
- if (!(loader == nullptr || loader->ReadProgramId(title_id) != Loader::ResultStatus::Success)) {
+ if (loader != nullptr && loader->ReadProgramId(title_id) == Loader::ResultStatus::Success &&
+ type == StartGameType::Normal) {
// Load per game settings
const auto file_path = std::filesystem::path{filename.toStdU16String()};
const auto config_file_name = title_id == 0
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index 490b6889f..11f152cbe 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -39,6 +39,11 @@ class GameListPlaceholder;
class QtSoftwareKeyboardDialog;
+enum class StartGameType {
+ Normal, // Can use custom configuration
+ Global, // Only uses global configuration
+};
+
namespace Core::Frontend {
struct ControllerParameters;
struct InlineAppearParameters;
@@ -181,7 +186,8 @@ private:
void AllowOSSleep();
bool LoadROM(const QString& filename, std::size_t program_index);
- void BootGame(const QString& filename, std::size_t program_index = 0);
+ void BootGame(const QString& filename, std::size_t program_index = 0,
+ StartGameType with_config = StartGameType::Normal);
void ShutdownGame();
void ShowTelemetryCallout();