summaryrefslogtreecommitdiff
path: root/src/yuzu/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/main.cpp')
-rw-r--r--src/yuzu/main.cpp427
1 files changed, 209 insertions, 218 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 552c2cc63..00e649fd2 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -104,6 +104,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
#include "core/telemetry_session.h"
#include "input_common/main.h"
#include "input_common/tas/tas_input.h"
+#include "ui_main.h"
#include "util/overlay_dialog.h"
#include "video_core/gpu.h"
#include "video_core/renderer_base.h"
@@ -171,7 +172,7 @@ void GMainWindow::ShowTelemetryCallout() {
"<br/><br/>Would you like to share your usage data with us?");
if (QMessageBox::question(this, tr("Telemetry"), telemetry_message) != QMessageBox::Yes) {
Settings::values.enable_telemetry = false;
- Core::System::GetInstance().ApplySettings();
+ system.ApplySettings();
}
}
@@ -190,15 +191,16 @@ static void RemoveCachedContents() {
Common::FS::RemoveDirRecursively(offline_system_data);
}
-GMainWindow::GMainWindow()
- : input_subsystem{std::make_shared<InputCommon::InputSubsystem>()},
- config{std::make_unique<Config>()}, vfs{std::make_shared<FileSys::RealVfsFilesystem>()},
+GMainWindow::GMainWindow(Core::System& system_)
+ : input_subsystem{std::make_shared<InputCommon::InputSubsystem>()}, system{system_},
+ config{std::make_unique<Config>(system_)},
+ vfs{std::make_shared<FileSys::RealVfsFilesystem>()},
provider{std::make_unique<FileSys::ManualContentProvider>()} {
Common::Log::Initialize();
LoadTranslation();
setAcceptDrops(true);
- ui.setupUi(this);
+ ui->setupUi(this);
statusBar()->hide();
default_theme_paths = QIcon::themeSearchPaths();
@@ -255,11 +257,10 @@ GMainWindow::GMainWindow()
show();
- Core::System::GetInstance().SetContentProvider(
- std::make_unique<FileSys::ContentProviderUnion>());
- Core::System::GetInstance().RegisterContentProvider(
- FileSys::ContentProviderUnionSlot::FrontendManual, provider.get());
- Core::System::GetInstance().GetFileSystemController().CreateFactories(*vfs);
+ system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>());
+ system.RegisterContentProvider(FileSys::ContentProviderUnionSlot::FrontendManual,
+ provider.get());
+ system.GetFileSystemController().CreateFactories(*vfs);
// Remove cached contents generated during the previous session
RemoveCachedContents();
@@ -274,16 +275,16 @@ GMainWindow::GMainWindow()
ShowTelemetryCallout();
// make sure menubar has the arrow cursor instead of inheriting from this
- ui.menubar->setCursor(QCursor());
+ ui->menubar->setCursor(QCursor());
statusBar()->setCursor(QCursor());
mouse_hide_timer.setInterval(default_mouse_timeout);
connect(&mouse_hide_timer, &QTimer::timeout, this, &GMainWindow::HideMouseCursor);
- connect(ui.menubar, &QMenuBar::hovered, this, &GMainWindow::ShowMouseCursor);
+ connect(ui->menubar, &QMenuBar::hovered, this, &GMainWindow::ShowMouseCursor);
MigrateConfigFiles();
- ui.action_Fullscreen->setChecked(false);
+ ui->action_Fullscreen->setChecked(false);
QStringList args = QApplication::arguments();
@@ -302,7 +303,7 @@ GMainWindow::GMainWindow()
// Launch game in fullscreen mode
if (args[i] == QStringLiteral("-f")) {
- ui.action_Fullscreen->setChecked(true);
+ ui->action_Fullscreen->setChecked(true);
continue;
}
@@ -410,7 +411,7 @@ void GMainWindow::RegisterMetaTypes() {
void GMainWindow::ControllerSelectorReconfigureControllers(
const Core::Frontend::ControllerParameters& parameters) {
- QtControllerSelectorDialog dialog(this, parameters, input_subsystem.get());
+ QtControllerSelectorDialog dialog(this, parameters, input_subsystem.get(), system);
dialog.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint |
Qt::WindowTitleHint | Qt::WindowSystemMenuHint);
@@ -420,7 +421,7 @@ void GMainWindow::ControllerSelectorReconfigureControllers(
emit ControllerSelectorReconfigureFinished();
// Don't forget to apply settings.
- Core::System::GetInstance().ApplySettings();
+ system.ApplySettings();
config->Save();
UpdateStatusButtons();
@@ -454,8 +455,8 @@ void GMainWindow::SoftwareKeyboardInitialize(
return;
}
- software_keyboard = new QtSoftwareKeyboardDialog(render_window, Core::System::GetInstance(),
- is_inline, std::move(initialize_parameters));
+ software_keyboard = new QtSoftwareKeyboardDialog(render_window, system, is_inline,
+ std::move(initialize_parameters));
if (is_inline) {
connect(
@@ -566,11 +567,11 @@ void GMainWindow::WebBrowserOpenWebPage(const std::string& main_url,
return;
}
- QtNXWebEngineView web_browser_view(this, Core::System::GetInstance(), input_subsystem.get());
+ QtNXWebEngineView web_browser_view(this, system, input_subsystem.get());
- ui.action_Pause->setEnabled(false);
- ui.action_Restart->setEnabled(false);
- ui.action_Stop->setEnabled(false);
+ ui->action_Pause->setEnabled(false);
+ ui->action_Restart->setEnabled(false);
+ ui->action_Stop->setEnabled(false);
{
QProgressDialog loading_progress(this);
@@ -634,7 +635,7 @@ void GMainWindow::WebBrowserOpenWebPage(const std::string& main_url,
web_browser_view.SetFinished(true);
}
});
- ui.menubar->addAction(exit_action);
+ ui->menubar->addAction(exit_action);
while (!web_browser_view.IsFinished()) {
QCoreApplication::processEvents();
@@ -676,11 +677,11 @@ void GMainWindow::WebBrowserOpenWebPage(const std::string& main_url,
render_window->show();
}
- ui.action_Pause->setEnabled(true);
- ui.action_Restart->setEnabled(true);
- ui.action_Stop->setEnabled(true);
+ ui->action_Pause->setEnabled(true);
+ ui->action_Restart->setEnabled(true);
+ ui->action_Stop->setEnabled(true);
- ui.menubar->removeAction(exit_action);
+ ui->menubar->removeAction(exit_action);
QCoreApplication::processEvents();
@@ -696,21 +697,21 @@ void GMainWindow::WebBrowserOpenWebPage(const std::string& main_url,
void GMainWindow::InitializeWidgets() {
#ifdef YUZU_ENABLE_COMPATIBILITY_REPORTING
- ui.action_Report_Compatibility->setVisible(true);
+ ui->action_Report_Compatibility->setVisible(true);
#endif
- render_window = new GRenderWindow(this, emu_thread.get(), input_subsystem);
+ render_window = new GRenderWindow(this, emu_thread.get(), input_subsystem, system);
render_window->hide();
- game_list = new GameList(vfs, provider.get(), this);
- ui.horizontalLayout->addWidget(game_list);
+ game_list = new GameList(vfs, provider.get(), system, this);
+ ui->horizontalLayout->addWidget(game_list);
game_list_placeholder = new GameListPlaceholder(this);
- ui.horizontalLayout->addWidget(game_list_placeholder);
+ ui->horizontalLayout->addWidget(game_list_placeholder);
game_list_placeholder->setVisible(false);
loading_screen = new LoadingScreen(this);
loading_screen->hide();
- ui.horizontalLayout->addWidget(loading_screen);
+ ui->horizontalLayout->addWidget(loading_screen);
connect(loading_screen, &LoadingScreen::Hidden, [&] {
loading_screen->Clear();
if (emulation_running) {
@@ -767,14 +768,14 @@ void GMainWindow::InitializeWidgets() {
tr("Handheld controller can't be used on docked mode. Pro "
"controller will be selected."));
controller_type = Settings::ControllerType::ProController;
- ConfigureDialog configure_dialog(this, hotkey_registry, input_subsystem.get());
+ ConfigureDialog configure_dialog(this, hotkey_registry, input_subsystem.get(), system);
configure_dialog.ApplyConfiguration();
controller_dialog->refreshConfiguration();
}
Settings::values.use_docked_mode.SetValue(!is_docked);
dock_status_button->setChecked(!is_docked);
- OnDockedModeChanged(is_docked, !is_docked);
+ OnDockedModeChanged(is_docked, !is_docked, system);
});
dock_status_button->setText(tr("DOCK"));
dock_status_button->setCheckable(true);
@@ -798,7 +799,7 @@ void GMainWindow::InitializeWidgets() {
}
}
- Core::System::GetInstance().ApplySettings();
+ system.ApplySettings();
UpdateGPUAccuracyButton();
});
UpdateGPUAccuracyButton();
@@ -826,7 +827,7 @@ void GMainWindow::InitializeWidgets() {
Settings::values.renderer_backend.SetValue(Settings::RendererBackend::OpenGL);
}
- Core::System::GetInstance().ApplySettings();
+ system.ApplySettings();
});
statusBar()->insertPermanentWidget(0, renderer_status_button);
@@ -835,7 +836,7 @@ void GMainWindow::InitializeWidgets() {
}
void GMainWindow::InitializeDebugWidgets() {
- QMenu* debug_menu = ui.menu_View_Debugging;
+ QMenu* debug_menu = ui->menu_View_Debugging;
#if MICROPROFILE_ENABLED
microProfileDialog = new MicroProfileDialog(this);
@@ -843,7 +844,7 @@ void GMainWindow::InitializeDebugWidgets() {
debug_menu->addAction(microProfileDialog->toggleViewAction());
#endif
- waitTreeWidget = new WaitTreeWidget(this);
+ waitTreeWidget = new WaitTreeWidget(system, this);
addDockWidget(Qt::LeftDockWidgetArea, waitTreeWidget);
waitTreeWidget->hide();
debug_menu->addAction(waitTreeWidget->toggleViewAction());
@@ -864,16 +865,16 @@ void GMainWindow::InitializeRecentFileMenuActions() {
actions_recent_files[i]->setVisible(false);
connect(actions_recent_files[i], &QAction::triggered, this, &GMainWindow::OnMenuRecentFile);
- ui.menu_recent_files->addAction(actions_recent_files[i]);
+ ui->menu_recent_files->addAction(actions_recent_files[i]);
}
- ui.menu_recent_files->addSeparator();
+ ui->menu_recent_files->addSeparator();
QAction* action_clear_recent_files = new QAction(this);
action_clear_recent_files->setText(tr("&Clear Recent Files"));
connect(action_clear_recent_files, &QAction::triggered, this, [this] {
UISettings::values.recent_files.clear();
UpdateRecentFiles();
});
- ui.menu_recent_files->addAction(action_clear_recent_files);
+ ui->menu_recent_files->addAction(action_clear_recent_files);
UpdateRecentFiles();
}
@@ -892,43 +893,43 @@ void GMainWindow::InitializeHotkeys() {
const QString fullscreen = QStringLiteral("Fullscreen");
const QString capture_screenshot = QStringLiteral("Capture Screenshot");
- ui.action_Load_File->setShortcut(hotkey_registry.GetKeySequence(main_window, load_file));
- ui.action_Load_File->setShortcutContext(
+ ui->action_Load_File->setShortcut(hotkey_registry.GetKeySequence(main_window, load_file));
+ ui->action_Load_File->setShortcutContext(
hotkey_registry.GetShortcutContext(main_window, load_file));
- ui.action_Load_Amiibo->setShortcut(hotkey_registry.GetKeySequence(main_window, load_amiibo));
- ui.action_Load_Amiibo->setShortcutContext(
+ ui->action_Load_Amiibo->setShortcut(hotkey_registry.GetKeySequence(main_window, load_amiibo));
+ ui->action_Load_Amiibo->setShortcutContext(
hotkey_registry.GetShortcutContext(main_window, load_amiibo));
- ui.action_Exit->setShortcut(hotkey_registry.GetKeySequence(main_window, exit_yuzu));
- ui.action_Exit->setShortcutContext(hotkey_registry.GetShortcutContext(main_window, exit_yuzu));
+ ui->action_Exit->setShortcut(hotkey_registry.GetKeySequence(main_window, exit_yuzu));
+ ui->action_Exit->setShortcutContext(hotkey_registry.GetShortcutContext(main_window, exit_yuzu));
- ui.action_Restart->setShortcut(hotkey_registry.GetKeySequence(main_window, restart_emulation));
- ui.action_Restart->setShortcutContext(
+ ui->action_Restart->setShortcut(hotkey_registry.GetKeySequence(main_window, restart_emulation));
+ ui->action_Restart->setShortcutContext(
hotkey_registry.GetShortcutContext(main_window, restart_emulation));
- ui.action_Stop->setShortcut(hotkey_registry.GetKeySequence(main_window, stop_emulation));
- ui.action_Stop->setShortcutContext(
+ ui->action_Stop->setShortcut(hotkey_registry.GetKeySequence(main_window, stop_emulation));
+ ui->action_Stop->setShortcutContext(
hotkey_registry.GetShortcutContext(main_window, stop_emulation));
- ui.action_Show_Filter_Bar->setShortcut(
+ ui->action_Show_Filter_Bar->setShortcut(
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));
- ui.action_Show_Status_Bar->setShortcut(
+ ui->action_Show_Status_Bar->setShortcut(
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));
- ui.action_Capture_Screenshot->setShortcut(
+ ui->action_Capture_Screenshot->setShortcut(
hotkey_registry.GetKeySequence(main_window, capture_screenshot));
- ui.action_Capture_Screenshot->setShortcutContext(
+ ui->action_Capture_Screenshot->setShortcutContext(
hotkey_registry.GetShortcutContext(main_window, capture_screenshot));
- ui.action_Fullscreen->setShortcut(
+ ui->action_Fullscreen->setShortcut(
hotkey_registry.GetHotkey(main_window, fullscreen, this)->key());
- ui.action_Fullscreen->setShortcutContext(
+ ui->action_Fullscreen->setShortcutContext(
hotkey_registry.GetShortcutContext(main_window, fullscreen));
connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Load File"), this),
@@ -946,19 +947,19 @@ void GMainWindow::InitializeHotkeys() {
});
connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Restart Emulation"), this),
&QShortcut::activated, this, [this] {
- if (!Core::System::GetInstance().IsPoweredOn()) {
+ if (!system.IsPoweredOn()) {
return;
}
BootGame(game_path);
});
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),
- &QShortcut::activatedAmbiguously, ui.action_Fullscreen, &QAction::trigger);
+ &QShortcut::activatedAmbiguously, ui->action_Fullscreen, &QAction::trigger);
connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Exit Fullscreen"), this),
&QShortcut::activated, this, [&] {
if (emulation_running) {
- ui.action_Fullscreen->setChecked(false);
+ ui->action_Fullscreen->setChecked(false);
ToggleFullscreen();
}
});
@@ -987,7 +988,7 @@ void GMainWindow::InitializeHotkeys() {
});
connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Load Amiibo"), this),
&QShortcut::activated, this, [&] {
- if (ui.action_Load_Amiibo->isEnabled()) {
+ if (ui->action_Load_Amiibo->isEnabled()) {
OnLoadAmiibo();
}
});
@@ -1002,7 +1003,7 @@ void GMainWindow::InitializeHotkeys() {
Settings::values.use_docked_mode.SetValue(
!Settings::values.use_docked_mode.GetValue());
OnDockedModeChanged(!Settings::values.use_docked_mode.GetValue(),
- Settings::values.use_docked_mode.GetValue());
+ Settings::values.use_docked_mode.GetValue(), system);
dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
});
connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Mute Audio"), this),
@@ -1068,20 +1069,20 @@ void GMainWindow::RestoreUIState() {
game_list->LoadInterfaceLayout();
- ui.action_Single_Window_Mode->setChecked(UISettings::values.single_window_mode.GetValue());
+ ui->action_Single_Window_Mode->setChecked(UISettings::values.single_window_mode.GetValue());
ToggleWindowMode();
- ui.action_Fullscreen->setChecked(UISettings::values.fullscreen.GetValue());
+ ui->action_Fullscreen->setChecked(UISettings::values.fullscreen.GetValue());
- ui.action_Display_Dock_Widget_Headers->setChecked(
+ ui->action_Display_Dock_Widget_Headers->setChecked(
UISettings::values.display_titlebar.GetValue());
- OnDisplayTitleBars(ui.action_Display_Dock_Widget_Headers->isChecked());
+ OnDisplayTitleBars(ui->action_Display_Dock_Widget_Headers->isChecked());
- ui.action_Show_Filter_Bar->setChecked(UISettings::values.show_filter_bar.GetValue());
- game_list->SetFilterVisible(ui.action_Show_Filter_Bar->isChecked());
+ ui->action_Show_Filter_Bar->setChecked(UISettings::values.show_filter_bar.GetValue());
+ game_list->SetFilterVisible(ui->action_Show_Filter_Bar->isChecked());
- ui.action_Show_Status_Bar->setChecked(UISettings::values.show_status_bar.GetValue());
- statusBar()->setVisible(ui.action_Show_Status_Bar->isChecked());
+ ui->action_Show_Status_Bar->setChecked(UISettings::values.show_status_bar.GetValue());
+ statusBar()->setVisible(ui->action_Show_Status_Bar->isChecked());
Debugger::ToggleConsole();
}
@@ -1093,11 +1094,11 @@ void GMainWindow::OnAppFocusStateChanged(Qt::ApplicationState state) {
state != Qt::ApplicationActive) {
LOG_DEBUG(Frontend, "ApplicationState unusual flag: {} ", state);
}
- if (ui.action_Pause->isEnabled() &&
+ if (ui->action_Pause->isEnabled() &&
(state & (Qt::ApplicationHidden | Qt::ApplicationInactive))) {
auto_paused = true;
OnPauseGame();
- } else if (ui.action_Start->isEnabled() && auto_paused && state == Qt::ApplicationActive) {
+ } else if (ui->action_Start->isEnabled() && auto_paused && state == Qt::ApplicationActive) {
auto_paused = false;
OnStartGame();
}
@@ -1142,53 +1143,60 @@ void GMainWindow::ConnectWidgetEvents() {
void GMainWindow::ConnectMenuEvents() {
// File
- connect(ui.action_Load_File, &QAction::triggered, this, &GMainWindow::OnMenuLoadFile);
- connect(ui.action_Load_Folder, &QAction::triggered, this, &GMainWindow::OnMenuLoadFolder);
- connect(ui.action_Install_File_NAND, &QAction::triggered, this,
+ connect(ui->action_Load_File, &QAction::triggered, this, &GMainWindow::OnMenuLoadFile);
+ connect(ui->action_Load_Folder, &QAction::triggered, this, &GMainWindow::OnMenuLoadFolder);
+ connect(ui->action_Install_File_NAND, &QAction::triggered, this,
&GMainWindow::OnMenuInstallToNAND);
- connect(ui.action_Exit, &QAction::triggered, this, &QMainWindow::close);
- connect(ui.action_Load_Amiibo, &QAction::triggered, this, &GMainWindow::OnLoadAmiibo);
+ connect(ui->action_Exit, &QAction::triggered, this, &QMainWindow::close);
+ connect(ui->action_Load_Amiibo, &QAction::triggered, this, &GMainWindow::OnLoadAmiibo);
// Emulation
- connect(ui.action_Start, &QAction::triggered, this, &GMainWindow::OnStartGame);
- connect(ui.action_Pause, &QAction::triggered, this, &GMainWindow::OnPauseGame);
- connect(ui.action_Stop, &QAction::triggered, this, &GMainWindow::OnStopGame);
- connect(ui.action_Report_Compatibility, &QAction::triggered, this,
+ connect(ui->action_Start, &QAction::triggered, this, &GMainWindow::OnStartGame);
+ connect(ui->action_Pause, &QAction::triggered, this, &GMainWindow::OnPauseGame);
+ connect(ui->action_Stop, &QAction::triggered, this, &GMainWindow::OnStopGame);
+ connect(ui->action_Report_Compatibility, &QAction::triggered, this,
&GMainWindow::OnMenuReportCompatibility);
- connect(ui.action_Open_Mods_Page, &QAction::triggered, this, &GMainWindow::OnOpenModsPage);
- connect(ui.action_Open_Quickstart_Guide, &QAction::triggered, this,
+ connect(ui->action_Open_Mods_Page, &QAction::triggered, this, &GMainWindow::OnOpenModsPage);
+ connect(ui->action_Open_Quickstart_Guide, &QAction::triggered, this,
&GMainWindow::OnOpenQuickstartGuide);
- connect(ui.action_Open_FAQ, &QAction::triggered, this, &GMainWindow::OnOpenFAQ);
- connect(ui.action_Restart, &QAction::triggered, this, [this] { BootGame(QString(game_path)); });
- connect(ui.action_Configure, &QAction::triggered, this, &GMainWindow::OnConfigure);
- connect(ui.action_Configure_Tas, &QAction::triggered, this, &GMainWindow::OnConfigureTas);
- connect(ui.action_Configure_Current_Game, &QAction::triggered, this,
+ connect(ui->action_Open_FAQ, &QAction::triggered, this, &GMainWindow::OnOpenFAQ);
+ connect(ui->action_Restart, &QAction::triggered, this,
+ [this] { BootGame(QString(game_path)); });
+ connect(ui->action_Configure, &QAction::triggered, this, &GMainWindow::OnConfigure);
+ connect(ui->action_Configure_Tas, &QAction::triggered, this, &GMainWindow::OnConfigureTas);
+ connect(ui->action_Configure_Current_Game, &QAction::triggered, this,
&GMainWindow::OnConfigurePerGame);
// View
- connect(ui.action_Single_Window_Mode, &QAction::triggered, this,
+ connect(ui->action_Single_Window_Mode, &QAction::triggered, this,
&GMainWindow::ToggleWindowMode);
- connect(ui.action_Display_Dock_Widget_Headers, &QAction::triggered, this,
+ connect(ui->action_Display_Dock_Widget_Headers, &QAction::triggered, this,
&GMainWindow::OnDisplayTitleBars);
- connect(ui.action_Show_Filter_Bar, &QAction::triggered, this, &GMainWindow::OnToggleFilterBar);
- connect(ui.action_Show_Status_Bar, &QAction::triggered, statusBar(), &QStatusBar::setVisible);
- connect(ui.action_Reset_Window_Size_720, &QAction::triggered, this,
+ connect(ui->action_Show_Filter_Bar, &QAction::triggered, this, &GMainWindow::OnToggleFilterBar);
+ connect(ui->action_Show_Status_Bar, &QAction::triggered, statusBar(), &QStatusBar::setVisible);
+
+ connect(ui->action_Reset_Window_Size_720, &QAction::triggered, this,
&GMainWindow::ResetWindowSize720);
- connect(ui.action_Reset_Window_Size_1080, &QAction::triggered, this,
+ connect(ui->action_Reset_Window_Size_900, &QAction::triggered, this,
+ &GMainWindow::ResetWindowSize900);
+ connect(ui->action_Reset_Window_Size_1080, &QAction::triggered, this,
&GMainWindow::ResetWindowSize1080);
+ ui->menu_Reset_Window_Size->addAction(ui->action_Reset_Window_Size_720);
+ ui->menu_Reset_Window_Size->addAction(ui->action_Reset_Window_Size_900);
+ ui->menu_Reset_Window_Size->addAction(ui->action_Reset_Window_Size_1080);
// Fullscreen
- connect(ui.action_Fullscreen, &QAction::triggered, this, &GMainWindow::ToggleFullscreen);
+ connect(ui->action_Fullscreen, &QAction::triggered, this, &GMainWindow::ToggleFullscreen);
// Movie
- connect(ui.action_Capture_Screenshot, &QAction::triggered, this,
+ connect(ui->action_Capture_Screenshot, &QAction::triggered, this,
&GMainWindow::OnCaptureScreenshot);
// Help
- connect(ui.action_Open_yuzu_Folder, &QAction::triggered, this, &GMainWindow::OnOpenYuzuFolder);
- connect(ui.action_Rederive, &QAction::triggered, this,
+ connect(ui->action_Open_yuzu_Folder, &QAction::triggered, this, &GMainWindow::OnOpenYuzuFolder);
+ connect(ui->action_Rederive, &QAction::triggered, this,
std::bind(&GMainWindow::OnReinitializeKeys, this, ReinitializeKeyBehavior::Warning));
- connect(ui.action_About, &QAction::triggered, this, &GMainWindow::OnAbout);
+ connect(ui->action_About, &QAction::triggered, this, &GMainWindow::OnAbout);
}
void GMainWindow::OnDisplayTitleBars(bool show) {
@@ -1232,7 +1240,6 @@ bool GMainWindow::LoadROM(const QString& filename, u64 program_id, std::size_t p
return false;
}
- Core::System& system{Core::System::GetInstance()};
system.SetFilesystem(vfs);
system.SetAppletFrontendSet({
@@ -1342,7 +1349,6 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
last_filename_booted = filename;
- auto& system = Core::System::GetInstance();
const auto v_file = Core::GetGameFileFromPath(vfs, filename.toUtf8().constData());
const auto loader = Loader::GetLoader(system, v_file, program_id, program_index);
@@ -1353,7 +1359,7 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
const auto config_file_name = title_id == 0
? Common::FS::PathToUTF8String(file_path.filename())
: fmt::format("{:016X}", title_id);
- Config per_game_config(config_file_name, Config::ConfigType::PerGameConfig);
+ Config per_game_config(system, config_file_name, Config::ConfigType::PerGameConfig);
}
ConfigureVibration::SetAllVibrationDevices();
@@ -1376,7 +1382,7 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
return;
// Create and start the emulation thread
- emu_thread = std::make_unique<EmuThread>();
+ emu_thread = std::make_unique<EmuThread>(system);
emit EmulationStarting(emu_thread.get());
emu_thread->start();
@@ -1401,7 +1407,7 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
// Update the GUI
UpdateStatusButtons();
- if (ui.action_Single_Window_Mode->isChecked()) {
+ if (ui->action_Single_Window_Mode->isChecked()) {
game_list->hide();
game_list_placeholder->hide();
}
@@ -1421,7 +1427,7 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
std::string title_version;
const auto res = system.GetGameName(title_name);
- const auto metadata = [&system, title_id] {
+ const auto metadata = [this, title_id] {
const FileSys::PatchManager pm(title_id, system.GetFileSystemController(),
system.GetContentProvider());
return pm.GetControlMetadata();
@@ -1447,7 +1453,7 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
loading_screen->show();
emulation_running = true;
- if (ui.action_Fullscreen->isChecked()) {
+ if (ui->action_Fullscreen->isChecked()) {
ShowFullscreen();
}
OnStartGame();
@@ -1458,7 +1464,7 @@ void GMainWindow::ShutdownGame() {
return;
}
- if (ui.action_Fullscreen->isChecked()) {
+ if (ui->action_Fullscreen->isChecked()) {
HideFullscreen();
}
@@ -1479,15 +1485,15 @@ void GMainWindow::ShutdownGame() {
disconnect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame);
// Update the GUI
- ui.action_Start->setEnabled(false);
- ui.action_Start->setText(tr("Start"));
- ui.action_Pause->setEnabled(false);
- ui.action_Stop->setEnabled(false);
- ui.action_Restart->setEnabled(false);
- ui.action_Configure_Current_Game->setEnabled(false);
- ui.action_Report_Compatibility->setEnabled(false);
- ui.action_Load_Amiibo->setEnabled(false);
- ui.action_Capture_Screenshot->setEnabled(false);
+ ui->action_Start->setEnabled(false);
+ ui->action_Start->setText(tr("Start"));
+ ui->action_Pause->setEnabled(false);
+ ui->action_Stop->setEnabled(false);
+ ui->action_Restart->setEnabled(false);
+ ui->action_Configure_Current_Game->setEnabled(false);
+ ui->action_Report_Compatibility->setEnabled(false);
+ ui->action_Load_Amiibo->setEnabled(false);
+ ui->action_Capture_Screenshot->setEnabled(false);
render_window->hide();
loading_screen->hide();
loading_screen->Clear();
@@ -1549,7 +1555,7 @@ void GMainWindow::UpdateRecentFiles() {
}
// Enable the recent files menu if the list isn't empty
- ui.menu_recent_files->setEnabled(num_recent_files != 0);
+ ui->menu_recent_files->setEnabled(num_recent_files != 0);
}
void GMainWindow::OnGameListLoadFile(QString game_path, u64 program_id) {
@@ -1560,9 +1566,8 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target
const std::string& game_path) {
std::filesystem::path path;
QString open_target;
- auto& system = Core::System::GetInstance();
- const auto [user_save_size, device_save_size] = [this, &game_path, &program_id, &system] {
+ const auto [user_save_size, device_save_size] = [this, &game_path, &program_id] {
const FileSys::PatchManager pm{program_id, system.GetFileSystemController(),
system.GetContentProvider()};
const auto control = pm.GetControlMetadata().first;
@@ -1748,7 +1753,7 @@ void GMainWindow::OnGameListRemoveInstalledEntry(u64 program_id, InstalledEntryT
}
void GMainWindow::RemoveBaseContent(u64 program_id, const QString& entry_type) {
- const auto& fs_controller = Core::System::GetInstance().GetFileSystemController();
+ const auto& fs_controller = system.GetFileSystemController();
const auto res = fs_controller.GetUserNANDContents()->RemoveExistingEntry(program_id) ||
fs_controller.GetSDMCContents()->RemoveExistingEntry(program_id);
@@ -1764,7 +1769,7 @@ void GMainWindow::RemoveBaseContent(u64 program_id, const QString& entry_type) {
void GMainWindow::RemoveUpdateContent(u64 program_id, const QString& entry_type) {
const auto update_id = program_id | 0x800;
- const auto& fs_controller = Core::System::GetInstance().GetFileSystemController();
+ const auto& fs_controller = system.GetFileSystemController();
const auto res = fs_controller.GetUserNANDContents()->RemoveExistingEntry(update_id) ||
fs_controller.GetSDMCContents()->RemoveExistingEntry(update_id);
@@ -1779,8 +1784,8 @@ void GMainWindow::RemoveUpdateContent(u64 program_id, const QString& entry_type)
void GMainWindow::RemoveAddOnContent(u64 program_id, const QString& entry_type) {
u32 count{};
- const auto& fs_controller = Core::System::GetInstance().GetFileSystemController();
- const auto dlc_entries = Core::System::GetInstance().GetContentProvider().ListEntriesFilter(
+ const auto& fs_controller = system.GetFileSystemController();
+ const auto dlc_entries = system.GetContentProvider().ListEntriesFilter(
FileSys::TitleType::AOC, FileSys::ContentRecordType::Data);
for (const auto& entry : dlc_entries) {
@@ -1918,7 +1923,6 @@ void GMainWindow::OnGameListDumpRomFS(u64 program_id, const std::string& game_pa
"cancelled the operation."));
};
- auto& system = Core::System::GetInstance();
const auto loader = Loader::GetLoader(system, vfs->OpenFile(game_path, FileSys::Mode::Read));
if (loader == nullptr) {
failed();
@@ -2077,7 +2081,7 @@ void GMainWindow::OnGameListAddDirectory() {
}
void GMainWindow::OnGameListShowList(bool show) {
- if (emulation_running && ui.action_Single_Window_Mode->isChecked())
+ if (emulation_running && ui->action_Single_Window_Mode->isChecked())
return;
game_list->setVisible(show);
game_list_placeholder->setVisible(!show);
@@ -2086,7 +2090,7 @@ void GMainWindow::OnGameListShowList(bool show) {
void GMainWindow::OnGameListOpenPerGameProperties(const std::string& file) {
u64 title_id{};
const auto v_file = Core::GetGameFileFromPath(vfs, file);
- const auto loader = Loader::GetLoader(Core::System::GetInstance(), v_file);
+ const auto loader = Loader::GetLoader(system, v_file);
if (loader == nullptr || loader->ReadProgramId(title_id) != Loader::ResultStatus::Success) {
QMessageBox::information(this, tr("Properties"),
@@ -2179,7 +2183,7 @@ void GMainWindow::OnMenuInstallToNAND() {
QStringList failed_files{}; // Files that failed to install due to errors
bool detected_base_install{}; // Whether a base game was attempted to be installed
- ui.action_Install_File_NAND->setEnabled(false);
+ ui->action_Install_File_NAND->setEnabled(false);
install_progress = new QProgressDialog(QString{}, tr("Cancel"), 0, total_size, this);
install_progress->setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint &
@@ -2255,7 +2259,7 @@ void GMainWindow::OnMenuInstallToNAND() {
Common::FS::RemoveDirRecursively(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) /
"game_list");
game_list->PopulateAsync(UISettings::values.game_dirs);
- ui.action_Install_File_NAND->setEnabled(true);
+ ui->action_Install_File_NAND->setEnabled(true);
}
InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
@@ -2300,9 +2304,8 @@ InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
if (nsp->GetStatus() != Loader::ResultStatus::Success) {
return InstallResult::Failure;
}
- const auto res =
- Core::System::GetInstance().GetFileSystemController().GetUserNANDContents()->InstallEntry(
- *nsp, true, qt_raw_copy);
+ const auto res = system.GetFileSystemController().GetUserNANDContents()->InstallEntry(
+ *nsp, true, qt_raw_copy);
switch (res) {
case FileSys::InstallResult::Success:
return InstallResult::Success;
@@ -2380,19 +2383,13 @@ InstallResult GMainWindow::InstallNCA(const QString& filename) {
static_cast<size_t>(FileSys::TitleType::FirmwarePackageB);
}
- FileSys::InstallResult res;
- if (index >= static_cast<s32>(FileSys::TitleType::Application)) {
- res = Core::System::GetInstance()
- .GetFileSystemController()
- .GetUserNANDContents()
- ->InstallEntry(*nca, static_cast<FileSys::TitleType>(index), true, qt_raw_copy);
- } else {
- res = Core::System::GetInstance()
- .GetFileSystemController()
- .GetSystemNANDContents()
- ->InstallEntry(*nca, static_cast<FileSys::TitleType>(index), true, qt_raw_copy);
- }
+ const bool is_application = index >= static_cast<s32>(FileSys::TitleType::Application);
+ const auto& fs_controller = system.GetFileSystemController();
+ auto* registered_cache = is_application ? fs_controller.GetUserNANDContents()
+ : fs_controller.GetSystemNANDContents();
+ const auto res = registered_cache->InstallEntry(*nca, static_cast<FileSys::TitleType>(index),
+ true, qt_raw_copy);
if (res == FileSys::InstallResult::Success) {
return InstallResult::Success;
} else if (res == FileSys::InstallResult::OverwriteExisting) {
@@ -2426,33 +2423,32 @@ void GMainWindow::OnStartGame() {
connect(emu_thread.get(), &EmuThread::ErrorThrown, this, &GMainWindow::OnCoreError);
- ui.action_Start->setEnabled(false);
- ui.action_Start->setText(tr("&Continue"));
+ ui->action_Start->setEnabled(false);
+ ui->action_Start->setText(tr("&Continue"));
- ui.action_Pause->setEnabled(true);
- ui.action_Stop->setEnabled(true);
- ui.action_Restart->setEnabled(true);
- ui.action_Configure_Current_Game->setEnabled(true);
- ui.action_Report_Compatibility->setEnabled(true);
+ ui->action_Pause->setEnabled(true);
+ ui->action_Stop->setEnabled(true);
+ ui->action_Restart->setEnabled(true);
+ ui->action_Configure_Current_Game->setEnabled(true);
+ ui->action_Report_Compatibility->setEnabled(true);
discord_rpc->Update();
- ui.action_Load_Amiibo->setEnabled(true);
- ui.action_Capture_Screenshot->setEnabled(true);
+ ui->action_Load_Amiibo->setEnabled(true);
+ ui->action_Capture_Screenshot->setEnabled(true);
}
void GMainWindow::OnPauseGame() {
emu_thread->SetRunning(false);
- ui.action_Start->setEnabled(true);
- ui.action_Pause->setEnabled(false);
- ui.action_Stop->setEnabled(true);
- ui.action_Capture_Screenshot->setEnabled(false);
+ ui->action_Start->setEnabled(true);
+ ui->action_Pause->setEnabled(false);
+ ui->action_Stop->setEnabled(true);
+ ui->action_Capture_Screenshot->setEnabled(false);
AllowOSSleep();
}
void GMainWindow::OnStopGame() {
- auto& system{Core::System::GetInstance()};
if (system.GetExitLock() && !ConfirmForceLockedExit()) {
return;
}
@@ -2477,8 +2473,8 @@ void GMainWindow::OnExit() {
}
void GMainWindow::ErrorDisplayDisplayError(QString error_code, QString error_text) {
- OverlayDialog dialog(render_window, Core::System::GetInstance(), error_code, error_text,
- QString{}, tr("OK"), Qt::AlignLeft | Qt::AlignVCenter);
+ OverlayDialog dialog(render_window, system, error_code, error_text, QString{}, tr("OK"),
+ Qt::AlignLeft | Qt::AlignVCenter);
dialog.exec();
emit ErrorDisplayFinished();
@@ -2487,7 +2483,7 @@ void GMainWindow::ErrorDisplayDisplayError(QString error_code, QString error_tex
void GMainWindow::OnMenuReportCompatibility() {
if (!Settings::values.yuzu_token.GetValue().empty() &&
!Settings::values.yuzu_username.GetValue().empty()) {
- CompatDB compatdb{this};
+ CompatDB compatdb{system.TelemetrySession(), this};
compatdb.exec();
} else {
QMessageBox::critical(
@@ -2523,7 +2519,7 @@ void GMainWindow::ToggleFullscreen() {
if (!emulation_running) {
return;
}
- if (ui.action_Fullscreen->isChecked()) {
+ if (ui->action_Fullscreen->isChecked()) {
ShowFullscreen();
} else {
HideFullscreen();
@@ -2531,10 +2527,10 @@ void GMainWindow::ToggleFullscreen() {
}
void GMainWindow::ShowFullscreen() {
- if (ui.action_Single_Window_Mode->isChecked()) {
+ if (ui->action_Single_Window_Mode->isChecked()) {
UISettings::values.geometry = saveGeometry();
- ui.menubar->hide();
+ ui->menubar->hide();
statusBar()->hide();
if (Settings::values.fullscreen_mode.GetValue() == Settings::FullscreenMode::Exclusive) {
@@ -2568,7 +2564,7 @@ void GMainWindow::ShowFullscreen() {
}
void GMainWindow::HideFullscreen() {
- if (ui.action_Single_Window_Mode->isChecked()) {
+ if (ui->action_Single_Window_Mode->isChecked()) {
if (Settings::values.fullscreen_mode.GetValue() == Settings::FullscreenMode::Exclusive) {
showNormal();
restoreGeometry(UISettings::values.geometry);
@@ -2580,8 +2576,8 @@ void GMainWindow::HideFullscreen() {
show();
}
- statusBar()->setVisible(ui.action_Show_Status_Bar->isChecked());
- ui.menubar->show();
+ statusBar()->setVisible(ui->action_Show_Status_Bar->isChecked());
+ ui->menubar->show();
} else {
if (Settings::values.fullscreen_mode.GetValue() == Settings::FullscreenMode::Exclusive) {
render_window->showNormal();
@@ -2597,10 +2593,10 @@ void GMainWindow::HideFullscreen() {
}
void GMainWindow::ToggleWindowMode() {
- if (ui.action_Single_Window_Mode->isChecked()) {
+ if (ui->action_Single_Window_Mode->isChecked()) {
// Render in the main window...
render_window->BackupGeometry();
- ui.horizontalLayout->addWidget(render_window);
+ ui->horizontalLayout->addWidget(render_window);
render_window->setFocusPolicy(Qt::StrongFocus);
if (emulation_running) {
render_window->setVisible(true);
@@ -2610,7 +2606,7 @@ void GMainWindow::ToggleWindowMode() {
} else {
// Render in a separate window...
- ui.horizontalLayout->removeWidget(render_window);
+ ui->horizontalLayout->removeWidget(render_window);
render_window->setParent(nullptr);
render_window->setFocusPolicy(Qt::NoFocus);
if (emulation_running) {
@@ -2621,39 +2617,37 @@ void GMainWindow::ToggleWindowMode() {
}
}
-void GMainWindow::ResetWindowSize720() {
+void GMainWindow::ResetWindowSize(u32 width, u32 height) {
const auto aspect_ratio = Layout::EmulationAspectRatio(
static_cast<Layout::AspectRatio>(Settings::values.aspect_ratio.GetValue()),
- static_cast<float>(Layout::ScreenUndocked::Height) / Layout::ScreenUndocked::Width);
- if (!ui.action_Single_Window_Mode->isChecked()) {
- render_window->resize(Layout::ScreenUndocked::Height / aspect_ratio,
- Layout::ScreenUndocked::Height);
+ static_cast<float>(height) / width);
+ if (!ui->action_Single_Window_Mode->isChecked()) {
+ render_window->resize(height / aspect_ratio, height);
} else {
- resize(Layout::ScreenUndocked::Height / aspect_ratio,
- Layout::ScreenUndocked::Height + menuBar()->height() +
- (ui.action_Show_Status_Bar->isChecked() ? statusBar()->height() : 0));
+ const bool show_status_bar = ui->action_Show_Status_Bar->isChecked();
+ const auto status_bar_height = show_status_bar ? statusBar()->height() : 0;
+ resize(height / aspect_ratio, height + menuBar()->height() + status_bar_height);
}
}
+void GMainWindow::ResetWindowSize720() {
+ ResetWindowSize(Layout::ScreenUndocked::Width, Layout::ScreenUndocked::Height);
+}
+
+void GMainWindow::ResetWindowSize900() {
+ ResetWindowSize(1600U, 900U);
+}
+
void GMainWindow::ResetWindowSize1080() {
- const auto aspect_ratio = Layout::EmulationAspectRatio(
- static_cast<Layout::AspectRatio>(Settings::values.aspect_ratio.GetValue()),
- static_cast<float>(Layout::ScreenDocked::Height) / Layout::ScreenDocked::Width);
- if (!ui.action_Single_Window_Mode->isChecked()) {
- render_window->resize(Layout::ScreenDocked::Height / aspect_ratio,
- Layout::ScreenDocked::Height);
- } else {
- resize(Layout::ScreenDocked::Height / aspect_ratio,
- Layout::ScreenDocked::Height + menuBar()->height() +
- (ui.action_Show_Status_Bar->isChecked() ? statusBar()->height() : 0));
- }
+ ResetWindowSize(Layout::ScreenDocked::Width, Layout::ScreenDocked::Height);
}
void GMainWindow::OnConfigure() {
const auto old_theme = UISettings::values.theme;
const bool old_discord_presence = UISettings::values.enable_discord_presence.GetValue();
- ConfigureDialog configure_dialog(this, hotkey_registry, input_subsystem.get());
+ Settings::SetConfiguringGlobal(true);
+ ConfigureDialog configure_dialog(this, hotkey_registry, input_subsystem.get(), system);
connect(&configure_dialog, &ConfigureDialog::LanguageChanged, this,
&GMainWindow::OnLanguageChanged);
@@ -2689,7 +2683,7 @@ void GMainWindow::OnConfigure() {
Settings::values.disabled_addons.clear();
- config = std::make_unique<Config>();
+ config = std::make_unique<Config>(system);
UISettings::values.reset_to_defaults = false;
UISettings::values.game_dirs = std::move(old_game_dirs);
@@ -2751,15 +2745,15 @@ void GMainWindow::OnConfigureTas() {
}
void GMainWindow::OnConfigurePerGame() {
- const u64 title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID();
+ const u64 title_id = system.CurrentProcess()->GetTitleID();
OpenPerGameConfiguration(title_id, game_path.toStdString());
}
void GMainWindow::OpenPerGameConfiguration(u64 title_id, const std::string& file_name) {
const auto v_file = Core::GetGameFileFromPath(vfs, file_name);
- const auto& system = Core::System::GetInstance();
- ConfigurePerGame dialog(this, title_id, file_name);
+ Settings::SetConfiguringGlobal(false);
+ ConfigurePerGame dialog(this, title_id, file_name, system);
dialog.LoadFromFile(v_file);
const auto result = dialog.exec();
@@ -2799,7 +2793,6 @@ void GMainWindow::OnLoadAmiibo() {
}
void GMainWindow::LoadAmiibo(const QString& filename) {
- Core::System& system{Core::System::GetInstance()};
Service::SM::ServiceManager& sm = system.ServiceManager();
auto nfc = sm.GetService<Service::NFP::Module::Interface>("nfp:user");
if (nfc == nullptr) {
@@ -2842,8 +2835,8 @@ void GMainWindow::OnAbout() {
}
void GMainWindow::OnToggleFilterBar() {
- game_list->SetFilterVisible(ui.action_Show_Filter_Bar->isChecked());
- if (ui.action_Show_Filter_Bar->isChecked()) {
+ game_list->SetFilterVisible(ui->action_Show_Filter_Bar->isChecked());
+ if (ui->action_Show_Filter_Bar->isChecked()) {
game_list->SetFilterFocus();
} else {
game_list->ClearFilter();
@@ -2851,7 +2844,7 @@ void GMainWindow::OnToggleFilterBar() {
}
void GMainWindow::OnCaptureScreenshot() {
- const u64 title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID();
+ const u64 title_id = system.CurrentProcess()->GetTitleID();
const auto screenshot_path =
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ScreenshotsDir));
const auto date =
@@ -2957,7 +2950,6 @@ void GMainWindow::UpdateStatusBar() {
tas_label->clear();
}
- auto& system = Core::System::GetInstance();
auto results = system.GetAndResetPerfStats();
auto& shader_notify = system.GPU().ShaderNotify();
const int shaders_building = shader_notify.ShadersBuilding();
@@ -3021,7 +3013,7 @@ void GMainWindow::UpdateStatusButtons() {
}
void GMainWindow::UpdateUISettings() {
- if (!ui.action_Fullscreen->isChecked()) {
+ if (!ui->action_Fullscreen->isChecked()) {
UISettings::values.geometry = saveGeometry();
UISettings::values.renderwindow_geometry = render_window->saveGeometry();
}
@@ -3030,11 +3022,11 @@ void GMainWindow::UpdateUISettings() {
UISettings::values.microprofile_geometry = microProfileDialog->saveGeometry();
UISettings::values.microprofile_visible = microProfileDialog->isVisible();
#endif
- UISettings::values.single_window_mode = ui.action_Single_Window_Mode->isChecked();
- UISettings::values.fullscreen = ui.action_Fullscreen->isChecked();
- UISettings::values.display_titlebar = ui.action_Display_Dock_Widget_Headers->isChecked();
- UISettings::values.show_filter_bar = ui.action_Show_Filter_Bar->isChecked();
- UISettings::values.show_status_bar = ui.action_Show_Status_Bar->isChecked();
+ UISettings::values.single_window_mode = ui->action_Single_Window_Mode->isChecked();
+ UISettings::values.fullscreen = ui->action_Fullscreen->isChecked();
+ UISettings::values.display_titlebar = ui->action_Display_Dock_Widget_Headers->isChecked();
+ UISettings::values.show_filter_bar = ui->action_Show_Filter_Bar->isChecked();
+ UISettings::values.show_status_bar = ui->action_Show_Status_Bar->isChecked();
UISettings::values.first_start = false;
}
@@ -3120,7 +3112,7 @@ void GMainWindow::OnCoreError(Core::System::ResultStatus result, std::string det
if (emu_thread) {
ShutdownGame();
- Settings::RestoreGlobalState(Core::System::GetInstance().IsPoweredOn());
+ Settings::RestoreGlobalState(system.IsPoweredOn());
UpdateStatusButtons();
}
} else {
@@ -3162,7 +3154,6 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) {
const auto function = [this, &keys, &pdm] {
keys.PopulateFromPartitionData(pdm);
- auto& system = Core::System::GetInstance();
system.GetFileSystemController().CreateFactories(*vfs);
keys.DeriveETicket(pdm, system.GetContentProvider());
};
@@ -3206,7 +3197,7 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) {
prog.close();
}
- Core::System::GetInstance().GetFileSystemController().CreateFactories(*vfs);
+ system.GetFileSystemController().CreateFactories(*vfs);
if (behavior == ReinitializeKeyBehavior::Warning) {
game_list->PopulateAsync(UISettings::values.game_dirs);
@@ -3274,7 +3265,7 @@ void GMainWindow::closeEvent(QCloseEvent* event) {
if (emu_thread != nullptr) {
ShutdownGame();
- Settings::RestoreGlobalState(Core::System::GetInstance().IsPoweredOn());
+ Settings::RestoreGlobalState(system.IsPoweredOn());
UpdateStatusButtons();
}
@@ -3349,7 +3340,7 @@ bool GMainWindow::ConfirmForceLockedExit() {
}
void GMainWindow::RequestGameExit() {
- auto& sm{Core::System::GetInstance().ServiceManager()};
+ auto& sm{system.ServiceManager()};
auto applet_oe = sm.GetService<Service::AM::AppletOE>("appletOE");
auto applet_ae = sm.GetService<Service::AM::AppletAE>("appletAE");
bool has_signalled = false;
@@ -3365,7 +3356,7 @@ void GMainWindow::RequestGameExit() {
}
void GMainWindow::filterBarSetChecked(bool state) {
- ui.action_Show_Filter_Bar->setChecked(state);
+ ui->action_Show_Filter_Bar->setChecked(state);
emit(OnToggleFilterBar());
}
@@ -3433,17 +3424,17 @@ void GMainWindow::OnLanguageChanged(const QString& locale) {
UISettings::values.language = locale;
LoadTranslation();
- ui.retranslateUi(this);
+ ui->retranslateUi(this);
UpdateWindowTitle();
if (emulation_running)
- ui.action_Start->setText(tr("&Continue"));
+ ui->action_Start->setText(tr("&Continue"));
}
void GMainWindow::SetDiscordEnabled([[maybe_unused]] bool state) {
#ifdef USE_DISCORD_PRESENCE
if (state) {
- discord_rpc = std::make_unique<DiscordRPC::DiscordImpl>();
+ discord_rpc = std::make_unique<DiscordRPC::DiscordImpl>(system);
} else {
discord_rpc = std::make_unique<DiscordRPC::NullImpl>();
}
@@ -3498,7 +3489,7 @@ int main(int argc, char* argv[]) {
setlocale(LC_ALL, "C");
Core::System::InitializeGlobalInstance();
- GMainWindow main_window;
+ GMainWindow main_window{Core::System::GetInstance()};
// After settings have been loaded by GMainWindow, apply the filter
main_window.show();