diff --git a/CMakeLists.txt b/CMakeLists.txt index a248ed1a..74e0b32f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -547,7 +547,10 @@ set(EMULATOR src/emulator.cpp if(ENABLE_QT_GUI) qt_add_resources(RESOURCE_FILES src/shadps4.qrc) -set(QT_GUI src/qt_gui/main_window_ui.h +set(QT_GUI src/qt_gui/about_dialog.cpp + src/qt_gui/about_dialog.h + src/qt_gui/about_dialog.ui + src/qt_gui/main_window_ui.h src/qt_gui/main_window.cpp src/qt_gui/main_window.h src/qt_gui/gui_context_menus.h diff --git a/src/qt_gui/about_dialog.cpp b/src/qt_gui/about_dialog.cpp new file mode 100644 index 00000000..a932d65a --- /dev/null +++ b/src/qt_gui/about_dialog.cpp @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "about_dialog.h" +#include "ui_about_dialog.h" + +AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent), ui(new Ui::AboutDialog) { + ui->setupUi(this); +} + +AboutDialog::~AboutDialog() { + delete ui; +} diff --git a/src/qt_gui/about_dialog.h b/src/qt_gui/about_dialog.h new file mode 100644 index 00000000..8c802221 --- /dev/null +++ b/src/qt_gui/about_dialog.h @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +namespace Ui { +class AboutDialog; +} + +class AboutDialog : public QDialog { + Q_OBJECT + +public: + explicit AboutDialog(QWidget* parent = nullptr); + ~AboutDialog(); + +private: + Ui::AboutDialog* ui; +}; \ No newline at end of file diff --git a/src/qt_gui/about_dialog.ui b/src/qt_gui/about_dialog.ui new file mode 100644 index 00000000..2b60476b --- /dev/null +++ b/src/qt_gui/about_dialog.ui @@ -0,0 +1,110 @@ + + + + AboutDialog + + + + 0 + 0 + 780 + 320 + + + + About shadPS4 + + + + :/images/shadps4.ico:/images/shadps4.ico + + + + + 10 + 30 + 271 + 261 + + + + QFrame::Shape::NoFrame + + + + + + :/images/shadps4.ico + + + true + + + true + + + + + + 310 + 40 + 171 + 41 + + + + + 24 + true + + + + shadPS4 + + + + + + 310 + 90 + 451 + 101 + + + + + 14 + + + + shadPS4 is an experimental open-source emulator for the PlayStation 4. + + + true + + + + + + 310 + 180 + 451 + 101 + + + + + 14 + + + + This software should not be used to play games you have not legally obtained. + + + true + + + + + diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 58f925b1..f862c064 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -9,6 +9,7 @@ #include #include +#include "about_dialog.h" #include "common/io_file.h" #include "common/version.h" #include "core/file_format/pkg.h" @@ -206,6 +207,11 @@ void MainWindow::CreateConnects() { settingsDialog->exec(); }); + connect(ui->aboutAct, &QAction::triggered, this, [this]() { + auto aboutDialog = new AboutDialog(this); + aboutDialog->exec(); + }); + connect(ui->setIconSizeTinyAct, &QAction::triggered, this, [this]() { if (isTableList) { m_game_list_frame->icon_size = diff --git a/src/qt_gui/main_window_ui.h b/src/qt_gui/main_window_ui.h index 18d0b94f..b7132c64 100644 --- a/src/qt_gui/main_window_ui.h +++ b/src/qt_gui/main_window_ui.h @@ -45,6 +45,7 @@ public: QAction* gameInstallPathAct; QAction* dumpGameListAct; QAction* pkgViewerAct; + QAction* aboutAct; QAction* setThemeDark; QAction* setThemeLight; QAction* setThemeGreen; @@ -70,6 +71,7 @@ public: QMenu* menuSettings; QMenu* menuUtils; QMenu* menuThemes; + QMenu* menuAbout; QToolBar* toolBar; void setupUi(QMainWindow* MainWindow) { @@ -139,6 +141,8 @@ public: pkgViewerAct->setObjectName("pkgViewer"); pkgViewerAct->setObjectName("pkgViewer"); pkgViewerAct->setIcon(QIcon(":images/file_icon.png")); + aboutAct = new QAction(MainWindow); + aboutAct->setObjectName("aboutAct"); setThemeDark = new QAction(MainWindow); setThemeDark->setObjectName("setThemeDark"); setThemeDark->setCheckable(true); @@ -245,6 +249,8 @@ public: menuThemes = new QMenu(menuView); menuThemes->setObjectName("menuThemes"); menuThemes->setIcon(QIcon(":images/themes_icon.png")); + menuAbout = new QMenu(menuBar); + menuAbout->setObjectName("menuAbout"); MainWindow->setMenuBar(menuBar); toolBar = new QToolBar(MainWindow); toolBar->setObjectName("toolBar"); @@ -253,6 +259,7 @@ public: menuBar->addAction(menuFile->menuAction()); menuBar->addAction(menuView->menuAction()); menuBar->addAction(menuSettings->menuAction()); + menuBar->addAction(menuAbout->menuAction()); menuFile->addAction(bootInstallPkgAct); menuFile->addAction(bootGameAct); menuFile->addAction(addElfFolderAct); @@ -282,6 +289,7 @@ public: menuSettings->addAction(menuUtils->menuAction()); menuUtils->addAction(dumpGameListAct); menuUtils->addAction(pkgViewerAct); + menuAbout->addAction(aboutAct); retranslateUi(MainWindow); @@ -295,6 +303,7 @@ public: bootInstallPkgAct->setText( QCoreApplication::translate("MainWindow", "Install Packages (PKG)", nullptr)); bootGameAct->setText(QCoreApplication::translate("MainWindow", "Boot Game", nullptr)); + aboutAct->setText(QCoreApplication::translate("MainWindow", "About", nullptr)); #if QT_CONFIG(tooltip) bootInstallPkgAct->setToolTip(QCoreApplication::translate( "MainWindow", "Install application from a .pkg file", nullptr)); @@ -337,6 +346,7 @@ public: menuSettings->setTitle(QCoreApplication::translate("MainWindow", "Settings", nullptr)); menuUtils->setTitle(QCoreApplication::translate("MainWindow", "Utils", nullptr)); menuThemes->setTitle(QCoreApplication::translate("MainWindow", "Themes", nullptr)); + menuAbout->setTitle(QCoreApplication::translate("MainWindow", "About", nullptr)); setThemeDark->setText(QCoreApplication::translate("MainWindow", "Dark", nullptr)); setThemeLight->setText(QCoreApplication::translate("MainWindow", "Light", nullptr)); setThemeGreen->setText(QCoreApplication::translate("MainWindow", "Green", nullptr));