aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/frontend/qt_sdl/CMakeLists.txt1
-rw-r--r--src/frontend/qt_sdl/CheatsDialog.cpp61
-rw-r--r--src/frontend/qt_sdl/CheatsDialog.h65
-rw-r--r--src/frontend/qt_sdl/EmuSettingsDialog.h2
-rw-r--r--src/frontend/qt_sdl/main.cpp27
-rw-r--r--src/frontend/qt_sdl/main.h5
6 files changed, 160 insertions, 1 deletions
diff --git a/src/frontend/qt_sdl/CMakeLists.txt b/src/frontend/qt_sdl/CMakeLists.txt
index 05c42d1..9a0a025 100644
--- a/src/frontend/qt_sdl/CMakeLists.txt
+++ b/src/frontend/qt_sdl/CMakeLists.txt
@@ -3,6 +3,7 @@ project(qt_sdl)
SET(SOURCES_QT_SDL
main.cpp
main_shaders.h
+ CheatsDialog.cpp
EmuSettingsDialog.cpp
InputConfigDialog.cpp
VideoSettingsDialog.cpp
diff --git a/src/frontend/qt_sdl/CheatsDialog.cpp b/src/frontend/qt_sdl/CheatsDialog.cpp
new file mode 100644
index 0000000..2654e75
--- /dev/null
+++ b/src/frontend/qt_sdl/CheatsDialog.cpp
@@ -0,0 +1,61 @@
+/*
+ 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 "CheatsDialog.h"
+#include "ui_CheatsDialog.h"
+
+
+CheatsDialog* CheatsDialog::currentDlg = nullptr;
+
+extern char* EmuDirectory;
+
+
+CheatsDialog::CheatsDialog(QWidget* parent) : QDialog(parent), ui(new Ui::CheatsDialog)
+{
+ ui->setupUi(this);
+ setAttribute(Qt::WA_DeleteOnClose);
+
+ // setup UI here
+}
+
+CheatsDialog::~CheatsDialog()
+{
+ delete ui;
+}
+
+void CheatsDialog::on_CheatsDialog_accepted()
+{
+ // save shit here
+
+ closeDlg();
+}
+
+void CheatsDialog::on_CheatsDialog_rejected()
+{
+ // don't save shit here
+
+ closeDlg();
+}
diff --git a/src/frontend/qt_sdl/CheatsDialog.h b/src/frontend/qt_sdl/CheatsDialog.h
new file mode 100644
index 0000000..99582c8
--- /dev/null
+++ b/src/frontend/qt_sdl/CheatsDialog.h
@@ -0,0 +1,65 @@
+/*
+ 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 CHEATSDIALOG_H
+#define CHEATSDIALOG_H
+
+#include <QDialog>
+
+namespace Ui { class CheatsDialog; }
+class CheatsDialog;
+
+class CheatsDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit CheatsDialog(QWidget* parent);
+ ~CheatsDialog();
+
+ static CheatsDialog* currentDlg;
+ static CheatsDialog* openDlg(QWidget* parent)
+ {
+ if (currentDlg)
+ {
+ currentDlg->activateWindow();
+ return currentDlg;
+ }
+
+ currentDlg = new CheatsDialog(parent);
+ currentDlg->open();
+ return currentDlg;
+ }
+ static void closeDlg()
+ {
+ currentDlg = nullptr;
+ }
+
+private slots:
+ void on_CheatsDialog_accepted();
+ void on_CheatsDialog_rejected();
+
+ //
+
+private:
+ Ui::CheatsDialog* ui;
+
+ //
+};
+
+#endif // CHEATSDIALOG_H
diff --git a/src/frontend/qt_sdl/EmuSettingsDialog.h b/src/frontend/qt_sdl/EmuSettingsDialog.h
index c24a147..1a16ebc 100644
--- a/src/frontend/qt_sdl/EmuSettingsDialog.h
+++ b/src/frontend/qt_sdl/EmuSettingsDialog.h
@@ -42,7 +42,7 @@ public:
}
currentDlg = new EmuSettingsDialog(parent);
- currentDlg->show();
+ currentDlg->open();
return currentDlg;
}
static void closeDlg()
diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp
index e7f35c2..903e654 100644
--- a/src/frontend/qt_sdl/main.cpp
+++ b/src/frontend/qt_sdl/main.cpp
@@ -34,6 +34,7 @@
#include "main.h"
#include "Input.h"
+#include "CheatsDialog.h"
#include "EmuSettingsDialog.h"
#include "InputConfigDialog.h"
#include "VideoSettingsDialog.h"
@@ -1062,6 +1063,14 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
actStop = menu->addAction("Stop");
connect(actStop, &QAction::triggered, this, &MainWindow::onStop);
+
+ menu->addSeparator();
+
+ actEnableCheats = menu->addAction("Enable cheats");
+ connect(actEnableCheats, &QAction::triggered, this, &MainWindow::onEnableCheats);
+
+ actSetupCheats = menu->addAction("Setup cheat codes");
+ connect(actSetupCheats, &QAction::triggered, this, &MainWindow::onSetupCheats);
}
{
QMenu* menu = menubar->addMenu("Config");
@@ -1651,6 +1660,24 @@ void MainWindow::onStop()
NDS::Stop();
}
+void MainWindow::onEnableCheats(bool checked)
+{
+ //
+}
+
+void MainWindow::onSetupCheats()
+{
+ emuThread->emuPause();
+
+ CheatsDialog* dlg = CheatsDialog::openDlg(this);
+ connect(dlg, &CheatsDialog::finished, this, &MainWindow::onCheatsDialogFinished);
+}
+
+void MainWindow::onCheatsDialogFinished(int res)
+{
+ emuThread->emuUnpause();
+}
+
void MainWindow::onOpenEmuSettings()
{
diff --git a/src/frontend/qt_sdl/main.h b/src/frontend/qt_sdl/main.h
index 7f33973..cad30d6 100644
--- a/src/frontend/qt_sdl/main.h
+++ b/src/frontend/qt_sdl/main.h
@@ -198,6 +198,9 @@ private slots:
void onPause(bool checked);
void onReset();
void onStop();
+ void onEnableCheats(bool checked);
+ void onSetupCheats();
+ void onCheatsDialogFinished(int res);
void onOpenEmuSettings();
void onEmuSettingsDialogFinished(int res);
@@ -245,6 +248,8 @@ public:
QAction* actPause;
QAction* actReset;
QAction* actStop;
+ QAction* actEnableCheats;
+ QAction* actSetupCheats;
QAction* actEmuSettings;
QAction* actInputConfig;