From ee5aecee3f80f934cc3d2837fa4a908c7f4c8f2d Mon Sep 17 00:00:00 2001 From: BreadFish64 Date: Sat, 4 Nov 2017 12:59:27 -0500 Subject: [PATCH] Implement About Button Functionality (#3005) --- dist/icons/citra.png | Bin 0 -> 21077 bytes dist/icons/icons.qrc | 1 + src/citra_qt/CMakeLists.txt | 3 + src/citra_qt/aboutdialog.cpp | 19 +++++ src/citra_qt/aboutdialog.h | 25 ++++++ src/citra_qt/aboutdialog.ui | 156 +++++++++++++++++++++++++++++++++++ src/citra_qt/main.cpp | 11 +++ src/citra_qt/main.h | 3 + src/citra_qt/main.ui | 6 ++ 9 files changed, 224 insertions(+) create mode 100644 dist/icons/citra.png create mode 100644 src/citra_qt/aboutdialog.cpp create mode 100644 src/citra_qt/aboutdialog.h create mode 100644 src/citra_qt/aboutdialog.ui diff --git a/dist/icons/citra.png b/dist/icons/citra.png new file mode 100644 index 0000000000000000000000000000000000000000..83fa499dd35c238dd5e302e1cfe05b59b65f28c2 GIT binary patch literal 21077 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 literal 0 HcmV?d00001 diff --git a/dist/icons/icons.qrc b/dist/icons/icons.qrc index f0c44862f..a25804907 100644 --- a/dist/icons/icons.qrc +++ b/dist/icons/icons.qrc @@ -2,5 +2,6 @@ checked.png failed.png + citra.png diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt index add7566c2..8b6c09c2b 100644 --- a/src/citra_qt/CMakeLists.txt +++ b/src/citra_qt/CMakeLists.txt @@ -23,6 +23,7 @@ set(SRCS debugger/profiler.cpp debugger/registers.cpp debugger/wait_tree.cpp + aboutdialog.cpp util/spinbox.cpp util/util.cpp bootmanager.cpp @@ -57,6 +58,7 @@ set(HEADERS debugger/wait_tree.h util/spinbox.h util/util.h + aboutdialog.h bootmanager.h game_list.h game_list_p.h @@ -75,6 +77,7 @@ set(UIS configuration/configure_system.ui configuration/configure_web.ui debugger/registers.ui + aboutdialog.ui hotkeys.ui main.ui ) diff --git a/src/citra_qt/aboutdialog.cpp b/src/citra_qt/aboutdialog.cpp new file mode 100644 index 000000000..9c11168ba --- /dev/null +++ b/src/citra_qt/aboutdialog.cpp @@ -0,0 +1,19 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "aboutdialog.h" +#include "common/scm_rev.h" +#include "ui_aboutdialog.h" + +AboutDialog::AboutDialog(QWidget* parent) + : QDialog(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint), + ui(new Ui::AboutDialog) { + ui->setupUi(this); + ui->labelBuildInfo->setText(ui->labelBuildInfo->text().arg( + Common::g_build_name, Common::g_scm_branch, Common::g_scm_desc)); +} + +AboutDialog::~AboutDialog() { + delete ui; +} diff --git a/src/citra_qt/aboutdialog.h b/src/citra_qt/aboutdialog.h new file mode 100644 index 000000000..606789774 --- /dev/null +++ b/src/citra_qt/aboutdialog.h @@ -0,0 +1,25 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#ifndef ABOUTDIALOG_H +#define ABOUTDIALOG_H + +#include + +namespace Ui { +class AboutDialog; +} + +class AboutDialog : public QDialog { + Q_OBJECT + +public: + explicit AboutDialog(QWidget* parent = 0); + ~AboutDialog(); + +private: + Ui::AboutDialog* ui; +}; + +#endif // ABOUTDIALOG_H diff --git a/src/citra_qt/aboutdialog.ui b/src/citra_qt/aboutdialog.ui new file mode 100644 index 000000000..32f0a0356 --- /dev/null +++ b/src/citra_qt/aboutdialog.ui @@ -0,0 +1,156 @@ + + + AboutDialog + + + + 0 + 0 + 752 + 300 + + + + About Citra + + + + + 630 + 250 + 101 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + + + + 20 + 20 + 241 + 251 + + + + <html><head/><body><p><img src=":/icons/citra.png"/></p></body></html> + + + + + + 270 + 10 + 100 + 50 + + + + <html><head/><body><p><span style=" font-size:28pt;">Citra</span></p></body></html> + + + + + + 270 + 70 + 451 + 21 + + + + <html><head/><body><p>%1 | %2-%3</p></body></html> + + + + + + 270 + 90 + 461 + 131 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Citra is a free and open source 3DS emulator </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">licensed under GPLv2.0 or any later version.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">This software should not be used to play games </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">you have not legally obtained.</span></p></body></html> + + + + + + 270 + 230 + 361 + 16 + + + + <html><head/><body><p><a href="https://citra-emu.org/"><span style=" text-decoration: underline; color:#0000ff;">Website</span></a> | <a href="https://community.citra-emu.org/"><span style=" text-decoration: underline; color:#0000ff;">Forum</span></a> | <a href="https://github.com/citra-emu"><span style=" text-decoration: underline; color:#0000ff;">Source Code</span></a> | <a href="//github.com/citra-emu/citra/graphs/contributors"><span style=" text-decoration: underline; color:#0000ff;">Contributors</span></a> | <a href="https://github.com/citra-emu/citra/blob/master/license.txt"><span style=" text-decoration: underline; color:#0000ff;">License</span></a></p></body></html> + + + + + + 150 + 270 + 450 + 16 + + + + <html><head/><body><p><span style=" font-size:7pt;">&quot;3DS&quot; is a trademark of Nintendo. Citra is not affiliated with Nintendo in any way.</span></p></body></html> + + + + + + + + + buttonBox + accepted() + AboutDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + AboutDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index e0de66e02..00230d4bd 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -13,6 +13,7 @@ #include #include #include +#include "citra_qt/aboutdialog.h" #include "citra_qt/bootmanager.h" #include "citra_qt/configuration/config.h" #include "citra_qt/configuration/configure_dialog.h" @@ -340,6 +341,11 @@ void GMainWindow::ConnectMenuEvents() { connect(ui.action_Show_Status_Bar, &QAction::triggered, statusBar(), &QStatusBar::setVisible); ui.action_Fullscreen->setShortcut(GetHotkey("Main Window", "Fullscreen", this)->key()); connect(ui.action_Fullscreen, &QAction::triggered, this, &GMainWindow::ToggleFullscreen); + + // Help + connect(ui.action_FAQ, &QAction::triggered, + []() { QDesktopServices::openUrl(QUrl("https://citra-emu.org/wiki/faq/")); }); + connect(ui.action_About, &QAction::triggered, this, &GMainWindow::OnMenuAboutCitra); } void GMainWindow::OnDisplayTitleBars(bool show) { @@ -801,6 +807,11 @@ void GMainWindow::OnCoreError(Core::System::ResultStatus result, std::string det } } +void GMainWindow::OnMenuAboutCitra() { + AboutDialog about{this}; + about.exec(); +} + bool GMainWindow::ConfirmClose() { if (emu_thread == nullptr || !UISettings::values.confirm_before_closing) return true; diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h index 4efab9a4a..18354bdf7 100644 --- a/src/citra_qt/main.h +++ b/src/citra_qt/main.h @@ -25,6 +25,7 @@ class MicroProfileDialog; class ProfilerWidget; class RegistersWidget; class WaitTreeWidget; +class AboutDialog; class GMainWindow : public QMainWindow { Q_OBJECT @@ -131,6 +132,8 @@ private slots: void ToggleWindowMode(); void OnCreateGraphicsSurfaceViewer(); void OnCoreError(Core::System::ResultStatus, std::string); + /// Called whenever a user selects Help->About Citra + void OnMenuAboutCitra(); private: void UpdateStatusBar(); diff --git a/src/citra_qt/main.ui b/src/citra_qt/main.ui index 617343e51..442904f01 100644 --- a/src/citra_qt/main.ui +++ b/src/citra_qt/main.ui @@ -96,6 +96,7 @@ &Help + @@ -142,6 +143,11 @@ &Stop + + + FAQ + + About Citra