diff --git a/src/duckstation-qt/mainwindow.cpp b/src/duckstation-qt/mainwindow.cpp
index 9d853c696..97e67ef50 100644
--- a/src/duckstation-qt/mainwindow.cpp
+++ b/src/duckstation-qt/mainwindow.cpp
@@ -310,6 +310,34 @@ void MainWindow::onRemoveDiscActionTriggered()
m_host_interface->changeDisc(QString());
}
+void MainWindow::onViewToolbarActionToggled(bool checked)
+{
+ m_host_interface->SetBoolSettingValue("UI", "ShowToolbar", checked);
+ m_ui.toolBar->setVisible(checked);
+}
+
+void MainWindow::onViewStatusBarActionToggled(bool checked)
+{
+ m_host_interface->SetBoolSettingValue("UI", "ShowStatusBar", checked);
+ m_ui.statusBar->setVisible(checked);
+}
+
+void MainWindow::onViewGameListActionTriggered()
+{
+ if (m_emulation_running)
+ m_host_interface->pauseSystem(true);
+ switchToGameListView();
+}
+
+void MainWindow::onViewSystemDisplayTriggered()
+{
+ if (m_emulation_running)
+ {
+ switchToEmulationView();
+ m_host_interface->pauseSystem(false);
+ }
+}
+
void MainWindow::onGitHubRepositoryActionTriggered()
{
QtUtils::OpenURL(this, "https://github.com/stenzek/duckstation/");
@@ -431,6 +459,14 @@ void MainWindow::setupAdditionalUi()
{
setWindowTitle(getWindowTitle());
+ const bool toolbar_visible = m_host_interface->GetBoolSettingValue("UI", "ShowToolbar", true);
+ m_ui.actionViewToolbar->setChecked(toolbar_visible);
+ m_ui.toolBar->setVisible(toolbar_visible);
+
+ const bool status_bar_visible = m_host_interface->GetBoolSettingValue("UI", "ShowStatusBar", true);
+ m_ui.actionViewStatusBar->setChecked(status_bar_visible);
+ m_ui.statusBar->setVisible(status_bar_visible);
+
m_game_list_widget = new GameListWidget(m_ui.mainContainer);
m_game_list_widget->initialize(m_host_interface);
m_ui.mainContainer->insertWidget(0, m_game_list_widget);
@@ -509,6 +545,7 @@ void MainWindow::updateEmulationActions(bool starting, bool running)
m_ui.actionPause->setDisabled(starting || !running);
m_ui.actionChangeDisc->setDisabled(starting || !running);
m_ui.actionScreenshot->setDisabled(starting || !running);
+ m_ui.actionViewSystemDisplay->setEnabled(starting || running);
m_ui.menuChangeDisc->setDisabled(starting || !running);
m_ui.actionSaveState->setDisabled(starting || !running);
@@ -617,6 +654,10 @@ void MainWindow::connectSignals()
[this]() { doSettings(SettingsDialog::Category::AudioSettings); });
connect(m_ui.actionAdvancedSettings, &QAction::triggered,
[this]() { doSettings(SettingsDialog::Category::AdvancedSettings); });
+ connect(m_ui.actionViewToolbar, &QAction::toggled, this, &MainWindow::onViewToolbarActionToggled);
+ connect(m_ui.actionViewStatusBar, &QAction::toggled, this, &MainWindow::onViewStatusBarActionToggled);
+ connect(m_ui.actionViewGameList, &QAction::triggered, this, &MainWindow::onViewGameListActionTriggered);
+ connect(m_ui.actionViewSystemDisplay, &QAction::triggered, this, &MainWindow::onViewSystemDisplayTriggered);
connect(m_ui.actionGitHubRepository, &QAction::triggered, this, &MainWindow::onGitHubRepositoryActionTriggered);
connect(m_ui.actionIssueTracker, &QAction::triggered, this, &MainWindow::onIssueTrackerActionTriggered);
connect(m_ui.actionDiscordServer, &QAction::triggered, this, &MainWindow::onDiscordServerActionTriggered);
diff --git a/src/duckstation-qt/mainwindow.h b/src/duckstation-qt/mainwindow.h
index f5c0308d3..e53053866 100644
--- a/src/duckstation-qt/mainwindow.h
+++ b/src/duckstation-qt/mainwindow.h
@@ -62,6 +62,10 @@ private Q_SLOTS:
void onChangeDiscFromPlaylistMenuAboutToShow();
void onChangeDiscFromPlaylistMenuAboutToHide();
void onRemoveDiscActionTriggered();
+ void onViewToolbarActionToggled(bool checked);
+ void onViewStatusBarActionToggled(bool checked);
+ void onViewGameListActionTriggered();
+ void onViewSystemDisplayTriggered();
void onGitHubRepositoryActionTriggered();
void onIssueTrackerActionTriggered();
void onDiscordServerActionTriggered();
diff --git a/src/duckstation-qt/mainwindow.ui b/src/duckstation-qt/mainwindow.ui
index 03dafc216..14e80ffee 100644
--- a/src/duckstation-qt/mainwindow.ui
+++ b/src/duckstation-qt/mainwindow.ui
@@ -30,7 +30,7 @@
0
0
754
- 22
+ 30
+
+
@@ -560,6 +571,41 @@
Resumes the last save state created.
+
+
+ true
+
+
+ true
+
+
+ &Toolbar
+
+
+
+
+ true
+
+
+ true
+
+
+ &Status Bar
+
+
+
+
+ &Game List
+
+
+
+
+ false
+
+
+ System &Display
+
+