lay base for the actual dialog

also make EmuSettingsDialog properly modal
This commit is contained in:
Arisotura 2020-08-11 17:38:29 +02:00
parent e217d016a7
commit 0bd53a34ef
6 changed files with 160 additions and 1 deletions

View File

@ -3,6 +3,7 @@ project(qt_sdl)
SET(SOURCES_QT_SDL
main.cpp
main_shaders.h
CheatsDialog.cpp
EmuSettingsDialog.cpp
InputConfigDialog.cpp
VideoSettingsDialog.cpp

View File

@ -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();
}

View File

@ -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

View File

@ -42,7 +42,7 @@ public:
}
currentDlg = new EmuSettingsDialog(parent);
currentDlg->show();
currentDlg->open();
return currentDlg;
}
static void closeDlg()

View File

@ -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()
{

View File

@ -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;