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><html><head/><body><p><img src=":/icons/yuzu.png"/></p></body></html></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><html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html></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><html><head/><body><p>%1 | %2-%3</p></body></html></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><!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:'Ubuntu'; font-size:11pt; 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-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch 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; font-family:'MS Shell Dlg 2'; font-size:8pt;"><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-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html></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><html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#0000ff;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#0000ff;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#0000ff;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/license.txt"><span style=" text-decoration: underline; color:#0000ff;">License</span></a></p></body></html></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><html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. yuzu is not affiliated with Nintendo in any way.</span></p></body></html></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