aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2020-05-20 20:57:12 +0200
committerArisotura <thetotalworm@gmail.com>2020-05-20 20:57:12 +0200
commit7be662b2dd1e7f99cf5a31c18c115c1106300964 (patch)
tree97338398efd15f733053391dec1983e78dac8116
parent700b1a8b9dfb3cb7502a2f0941cea0090ddbdf44 (diff)
finish fleshing out the menus
-rw-r--r--src/frontend/qt_sdl/main.cpp256
-rw-r--r--src/frontend/qt_sdl/main.h41
2 files changed, 258 insertions, 39 deletions
diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp
index b81fc86..7ab7f0e 100644
--- a/src/frontend/qt_sdl/main.cpp
+++ b/src/frontend/qt_sdl/main.cpp
@@ -524,9 +524,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
for (int i = 1; i < 9; i++)
{
- char title[16];
- sprintf(title, "%d", i);
- actSaveState[i] = submenu->addAction(title);
+ actSaveState[i] = submenu->addAction(QString("%1").arg(i));
actSaveState[i]->setShortcut(QKeySequence(Qt::ShiftModifier | (Qt::Key_F1+i-1)));
actSaveState[i]->setData(QVariant(i));
connect(actSaveState[i], &QAction::triggered, this, &MainWindow::onSaveState);
@@ -542,9 +540,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
for (int i = 1; i < 9; i++)
{
- char title[16];
- sprintf(title, "%d", i);
- actLoadState[i] = submenu->addAction(title);
+ actLoadState[i] = submenu->addAction(QString("%1").arg(i));
actLoadState[i]->setShortcut(QKeySequence(Qt::Key_F1+i-1));
actLoadState[i]->setData(QVariant(i));
connect(actLoadState[i], &QAction::triggered, this, &MainWindow::onLoadState);
@@ -586,6 +582,125 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
actInputConfig = menu->addAction("Input and hotkeys");
connect(actInputConfig, &QAction::triggered, this, &MainWindow::onOpenInputConfig);
+
+ actVideoSettings = menu->addAction("Video settings");
+ connect(actVideoSettings, &QAction::triggered, this, &MainWindow::onOpenVideoSettings);
+
+ actAudioSettings = menu->addAction("Audio settings");
+ connect(actAudioSettings, &QAction::triggered, this, &MainWindow::onOpenAudioSettings);
+
+ actWifiSettings = menu->addAction("Wifi settings");
+ connect(actWifiSettings, &QAction::triggered, this, &MainWindow::onOpenWifiSettings);
+
+ {
+ QMenu* submenu = menu->addMenu("Savestate settings");
+
+ actSavestateSRAMReloc = submenu->addAction("Separate savefiles");
+ actSavestateSRAMReloc->setCheckable(true);
+ connect(actSavestateSRAMReloc, &QAction::triggered, this, &MainWindow::onChangeSavestateSRAMReloc);
+ }
+
+ menu->addSeparator();
+
+ {
+ QMenu* submenu = menu->addMenu("Screen size");
+
+ for (int i = 0; i < 4; i++)
+ {
+ int data = i+1;
+ actScreenSize[i] = submenu->addAction(QString("%1x").arg(data));
+ actScreenSize[i]->setData(QVariant(data));
+ connect(actScreenSize[i], &QAction::triggered, this, &MainWindow::onChangeScreenSize);
+ }
+ }
+ {
+ QMenu* submenu = menu->addMenu("Screen rotation");
+ grpScreenRotation = new QActionGroup(submenu);
+
+ for (int i = 0; i < 4; i++)
+ {
+ int data = i*90;
+ actScreenRotation[i] = submenu->addAction(QString("%1°").arg(data));
+ actScreenRotation[i]->setActionGroup(grpScreenRotation);
+ actScreenRotation[i]->setData(QVariant(data));
+ actScreenRotation[i]->setCheckable(true);
+ }
+
+ connect(grpScreenRotation, &QActionGroup::triggered, this, &MainWindow::onChangeScreenRotation);
+ }
+ {
+ QMenu* submenu = menu->addMenu("Screen gap");
+ grpScreenGap = new QActionGroup(submenu);
+
+ const int screengap[] = {0, 1, 8, 64, 90, 128};
+
+ for (int i = 0; i < 6; i++)
+ {
+ int data = screengap[i];
+ actScreenGap[i] = submenu->addAction(QString("%1 px").arg(data));
+ actScreenGap[i]->setActionGroup(grpScreenGap);
+ actScreenGap[i]->setData(QVariant(data));
+ actScreenGap[i]->setCheckable(true);
+ }
+
+ connect(grpScreenGap, &QActionGroup::triggered, this, &MainWindow::onChangeScreenGap);
+ }
+ {
+ QMenu* submenu = menu->addMenu("Screen layout");
+ grpScreenLayout = new QActionGroup(submenu);
+
+ const char* screenlayout[] = {"Natural", "Vertical", "Horizontal"};
+
+ for (int i = 0; i < 3; i++)
+ {
+ actScreenLayout[i] = submenu->addAction(QString(screenlayout[i]));
+ actScreenLayout[i]->setActionGroup(grpScreenLayout);
+ actScreenLayout[i]->setData(QVariant(i));
+ actScreenLayout[i]->setCheckable(true);
+ }
+
+ connect(grpScreenLayout, &QActionGroup::triggered, this, &MainWindow::onChangeScreenLayout);
+ }
+ {
+ QMenu* submenu = menu->addMenu("Screen sizing");
+ grpScreenSizing = new QActionGroup(submenu);
+
+ const char* screensizing[] = {"Even", "Emphasize top", "Emphasize bottom", "Auto"};
+
+ for (int i = 0; i < 4; i++)
+ {
+ actScreenSizing[i] = submenu->addAction(QString(screensizing[i]));
+ actScreenSizing[i]->setActionGroup(grpScreenSizing);
+ actScreenSizing[i]->setData(QVariant(i));
+ actScreenSizing[i]->setCheckable(true);
+ }
+
+ connect(grpScreenSizing, &QActionGroup::triggered, this, &MainWindow::onChangeScreenSizing);
+
+ submenu->addSeparator();
+
+ actIntegerScaling = submenu->addAction("Force integer scaling");
+ actIntegerScaling->setCheckable(true);
+ connect(actIntegerScaling, &QAction::triggered, this, &MainWindow::onChangeIntegerScaling);
+ }
+
+ actScreenFiltering = menu->addAction("Screen filtering");
+ actScreenFiltering->setCheckable(true);
+ connect(actScreenFiltering, &QAction::triggered, this, &MainWindow::onChangeScreenFiltering);
+
+ actShowOSD = menu->addAction("Show OSD");
+ actShowOSD->setCheckable(true);
+ connect(actShowOSD, &QAction::triggered, this, &MainWindow::onChangeShowOSD);
+
+ menu->addSeparator();
+
+ actLimitFramerate = menu->addAction("Limit framerate");
+ actLimitFramerate->setCheckable(true);
+ connect(actLimitFramerate, &QAction::triggered, this, &MainWindow::onChangeLimitFramerate);
+
+ actAudioSync = menu->addAction("Audio sync");
+ actAudioSync->setCheckable(true);
+ connect(actAudioSync, &QAction::triggered, this, &MainWindow::onChangeAudioSync);
}
setMenuBar(menubar);
@@ -756,7 +871,6 @@ void MainWindow::onOpenFile()
void MainWindow::onBootFirmware()
{
- // TODO: ensure the firmware is actually bootable!!
// TODO: check the whole GBA cart shito
emuThread->emuPause(true);
@@ -902,6 +1016,106 @@ void MainWindow::onStop()
}
+void MainWindow::onEmuPause()
+{
+ //
+}
+
+void MainWindow::onEmuUnpause()
+{
+ //
+}
+
+
+void MainWindow::onOpenEmuSettings()
+{
+ EmuSettingsDialog::openDlg(this);
+}
+
+void MainWindow::onOpenInputConfig()
+{
+ emuThread->emuPause(true);
+
+ InputConfigDialog* dlg = InputConfigDialog::openDlg(this);
+ connect(dlg, &InputConfigDialog::finished, this, &MainWindow::onInputConfigFinished);
+}
+
+void MainWindow::onInputConfigFinished(int res)
+{
+ emuThread->emuUnpause();
+}
+
+void MainWindow::onOpenVideoSettings()
+{
+ //
+}
+
+void MainWindow::onOpenAudioSettings()
+{
+ //
+}
+
+void MainWindow::onOpenWifiSettings()
+{
+ //
+}
+
+void MainWindow::onChangeSavestateSRAMReloc(bool checked)
+{
+ //
+}
+
+void MainWindow::onChangeScreenSize()
+{
+ //
+}
+
+void MainWindow::onChangeScreenRotation(QAction* act)
+{
+ printf("DATABOTTE %p\n", act);
+}
+
+void MainWindow::onChangeScreenGap(QAction* act)
+{
+ //
+}
+
+void MainWindow::onChangeScreenLayout(QAction* act)
+{
+ //
+}
+
+void MainWindow::onChangeScreenSizing(QAction* act)
+{
+ //
+}
+
+void MainWindow::onChangeIntegerScaling(bool checked)
+{
+ //
+}
+
+void MainWindow::onChangeScreenFiltering(bool checked)
+{
+ //
+}
+
+void MainWindow::onChangeShowOSD(bool checked)
+{
+ //
+}
+
+void MainWindow::onChangeLimitFramerate(bool checked)
+{
+ //
+}
+
+void MainWindow::onChangeAudioSync(bool checked)
+{
+ //
+}
+
+
void MainWindow::onTitleUpdate(QString title)
{
setWindowTitle(title);
@@ -938,34 +1152,6 @@ void MainWindow::onEmuStop()
actStop->setEnabled(false);
}
-void MainWindow::onEmuPause()
-{
- //
-}
-
-void MainWindow::onEmuUnpause()
-{
- //
-}
-
-
-void MainWindow::onOpenEmuSettings()
-{
- EmuSettingsDialog::openDlg(this);
-}
-
-void MainWindow::onOpenInputConfig()
-{
- emuThread->emuPause(true);
-
- InputConfigDialog* dlg = InputConfigDialog::openDlg(this);
- connect(dlg, &InputConfigDialog::finished, this, &MainWindow::onInputConfigFinished);
-}
-
-void MainWindow::onInputConfigFinished(int res)
-{
- emuThread->emuUnpause();
-}
int main(int argc, char** argv)
diff --git a/src/frontend/qt_sdl/main.h b/src/frontend/qt_sdl/main.h
index 83777bd..b478f4e 100644
--- a/src/frontend/qt_sdl/main.h
+++ b/src/frontend/qt_sdl/main.h
@@ -23,6 +23,7 @@
#include <QWidget>
#include <QMainWindow>
#include <QImage>
+#include <QActionGroup>
class EmuThread : public QThread
@@ -107,6 +108,24 @@ private slots:
void onReset();
void onStop();
+ void onOpenEmuSettings();
+ void onOpenInputConfig();
+ void onInputConfigFinished(int res);
+ void onOpenVideoSettings();
+ void onOpenAudioSettings();
+ void onOpenWifiSettings();
+ void onChangeSavestateSRAMReloc(bool checked);
+ void onChangeScreenSize();
+ void onChangeScreenRotation(QAction* act);
+ void onChangeScreenGap(QAction* act);
+ void onChangeScreenLayout(QAction* act);
+ void onChangeScreenSizing(QAction* act);
+ void onChangeIntegerScaling(bool checked);
+ void onChangeScreenFiltering(bool checked);
+ void onChangeShowOSD(bool checked);
+ void onChangeLimitFramerate(bool checked);
+ void onChangeAudioSync(bool checked);
+
void onTitleUpdate(QString title);
void onEmuStart();
@@ -114,10 +133,6 @@ private slots:
void onEmuPause();
void onEmuUnpause();
- void onOpenEmuSettings();
- void onOpenInputConfig();
- void onInputConfigFinished(int res);
-
private:
QString loadErrorStr(int error);
@@ -136,6 +151,24 @@ private:
QAction* actEmuSettings;
QAction* actInputConfig;
+ QAction* actVideoSettings;
+ QAction* actAudioSettings;
+ QAction* actWifiSettings;
+ QAction* actSavestateSRAMReloc;
+ QAction* actScreenSize[4];
+ QActionGroup* grpScreenRotation;
+ QAction* actScreenRotation[4];
+ QActionGroup* grpScreenGap;
+ QAction* actScreenGap[6];
+ QActionGroup* grpScreenLayout;
+ QAction* actScreenLayout[3];
+ QActionGroup* grpScreenSizing;
+ QAction* actScreenSizing[4];
+ QAction* actIntegerScaling;
+ QAction* actScreenFiltering;
+ QAction* actShowOSD;
+ QAction* actLimitFramerate;
+ QAction* actAudioSync;
};
#endif // MAIN_H