diff options
| author | bunnei <bunneidev@gmail.com> | 2018-01-16 10:00:24 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-01-16 10:00:24 -0500 | 
| commit | 3b28d382d041f1caebc30957dffb1e4a4bb6452e (patch) | |
| tree | 65d8b5d61324421eed4a1d11ff768a1cb0404b92 | |
| parent | 713c1ed2037e73d3eadcc605c839f069aefc4853 (diff) | |
| parent | 8cdc1be0df83b6070aed28be15ed0000cc81c05b (diff) | |
Merge pull request #38 from goaaats/citra_merges
Merge citra-emu PR#3001 by Styleoshin(citra-qt : Adding fullscreen mode)
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 57 | ||||
| -rw-r--r-- | src/yuzu/main.h | 3 | ||||
| -rw-r--r-- | src/yuzu/main.ui | 11 | ||||
| -rw-r--r-- | src/yuzu/ui_settings.h | 1 | 
5 files changed, 73 insertions, 1 deletions
| diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index ab6ba0ec9..923a7c53f 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -137,6 +137,7 @@ void Config::ReadValues() {      qt_config->endGroup();      UISettings::values.single_window_mode = qt_config->value("singleWindowMode", true).toBool(); +    UISettings::values.fullscreen = qt_config->value("fullscreen", false).toBool();      UISettings::values.display_titlebar = qt_config->value("displayTitleBars", true).toBool();      UISettings::values.show_filter_bar = qt_config->value("showFilterBar", true).toBool();      UISettings::values.show_status_bar = qt_config->value("showStatusBar", true).toBool(); @@ -216,6 +217,7 @@ void Config::SaveValues() {      qt_config->endGroup();      qt_config->setValue("singleWindowMode", UISettings::values.single_window_mode); +    qt_config->setValue("fullscreen", UISettings::values.fullscreen);      qt_config->setValue("displayTitleBars", UISettings::values.display_titlebar);      qt_config->setValue("showFilterBar", UISettings::values.show_filter_bar);      qt_config->setValue("showStatusBar", UISettings::values.show_status_bar); diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index f64e68268..51d7f9418 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -185,12 +185,24 @@ void GMainWindow::InitializeRecentFileMenuActions() {  void GMainWindow::InitializeHotkeys() {      RegisterHotkey("Main Window", "Load File", QKeySequence::Open);      RegisterHotkey("Main Window", "Start Emulation"); +    RegisterHotkey( "Main Window", "Fullscreen", QKeySequence::FullScreen ); +    RegisterHotkey( "Main Window", "Exit Fullscreen", QKeySequence::Cancel, Qt::ApplicationShortcut );      LoadHotkeys();      connect(GetHotkey("Main Window", "Load File", this), SIGNAL(activated()), this,              SLOT(OnMenuLoadFile()));      connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this,              SLOT(OnStartGame())); +    connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activated, +             ui.action_Fullscreen, &QAction::trigger); +    connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activatedAmbiguously, +             ui.action_Fullscreen, &QAction::trigger); +    connect(GetHotkey("Main Window", "Exit Fullscreen", this), &QShortcut::activated, this, [&] { +        if (emulation_running) { +            ui.action_Fullscreen->setChecked(false); +            ToggleFullscreen(); +        } +    });  }  void GMainWindow::SetDefaultUIGeometry() { @@ -219,6 +231,8 @@ void GMainWindow::RestoreUIState() {      ui.action_Single_Window_Mode->setChecked(UISettings::values.single_window_mode);      ToggleWindowMode(); +    ui.action_Fullscreen->setChecked(UISettings::values.fullscreen); +      ui.action_Display_Dock_Widget_Headers->setChecked(UISettings::values.display_titlebar);      OnDisplayTitleBars(ui.action_Display_Dock_Widget_Headers->isChecked()); @@ -263,6 +277,10 @@ void GMainWindow::ConnectMenuEvents() {      connect(ui.action_Show_Filter_Bar, &QAction::triggered, this, &GMainWindow::OnToggleFilterBar);      connect(ui.action_Show_Status_Bar, &QAction::triggered, statusBar(), &QStatusBar::setVisible); +    // Fullscreen +    ui.action_Fullscreen->setShortcut(GetHotkey("Main Window", "Fullscreen", this)->key()); +    connect(ui.action_Fullscreen, &QAction::triggered, this, &GMainWindow::ToggleFullscreen); +      // Help      connect(ui.action_About, &QAction::triggered, this, &GMainWindow::OnAbout);  } @@ -402,6 +420,9 @@ void GMainWindow::BootGame(const QString& filename) {      render_window->setFocus();      emulation_running = true; +    if (ui.action_Fullscreen->isChecked()) { +        ShowFullscreen(); +    }      OnStartGame();  } @@ -548,6 +569,41 @@ void GMainWindow::OnStopGame() {      ShutdownGame();  } +void GMainWindow::ToggleFullscreen() { +    if (!emulation_running) { +        return; +    } +    if (ui.action_Fullscreen->isChecked()) { +        ShowFullscreen(); +    } else { +        HideFullscreen(); +    } +} + +void GMainWindow::ShowFullscreen() { +    if (ui.action_Single_Window_Mode->isChecked()) { +        UISettings::values.geometry = saveGeometry(); +        ui.menubar->hide(); +        statusBar()->hide(); +        showFullScreen(); +    } else { +        UISettings::values.renderwindow_geometry = render_window->saveGeometry(); +        render_window->showFullScreen(); +    } +} + +void GMainWindow::HideFullscreen() { +    if (ui.action_Single_Window_Mode->isChecked()) { +        statusBar()->setVisible(ui.action_Show_Status_Bar->isChecked()); +        ui.menubar->show(); +        showNormal(); +        restoreGeometry(UISettings::values.geometry); +    } else { +        render_window->showNormal(); +        render_window->restoreGeometry(UISettings::values.renderwindow_geometry); +    } +} +  void GMainWindow::ToggleWindowMode() {      if (ui.action_Single_Window_Mode->isChecked()) {          // Render in the main window... @@ -700,6 +756,7 @@ void GMainWindow::closeEvent(QCloseEvent* event) {      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(); diff --git a/src/yuzu/main.h b/src/yuzu/main.h index 3add882dd..4a0d912bb 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -127,6 +127,9 @@ private slots:      void OnAbout();      void OnToggleFilterBar();      void OnDisplayTitleBars(bool); +    void ToggleFullscreen(); +    void ShowFullscreen(); +    void HideFullscreen();      void ToggleWindowMode();      void OnCoreError(Core::System::ResultStatus, std::string); diff --git a/src/yuzu/main.ui b/src/yuzu/main.ui index 721e769e8..0fcd93cc2 100644 --- a/src/yuzu/main.ui +++ b/src/yuzu/main.ui @@ -83,6 +83,7 @@        <string>Debugging</string>       </property>      </widget> +    <addaction name="action_Fullscreen"/>      <addaction name="action_Single_Window_Mode"/>      <addaction name="action_Display_Dock_Widget_Headers"/>      <addaction name="action_Show_Filter_Bar"/> @@ -189,6 +190,14 @@      <string>Selects a folder to display in the game list</string>     </property>    </action> - </widget> +  <action name="action_Fullscreen"> +   <property name="checkable"> +    <bool>true</bool> +   </property> +   <property name="text"> +    <string>Fullscreen</string> +   </property> +  </action> +  </widget>   <resources/>  </ui> diff --git a/src/yuzu/ui_settings.h b/src/yuzu/ui_settings.h index e965f0ba9..d093da641 100644 --- a/src/yuzu/ui_settings.h +++ b/src/yuzu/ui_settings.h @@ -27,6 +27,7 @@ struct Values {      bool microprofile_visible;      bool single_window_mode; +    bool fullscreen;      bool display_titlebar;      bool show_filter_bar;      bool show_status_bar; | 
