diff options
| author | Arisotura <thetotalworm@gmail.com> | 2020-05-28 12:32:50 +0200 | 
|---|---|---|
| committer | Arisotura <thetotalworm@gmail.com> | 2020-05-28 12:32:50 +0200 | 
| commit | 695839bb0ef8173ad2a549dd7766186fa65e949a (patch) | |
| tree | b23bf6bca78d7e9965b52411023bac561b5ac19c /src | |
| parent | 0a68eb78039a7a27b16d389844beeebed139f864 (diff) | |
lay base for video settings dialog
Diffstat (limited to 'src')
| -rw-r--r-- | src/frontend/qt_sdl/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/frontend/qt_sdl/VideoSettingsDialog.cpp | 67 | ||||
| -rw-r--r-- | src/frontend/qt_sdl/VideoSettingsDialog.h | 67 | ||||
| -rw-r--r-- | src/frontend/qt_sdl/VideoSettingsDialog.ui | 220 | ||||
| -rw-r--r-- | src/frontend/qt_sdl/main.cpp | 3 | 
5 files changed, 357 insertions, 1 deletions
| diff --git a/src/frontend/qt_sdl/CMakeLists.txt b/src/frontend/qt_sdl/CMakeLists.txt index 5778b40..a4bb5f5 100644 --- a/src/frontend/qt_sdl/CMakeLists.txt +++ b/src/frontend/qt_sdl/CMakeLists.txt @@ -5,6 +5,7 @@ SET(SOURCES_QT_SDL  	main_shaders.h  	EmuSettingsDialog.cpp  	InputConfigDialog.cpp +	VideoSettingsDialog.cpp  	AudioSettingsDialog.cpp  	Input.cpp  	Platform.cpp diff --git a/src/frontend/qt_sdl/VideoSettingsDialog.cpp b/src/frontend/qt_sdl/VideoSettingsDialog.cpp new file mode 100644 index 0000000..c0ec42a --- /dev/null +++ b/src/frontend/qt_sdl/VideoSettingsDialog.cpp @@ -0,0 +1,67 @@ +/* +    Copyright 2016-2020 Arisotura + +    This file is part of melonDS. + +    melonDS is free software: you can redistribute it and/or modify it under +    the terms of the GNU General Public License as published by the Free +    Software Foundation, either version 3 of the License, or (at your option) +    any later version. + +    melonDS is distributed in the hope that it will be useful, but WITHOUT ANY +    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +    FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +    You should have received a copy of the GNU General Public License along +    with melonDS. If not, see http://www.gnu.org/licenses/. +*/ + +#include <stdio.h> +#include <QFileDialog> + +#include "types.h" +#include "Platform.h" +#include "Config.h" +#include "PlatformConfig.h" + +#include "VideoSettingsDialog.h" +#include "ui_VideoSettingsDialog.h" + + +VideoSettingsDialog* VideoSettingsDialog::currentDlg = nullptr; + + +VideoSettingsDialog::VideoSettingsDialog(QWidget* parent) : QDialog(parent), ui(new Ui::VideoSettingsDialog) +{ +    ui->setupUi(this); +    setAttribute(Qt::WA_DeleteOnClose); + +    // + +    grp3DRenderer = new QButtonGroup(this); +    grp3DRenderer->addButton(ui->rb3DSoftware, 0); +    grp3DRenderer->addButton(ui->rb3DOpenGL,   1); +    //connect(grp3DRenderer, SIGNAL(buttonClicked(int)), this, SLOT(onChange3DRenderer(int))); +} + +VideoSettingsDialog::~VideoSettingsDialog() +{ +    delete ui; +} + +void VideoSettingsDialog::on_VideoSettingsDialog_accepted() +{ +    // +    Config::Save(); + +    closeDlg(); +} + +void VideoSettingsDialog::on_VideoSettingsDialog_rejected() +{ +    // + +    closeDlg(); +} + +// diff --git a/src/frontend/qt_sdl/VideoSettingsDialog.h b/src/frontend/qt_sdl/VideoSettingsDialog.h new file mode 100644 index 0000000..d64cee2 --- /dev/null +++ b/src/frontend/qt_sdl/VideoSettingsDialog.h @@ -0,0 +1,67 @@ +/* +    Copyright 2016-2020 Arisotura + +    This file is part of melonDS. + +    melonDS is free software: you can redistribute it and/or modify it under +    the terms of the GNU General Public License as published by the Free +    Software Foundation, either version 3 of the License, or (at your option) +    any later version. + +    melonDS is distributed in the hope that it will be useful, but WITHOUT ANY +    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +    FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +    You should have received a copy of the GNU General Public License along +    with melonDS. If not, see http://www.gnu.org/licenses/. +*/ + +#ifndef VIDEOSETTINGSDIALOG_H +#define VIDEOSETTINGSDIALOG_H + +#include <QDialog> +#include <QButtonGroup> + +namespace Ui { class VideoSettingsDialog; } +class VideoSettingsDialog; + +class VideoSettingsDialog : public QDialog +{ +    Q_OBJECT + +public: +    explicit VideoSettingsDialog(QWidget* parent); +    ~VideoSettingsDialog(); + +    static VideoSettingsDialog* currentDlg; +    static VideoSettingsDialog* openDlg(QWidget* parent) +    { +        if (currentDlg) +        { +            currentDlg->activateWindow(); +            return currentDlg; +        } + +        currentDlg = new VideoSettingsDialog(parent); +        currentDlg->show(); +        return currentDlg; +    } +    static void closeDlg() +    { +        currentDlg = nullptr; +    } + +private slots: +    void on_VideoSettingsDialog_accepted(); +    void on_VideoSettingsDialog_rejected(); + +    // + +private: +    Ui::VideoSettingsDialog* ui; + +    QButtonGroup* grp3DRenderer; +}; + +#endif // VIDEOSETTINGSDIALOG_H + diff --git a/src/frontend/qt_sdl/VideoSettingsDialog.ui b/src/frontend/qt_sdl/VideoSettingsDialog.ui new file mode 100644 index 0000000..06670e5 --- /dev/null +++ b/src/frontend/qt_sdl/VideoSettingsDialog.ui @@ -0,0 +1,220 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>VideoSettingsDialog</class> + <widget class="QDialog" name="VideoSettingsDialog"> +  <property name="geometry"> +   <rect> +    <x>0</x> +    <y>0</y> +    <width>482</width> +    <height>237</height> +   </rect> +  </property> +  <property name="windowTitle"> +   <string>Video settings - melonDS</string> +  </property> +  <layout class="QGridLayout" name="gridLayout"> +   <item row="1" column="1"> +    <widget class="QGroupBox" name="groupBox_3"> +     <property name="title"> +      <string>OpenGL renderer</string> +     </property> +     <layout class="QGridLayout" name="gridLayout_4"> +      <item row="0" column="0"> +       <widget class="QLabel" name="label_3"> +        <property name="text"> +         <string>Internal resolution:</string> +        </property> +       </widget> +      </item> +      <item row="1" column="0"> +       <widget class="QComboBox" name="cbxGLResolution"> +        <property name="whatsThis"> +         <string><html><head/><body><p>The resolution at which the 3D graphics will be rendered. Higher resolutions improve graphics quality when the main window is enlarged, but may also cause glitches.</p></body></html></string> +        </property> +       </widget> +      </item> +     </layout> +    </widget> +   </item> +   <item row="0" column="1"> +    <widget class="QGroupBox" name="groupBox_2"> +     <property name="title"> +      <string>Software renderer</string> +     </property> +     <layout class="QGridLayout" name="gridLayout_3"> +      <item row="0" column="0"> +       <widget class="QCheckBox" name="cbSoftwareThreaded"> +        <property name="whatsThis"> +         <string><html><head/><body><p>Run the software renderer on a separate thread. Yields better performance on multi-core CPUs.</p></body></html></string> +        </property> +        <property name="text"> +         <string>Use separate thread</string> +        </property> +       </widget> +      </item> +     </layout> +    </widget> +   </item> +   <item row="4" column="0" colspan="2"> +    <widget class="QDialogButtonBox" name="buttonBox"> +     <property name="orientation"> +      <enum>Qt::Horizontal</enum> +     </property> +     <property name="standardButtons"> +      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> +     </property> +    </widget> +   </item> +   <item row="2" column="1"> +    <spacer name="verticalSpacer_2"> +     <property name="orientation"> +      <enum>Qt::Vertical</enum> +     </property> +     <property name="sizeHint" stdset="0"> +      <size> +       <width>20</width> +       <height>40</height> +      </size> +     </property> +    </spacer> +   </item> +   <item row="0" column="0" rowspan="3"> +    <widget class="QGroupBox" name="groupBox"> +     <property name="title"> +      <string>Display settings</string> +     </property> +     <layout class="QGridLayout" name="gridLayout_2"> +      <item row="6" column="0"> +       <widget class="QLabel" name="label_2"> +        <property name="sizePolicy"> +         <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> +          <horstretch>0</horstretch> +          <verstretch>0</verstretch> +         </sizepolicy> +        </property> +        <property name="whatsThis"> +         <string><html><head/><body><p>The interval at which to synchronize to the monitor's refresh rate. Set to 1 for a 60Hz monitor, 2 for 120Hz, ...</p></body></html></string> +        </property> +        <property name="text"> +         <string>VSync interval:</string> +        </property> +       </widget> +      </item> +      <item row="6" column="1"> +       <widget class="QSpinBox" name="sbVSyncInterval"> +        <property name="whatsThis"> +         <string><html><head/><body><p>The interval at which to synchronize to the monitor's refresh rate. Set to 1 for a 60Hz monitor, 2 for 120Hz, ...</p></body></html></string> +        </property> +        <property name="minimum"> +         <number>1</number> +        </property> +        <property name="maximum"> +         <number>20</number> +        </property> +       </widget> +      </item> +      <item row="4" column="0" colspan="2"> +       <widget class="QCheckBox" name="cbGLDisplay"> +        <property name="whatsThis"> +         <string><html><head/><body><p>Use OpenGL to draw the DS screens to the main window. May result in better frame pacing. Mandatory when using the OpenGL 3D renderer.</p></body></html></string> +        </property> +        <property name="text"> +         <string>OpenGL display</string> +        </property> +       </widget> +      </item> +      <item row="5" column="0" colspan="2"> +       <widget class="QCheckBox" name="cbVSync"> +        <property name="whatsThis"> +         <string><html><head/><body><p>When using OpenGL, synchronize the video output to your monitor's refresh rate.</p></body></html></string> +        </property> +        <property name="text"> +         <string>VSync</string> +        </property> +       </widget> +      </item> +      <item row="3" column="0" colspan="2"> +       <spacer name="verticalSpacer"> +        <property name="orientation"> +         <enum>Qt::Vertical</enum> +        </property> +        <property name="sizeType"> +         <enum>QSizePolicy::Fixed</enum> +        </property> +        <property name="sizeHint" stdset="0"> +         <size> +          <width>20</width> +          <height>20</height> +         </size> +        </property> +       </spacer> +      </item> +      <item row="2" column="0" colspan="2"> +       <widget class="QRadioButton" name="rb3DOpenGL"> +        <property name="whatsThis"> +         <string><html><head/><body><p>The OpenGL renderer may be faster than software and supports graphical enhancements, but is more prone to glitches.</p></body></html></string> +        </property> +        <property name="text"> +         <string>OpenGL</string> +        </property> +       </widget> +      </item> +      <item row="1" column="0" colspan="2"> +       <widget class="QRadioButton" name="rb3DSoftware"> +        <property name="whatsThis"> +         <string><html><head/><body><p>The software renderer is more accurate and less prone to rendering glitches, but requires more CPU power.</p></body></html></string> +        </property> +        <property name="text"> +         <string>Software</string> +        </property> +       </widget> +      </item> +      <item row="0" column="0" colspan="2"> +       <widget class="QLabel" name="label"> +        <property name="text"> +         <string>3D renderer:</string> +        </property> +       </widget> +      </item> +     </layout> +    </widget> +   </item> +  </layout> + </widget> + <resources/> + <connections> +  <connection> +   <sender>buttonBox</sender> +   <signal>accepted()</signal> +   <receiver>VideoSettingsDialog</receiver> +   <slot>accept()</slot> +   <hints> +    <hint type="sourcelabel"> +     <x>248</x> +     <y>254</y> +    </hint> +    <hint type="destinationlabel"> +     <x>157</x> +     <y>274</y> +    </hint> +   </hints> +  </connection> +  <connection> +   <sender>buttonBox</sender> +   <signal>rejected()</signal> +   <receiver>VideoSettingsDialog</receiver> +   <slot>reject()</slot> +   <hints> +    <hint type="sourcelabel"> +     <x>316</x> +     <y>260</y> +    </hint> +    <hint type="destinationlabel"> +     <x>286</x> +     <y>274</y> +    </hint> +   </hints> +  </connection> + </connections> +</ui> diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp index 20084ff..ae4bcf3 100644 --- a/src/frontend/qt_sdl/main.cpp +++ b/src/frontend/qt_sdl/main.cpp @@ -36,6 +36,7 @@  #include "Input.h"  #include "EmuSettingsDialog.h"  #include "InputConfigDialog.h" +#include "VideoSettingsDialog.h"  #include "AudioSettingsDialog.h"  #include "types.h" @@ -1573,7 +1574,7 @@ void MainWindow::onInputConfigFinished(int res)  void MainWindow::onOpenVideoSettings()  { -    // +    VideoSettingsDialog* dlg = VideoSettingsDialog::openDlg(this);  }  void MainWindow::onOpenAudioSettings() |