From c493bd9cc927f9119960e6dc084d374a2ec75d26 Mon Sep 17 00:00:00 2001
From: spycrab <spycrab@users.noreply.github.com>
Date: Sun, 14 Jan 2018 19:15:45 +0100
Subject: [PATCH] Implement "About" dialog

---
 dist/icons/icons.qrc      |   5 +
 dist/icons/yuzu.png       | Bin 0 -> 7719 bytes
 src/yuzu/CMakeLists.txt   |   9 +-
 src/yuzu/about_dialog.cpp |  15 +++
 src/yuzu/about_dialog.h   |  23 +++++
 src/yuzu/aboutdialog.ui   | 191 ++++++++++++++++++++++++++++++++++++++
 src/yuzu/main.cpp         |   9 ++
 src/yuzu/main.h           |   1 +
 8 files changed, 250 insertions(+), 3 deletions(-)
 create mode 100644 dist/icons/icons.qrc
 create mode 100644 dist/icons/yuzu.png
 create mode 100644 src/yuzu/about_dialog.cpp
 create mode 100644 src/yuzu/about_dialog.h
 create mode 100644 src/yuzu/aboutdialog.ui

diff --git a/dist/icons/icons.qrc b/dist/icons/icons.qrc
new file mode 100644
index 0000000000..575cd08611
--- /dev/null
+++ b/dist/icons/icons.qrc
@@ -0,0 +1,5 @@
+<RCC>
+  <qresource prefix="icons">
+    <file>yuzu.png</file>
+  </qresource>
+</RCC>
\ No newline at end of file
diff --git a/dist/icons/yuzu.png b/dist/icons/yuzu.png
new file mode 100644
index 0000000000000000000000000000000000000000..81a7453446776b9a57cdb9e8f503831d0f4eaf08
GIT binary patch
literal 7719
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
Q=^`P0l2etfmo^XoA8LR!ZvX%Q

literal 0
HcmV?d00001

diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index 5b446dc362..c52d5627a3 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -4,6 +4,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
 
 set(SRCS
+            about_dialog.cpp
             configuration/config.cpp
             configuration/configure_debug.cpp
             configuration/configure_dialog.cpp
@@ -26,6 +27,7 @@ set(SRCS
             )
 
 set(HEADERS
+            about_dialog.h
             configuration/config.h
             configuration/configure_debug.h
             configuration/configure_dialog.h
@@ -47,6 +49,7 @@ set(HEADERS
             )
 
 set(UIS
+            aboutdialog.ui
             configuration/configure.ui
             configuration/configure_debug.ui
             configuration/configure_general.ui
@@ -58,7 +61,7 @@ set(UIS
             main.ui
             )
 
-# file(GLOB_RECURSE ICONS ${CMAKE_SOURCE_DIR}/dist/icons/*)
+file(GLOB_RECURSE ICONS ${CMAKE_SOURCE_DIR}/dist/icons/*)
 file(GLOB_RECURSE THEMES ${CMAKE_SOURCE_DIR}/dist/qt_themes/*)
 
 create_directory_groups(${SRCS} ${HEADERS} ${UIS})
@@ -72,10 +75,10 @@ endif()
 if (APPLE)
     set(MACOSX_ICON "../../dist/yuzu.icns")
     set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
-    add_executable(yuzu MACOSX_BUNDLE ${SRCS} ${HEADERS} ${UI_HDRS} ${MACOSX_ICON})
+    add_executable(yuzu MACOSX_BUNDLE ${SRCS} ${HEADERS} ${UI_HDRS} ${MACOSX_ICON} ${ICONS})
     set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
 else()
-    add_executable(yuzu ${SRCS} ${HEADERS} ${UI_HDRS})
+    add_executable(yuzu ${SRCS} ${HEADERS} ${UI_HDRS} ${ICONS})
 endif()
 target_link_libraries(yuzu PRIVATE common core input_common video_core)
 target_link_libraries(yuzu PRIVATE Boost::boost glad Qt5::OpenGL Qt5::Widgets)
diff --git a/src/yuzu/about_dialog.cpp b/src/yuzu/about_dialog.cpp
new file mode 100644
index 0000000000..0f1b6cdc6b
--- /dev/null
+++ b/src/yuzu/about_dialog.cpp
@@ -0,0 +1,15 @@
+// Copyright 2018 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/scm_rev.h"
+#include "ui_aboutdialog.h"
+#include "yuzu/about_dialog.h"
+
+AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent), 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() {}
diff --git a/src/yuzu/about_dialog.h b/src/yuzu/about_dialog.h
new file mode 100644
index 0000000000..2eb6e28f50
--- /dev/null
+++ b/src/yuzu/about_dialog.h
@@ -0,0 +1,23 @@
+// Copyright 2018 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <memory>
+#include <QDialog>
+
+namespace Ui {
+class AboutDialog;
+}
+
+class AboutDialog : public QDialog {
+    Q_OBJECT
+
+public:
+    explicit AboutDialog(QWidget* parent);
+    ~AboutDialog();
+
+private:
+    std::unique_ptr<Ui::AboutDialog> ui;
+};
diff --git a/src/yuzu/aboutdialog.ui b/src/yuzu/aboutdialog.ui
new file mode 100644
index 0000000000..cdcaa15b05
--- /dev/null
+++ b/src/yuzu/aboutdialog.ui
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AboutDialog</class>
+ <widget class="QDialog" name="AboutDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>616</width>
+    <height>261</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>About yuzu</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_3">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QLabel" name="labelLogo">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/icons/yuzu.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QLabel" name="labelYuzu">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;yuzu&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelBuildInfo">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;%1 | %2-%3&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelAbout">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv2.0 or any later version.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;This software should not be used to play games you have not legally obtained.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelLinks">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://yuzu-emu.org/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;Website&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;Source Code&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu/yuzu/graphs/contributors&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;Contributors&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu/yuzu/blob/master/license.txt&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;License&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+         <property name="openExternalLinks">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelLiability">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. yuzu is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../../dist/icons/icons.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>AboutDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>AboutDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 99a62c4324..5e0d1d0d51 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -26,6 +26,7 @@
 #include "core/gdbstub/gdbstub.h"
 #include "core/loader/loader.h"
 #include "core/settings.h"
+#include "yuzu/about_dialog.h"
 #include "yuzu/bootmanager.h"
 #include "yuzu/configuration/config.h"
 #include "yuzu/configuration/configure_dialog.h"
@@ -264,6 +265,9 @@ void GMainWindow::ConnectMenuEvents() {
     ui.action_Show_Filter_Bar->setShortcut(tr("CTRL+F"));
     connect(ui.action_Show_Filter_Bar, &QAction::triggered, this, &GMainWindow::OnToggleFilterBar);
     connect(ui.action_Show_Status_Bar, &QAction::triggered, statusBar(), &QStatusBar::setVisible);
+
+    // Help
+    connect(ui.action_About, &QAction::triggered, this, &GMainWindow::OnAbout);
 }
 
 void GMainWindow::OnDisplayTitleBars(bool show) {
@@ -581,6 +585,11 @@ void GMainWindow::OnConfigure() {
     }
 }
 
+void GMainWindow::OnAbout() {
+    AboutDialog aboutDialog(this);
+    aboutDialog.exec();
+}
+
 void GMainWindow::OnToggleFilterBar() {
     game_list->setFilterVisible(ui.action_Show_Filter_Bar->isChecked());
     if (ui.action_Show_Filter_Bar->isChecked()) {
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index e37ef2b858..d3f3b3e594 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -124,6 +124,7 @@ private slots:
     void OnMenuSelectGameListRoot();
     void OnMenuRecentFile();
     void OnConfigure();
+    void OnAbout();
     void OnToggleFilterBar();
     void OnDisplayTitleBars(bool);
     void ToggleWindowMode();
-- 
GitLab