diff options
| author | Augustin Cavalier <waddlesplash@gmail.com> | 2014-10-25 09:21:05 -0400 |
|---|---|---|
| committer | Augustin Cavalier <waddlesplash@gmail.com> | 2014-10-25 20:59:07 -0400 |
| commit | 69cd8229d845cdab8acc29e73e98f3e4e8a83528 (patch) | |
| tree | cf2e5b7b1d1d0b7a20ad10bdc09067d116652013 /Source/Core | |
| parent | 51700a2b6873b698e7d446c73a519bf5e9e863ee (diff) | |
Fixes to the About dialog & add the SystemInfo dialog.
Also fix the build on Mac OS X.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinQt/AboutDialog.cpp | 30 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/AboutDialog.h | 7 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/AboutDialog.ui | 42 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/CMakeLists.txt | 20 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/DolphinQt.vcxproj | 3 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/DolphinQt.vcxproj.filters | 2 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/MainWindow.cpp | 21 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/MainWindow.h | 3 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/MainWindow.ui | 21 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/SystemInfo.cpp | 106 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/SystemInfo.h | 31 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/SystemInfo.ui | 71 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/Utils/Utils.h | 6 |
13 files changed, 296 insertions, 67 deletions
diff --git a/Source/Core/DolphinQt/AboutDialog.cpp b/Source/Core/DolphinQt/AboutDialog.cpp index f76fe2decc..0e8f30d355 100644 --- a/Source/Core/DolphinQt/AboutDialog.cpp +++ b/Source/Core/DolphinQt/AboutDialog.cpp @@ -5,29 +5,27 @@ #include <QDesktopServices> #include <QUrl> -#include "AboutDialog.h" #include "ui_AboutDialog.h" + #include "Common/Common.h" #include "Common/StdMakeUnique.h" -DAboutDialog::DAboutDialog(QWidget* p) - : QDialog(p) -{ - ui = std::make_unique<Ui::DAboutDialog>(); - ui->setupUi(this); - ui->label->setText(ui->label->text().arg(QLatin1String(scm_desc_str), - QStringLiteral("2014"), - QLatin1String(scm_branch_str), - QLatin1String(scm_rev_git_str), - QStringLiteral(__DATE__), - QStringLiteral(__TIME__))); -} +#include "DolphinQt/AboutDialog.h" +#include "DolphinQt/Utils/Utils.h" -DAboutDialog::~DAboutDialog() +DAboutDialog::DAboutDialog(QWidget* parent_widget) + : QDialog(parent_widget) { + setWindowModality(Qt::WindowModal); + setAttribute(Qt::WA_DeleteOnClose); + + m_ui = std::make_unique<Ui::DAboutDialog>(); + m_ui->setupUi(this); + m_ui->label->setText(m_ui->label->text().arg(SC(scm_desc_str), + SL("2014"), SC(scm_branch_str), SC(scm_rev_git_str), + SL(__DATE__), SL(__TIME__))); } -void DAboutDialog::on_label_linkActivated(const QString &link) +DAboutDialog::~DAboutDialog() { - QDesktopServices::openUrl(QUrl(link)); } diff --git a/Source/Core/DolphinQt/AboutDialog.h b/Source/Core/DolphinQt/AboutDialog.h index 74b13e0a0a..6f5988aad0 100644 --- a/Source/Core/DolphinQt/AboutDialog.h +++ b/Source/Core/DolphinQt/AboutDialog.h @@ -17,12 +17,9 @@ class DAboutDialog : public QDialog Q_OBJECT public: - explicit DAboutDialog(QWidget* p = nullptr); + explicit DAboutDialog(QWidget* parent_widget = nullptr); ~DAboutDialog(); -private slots: - void on_label_linkActivated(const QString& link); - private: - std::unique_ptr<Ui::DAboutDialog> ui; + std::unique_ptr<Ui::DAboutDialog> m_ui; }; diff --git a/Source/Core/DolphinQt/AboutDialog.ui b/Source/Core/DolphinQt/AboutDialog.ui index 339140d79c..df77fa4686 100644 --- a/Source/Core/DolphinQt/AboutDialog.ui +++ b/Source/Core/DolphinQt/AboutDialog.ui @@ -6,57 +6,39 @@ <rect> <x>0</x> <y>0</y> - <width>375</width> - <height>534</height> + <width>504</width> + <height>458</height> </rect> </property> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize"> - <size> - <width>375</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>375</width> - <height>16777215</height> - </size> - </property> <property name="windowTitle"> <string>About Dolphin</string> </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> <widget class="QLabel" name="label"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> <property name="text"> <string><big><b>Dolphin</b></big> %1<br> © 2003-%2 Dolphin Team<br> Branch: %3<br> Revision: %4<br> Compiled: %5 @ %6<br> -Dolphin is a GameCube/Wii emulator, which was originally written by F|RES and ector. Today Dolphin is an open source project with many contributors, too many to list. If interested, just go check out <a href="https://github.com/dolphin-emu/dolphin">the project page</a>.<br> +Dolphin is a GameCube/Wii emulator, which was originally written by<br>F|RES and ector. Today Dolphin is an open source project with many<br> contributors, too many to list. If interested, just go check out <a href="https://github.com/dolphin-emu/dolphin">the project<br>page</a>.<br> <br> -Special thanks to Bushing, Costis, CrowTRobo, Marcan, Segher, Titanik, or9, and Hotquik for their reverse engineering and docs/demos.<br> +Special thanks to Bushing, Costis, CrowTRobo, Marcan, Segher, Titanik,<br>or9, and Hotquik for their reverse engineering and docs/demos.<br> <br> -Big thanks to Gilles Mouchard whose Microlib PPC emulator gave our development a kickstart.<br> +Big thanks to Gilles Mouchard whose Microlib PPC emulator gave our<br> development a kickstart.<br> <br> -Thanks to Frank Wille for his PowerPC disassembler, which or9 and we modified to include Gekko specifics.<br> +Thanks to Frank Wille for his PowerPC disassembler, which or9 and we<br> modified to include Gekko specifics.<br> <br> Thanks to hcs/destop for their GC ADPCM decoder.<br> <br> -We are not affiliated with Nintendo in any way. GameCube and Wii are trademarks of Nintendo. This emulator should not be used to play games you do not legally own.</string> +We are not affiliated with Nintendo in any way. GameCube and Wii are<br> trademarks of Nintendo. This emulator should not be used to play games<br>you do not legally own.</string> </property> <property name="textFormat"> <enum>Qt::RichText</enum> @@ -64,12 +46,12 @@ We are not affiliated with Nintendo in any way. GameCube and Wii are trademarks <property name="alignment"> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> </property> - <property name="wordWrap"> + <property name="openExternalLinks"> <bool>true</bool> </property> </widget> </item> - <item row="1" column="0"> + <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt index 8bbd09ed2f..c3be11d12e 100644 --- a/Source/Core/DolphinQt/CMakeLists.txt +++ b/Source/Core/DolphinQt/CMakeLists.txt @@ -7,21 +7,35 @@ set(CMAKE_AUTOMOC ON) set(SRCS AboutDialog.cpp AboutDialog.h + Host.cpp Main.cpp MainWindow.cpp MainWindow.h - Host.cpp + SystemInfo.cpp Utils/Resources.cpp Utils/Utils.cpp - VideoInterface/VideoInterface.cpp) + VideoInterface/VideoInterface.cpp + ) set(UIS AboutDialog.ui - MainWindow.ui) + MainWindow.ui + SystemInfo.ui + ) set(LIBS core uicommon) if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + # Link against OS X system frameworks. + list(APPEND LIBS + ${APPKIT_LIBRARY} + ${AU_LIBRARY} + ${COREAUDIO_LIBRARY} + ${COREFUND_LIBRARY} + ${CORESERV_LIBRARY} + ${IOK_LIBRARY} + ${FORCEFEEDBACK} + ) set(DOLPHINQT_BINARY DolphinQt) else() set(DOLPHINQT_BINARY dolphin-emu-qt) diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj b/Source/Core/DolphinQt/DolphinQt.vcxproj index 7399f17771..08b4484179 100644 --- a/Source/Core/DolphinQt/DolphinQt.vcxproj +++ b/Source/Core/DolphinQt/DolphinQt.vcxproj @@ -61,11 +61,14 @@ <ItemGroup>
<QtMoc Include="AboutDialog.h" />
<QtMoc Include="MainWindow.h" />
+ <QtMoc Include="SystemInfo.h" />
</ItemGroup>
<!--TODO figure out how to get QtMoc to add outputs to ClCompile's inputs...-->
<ItemGroup>
<ClCompile Include="$(QtMocOutPrefix)AboutDialog.cpp" />
<ClCompile Include="$(QtMocOutPrefix)MainWindow.cpp" />
+ <ClCompile Include="$(QtMocOutPrefix)SystemInfo.cpp" />
+ <ClCompile Include="SystemInfo.cpp" />
<ClCompile Include="Utils\Resources.cpp" />
<ClCompile Include="Utils\Utils.cpp" />
<ClCompile Include="VideoInterface\VideoInterface.cpp" />
diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj.filters b/Source/Core/DolphinQt/DolphinQt.vcxproj.filters index d94c197d64..e81be15e09 100644 --- a/Source/Core/DolphinQt/DolphinQt.vcxproj.filters +++ b/Source/Core/DolphinQt/DolphinQt.vcxproj.filters @@ -14,10 +14,12 @@ <ClCompile Include="Utils\Utils.cpp">
<Filter>Utils</Filter>
</ClCompile>
+ <ClCompile Include="SystemInfo.cpp" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="AboutDialog.h" />
<QtMoc Include="MainWindow.h" />
+ <QtMoc Include="SystemInfo.h" />
</ItemGroup>
<ItemGroup>
<QtUi Include="*.ui" />
diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index b67ec2198a..62382e10c5 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -11,17 +11,22 @@ #include "DolphinQt/AboutDialog.h" #include "DolphinQt/MainWindow.h" +#include "DolphinQt/SystemInfo.h" #include "DolphinQt/Utils/Resources.h" #include "DolphinQt/Utils/Utils.h" DMainWindow::DMainWindow(QWidget* parent_widget) : QMainWindow(parent_widget) { - ui = std::make_unique<Ui::DMainWindow>(); - ui->setupUi(this); + m_ui = std::make_unique<Ui::DMainWindow>(); + m_ui->setupUi(this); Resources::Init(); - ui->actOpen->setIcon(Resources::GetIcon(Resources::TOOLBAR_OPEN)); + m_ui->actOpen->setIcon(Resources::GetIcon(Resources::TOOLBAR_OPEN)); + +#ifdef Q_OS_MACX + m_ui->toolbar->setMovable(false); +#endif } DMainWindow::~DMainWindow() @@ -43,8 +48,14 @@ void DMainWindow::on_actGitHub_triggered() QDesktopServices::openUrl(QUrl(SL("https://github.com/dolphin-emu/dolphin/"))); } +void DMainWindow::on_actSystemInfo_triggered() +{ + DSystemInfo* dlg = new DSystemInfo(this); + dlg->open(); +} + void DMainWindow::on_actAbout_triggered() { - DAboutDialog dlg; - dlg.exec(); + DAboutDialog* dlg = new DAboutDialog(this); + dlg->open(); } diff --git a/Source/Core/DolphinQt/MainWindow.h b/Source/Core/DolphinQt/MainWindow.h index d7db3b6294..286dc4fae8 100644 --- a/Source/Core/DolphinQt/MainWindow.h +++ b/Source/Core/DolphinQt/MainWindow.h @@ -26,8 +26,9 @@ private slots: void on_actWebsite_triggered(); void on_actOnlineDocs_triggered(); void on_actGitHub_triggered(); + void on_actSystemInfo_triggered(); void on_actAbout_triggered(); private: - std::unique_ptr<Ui::DMainWindow> ui; + std::unique_ptr<Ui::DMainWindow> m_ui; }; diff --git a/Source/Core/DolphinQt/MainWindow.ui b/Source/Core/DolphinQt/MainWindow.ui index 7172fc4424..c63d5610c0 100644 --- a/Source/Core/DolphinQt/MainWindow.ui +++ b/Source/Core/DolphinQt/MainWindow.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>996</width> - <height>596</height> + <width>992</width> + <height>592</height> </rect> </property> <property name="windowTitle"> @@ -31,8 +31,8 @@ <rect> <x>0</x> <y>0</y> - <width>996</width> - <height>21</height> + <width>992</width> + <height>24</height> </rect> </property> <widget class="QMenu" name="mnuFile"> @@ -69,6 +69,7 @@ <addaction name="actOnlineDocs"/> <addaction name="actGitHub"/> <addaction name="separator"/> + <addaction name="actSystemInfo"/> <addaction name="actAbout"/> </widget> <widget class="QMenu" name="mnuMovie"> @@ -87,7 +88,7 @@ <widget class="QStatusBar" name="statusbar"/> <widget class="QToolBar" name="toolbar"> <property name="windowTitle"> - <string>toolBar</string> + <string>Toolbar</string> </property> <attribute name="toolBarArea"> <enum>TopToolBarArea</enum> @@ -119,11 +120,19 @@ </action> <action name="actOpen"> <property name="text"> - <string>Open</string> + <string>&Open</string> </property> <property name="toolTip"> <string>Open file...</string> </property> + <property name="shortcut"> + <string>Ctrl+O</string> + </property> + </action> + <action name="actSystemInfo"> + <property name="text"> + <string>&System Information</string> + </property> </action> </widget> <resources/> diff --git a/Source/Core/DolphinQt/SystemInfo.cpp b/Source/Core/DolphinQt/SystemInfo.cpp new file mode 100644 index 0000000000..ca9ff2e07f --- /dev/null +++ b/Source/Core/DolphinQt/SystemInfo.cpp @@ -0,0 +1,106 @@ +// Copyright 2014 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include <QClipboard> +#include <QPushButton> +#include <QThread> + +#include "ui_SystemInfo.h" + +#include "Common/Common.h" +#include "Common/CPUDetect.h" +#include "Common/StdMakeUnique.h" + +#include "DolphinQt/SystemInfo.h" +#include "DolphinQt/Utils/Utils.h" + +DSystemInfo::DSystemInfo(QWidget* parent_widget) : + QDialog(parent_widget) +{ + setWindowModality(Qt::WindowModal); + setAttribute(Qt::WA_DeleteOnClose); + + m_ui = std::make_unique<Ui::DSystemInfo>(); + m_ui->setupUi(this); + + UpdateSystemInfo(); + + QPushButton* btn = m_ui->buttonBox->addButton(tr("Copy"), QDialogButtonBox::ActionRole); + connect(btn, SIGNAL(pressed()), this, SLOT(btnCopy_pressed())); +} + +DSystemInfo::~DSystemInfo() +{ +} + +void DSystemInfo::btnCopy_pressed() +{ + QClipboard* clipboard = QApplication::clipboard(); + clipboard->setText(m_ui->txtSysInfo->toPlainText()); +} + +void DSystemInfo::UpdateSystemInfo() +{ + QString sysinfo; + + sysinfo += SL("System\n===========================\n"); + sysinfo += SL("OS: %1\n").arg(GetOS()); + sysinfo += SL("CPU: %1, %2 cores\n").arg(QString::fromStdString(cpu_info.Summarize())) + .arg(QThread::idealThreadCount()); + + sysinfo += SL("\nDolphin\n===========================\n"); + sysinfo += SL("SCM: branch %1, rev %2\n").arg(SC(scm_branch_str)).arg(SC(scm_rev_git_str)); + sysinfo += SL("Compiled: %1, %2\n").arg(SL(__DATE__)).arg(SL(__TIME__)); + + sysinfo += SL("\nGUI\n===========================\n"); + sysinfo += SL("Compiled for Qt: %1\n").arg(SL(QT_VERSION_STR)); + sysinfo += SL("Running on Qt: %1").arg(SC(qVersion())); + + m_ui->txtSysInfo->setPlainText(sysinfo); +} + +QString DSystemInfo::GetOS() +{ + QString ret; + /* DON'T REORDER WITHOUT READING Qt DOCS! */ +#if defined(Q_OS_WIN) + ret += SL("Windows "); + switch (QSysInfo::WindowsVersion) { + case QSysInfo::WV_VISTA: ret += SL("Vista"); break; + case QSysInfo::WV_WINDOWS7: ret += SL("7"); break; + case QSysInfo::WV_WINDOWS8: ret += SL("8"); break; + default: ret += SL("(unknown)"); break; + } +#elif defined(Q_OS_MAC) + ret += SL("Mac OS X "); + switch (QSysInfo::MacintoshVersion) { + case QSysInfo::MV_10_7: ret += SL("10.7"); break; + case QSysInfo::MV_10_8: ret += SL("10.8"); break; + case QSysInfo::MV_10_9: ret += SL("10.9"); break; + default: ret += SL("(unknown)"); break; + } +#elif defined(Q_OS_LINUX) + ret += SL("Linux"); +#elif defined(Q_OS_FREEBSD) + ret += SL("FreeBSD"); +#elif defined(Q_OS_OPENBSD) + ret += SL("OpenBSD"); +#elif defined(Q_OS_NETBSD) + ret += SL("NetBSD"); +#elif defined(Q_OS_BSD4) + ret += SL("Other BSD"); +#elif defined(Q_OS_UNIX) + ret += SL("Unix"); +#else + ret += SL("Unknown"); +#endif + +#if defined(Q_WS_X11) || defined(Q_OS_X11) + ret += SL(" X11"); +#elif defined(Q_WS_WAYLAND) + ret += SL(" Wayland"); +#endif + + return ret; +} diff --git a/Source/Core/DolphinQt/SystemInfo.h b/Source/Core/DolphinQt/SystemInfo.h new file mode 100644 index 0000000000..fc34ab7517 --- /dev/null +++ b/Source/Core/DolphinQt/SystemInfo.h @@ -0,0 +1,31 @@ +// Copyright 2014 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#pragma once + +#include <memory> +#include <QDialog> + +namespace Ui +{ +class DSystemInfo; +} + +class DSystemInfo : public QDialog +{ + Q_OBJECT + +public: + explicit DSystemInfo(QWidget* parent_widget = nullptr); + ~DSystemInfo(); + +private slots: + void btnCopy_pressed(); + +private: + std::unique_ptr<Ui::DSystemInfo> m_ui; + + void UpdateSystemInfo(); + QString GetOS(); +}; diff --git a/Source/Core/DolphinQt/SystemInfo.ui b/Source/Core/DolphinQt/SystemInfo.ui new file mode 100644 index 0000000000..95506a9857 --- /dev/null +++ b/Source/Core/DolphinQt/SystemInfo.ui @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>DSystemInfo</class> + <widget class="QDialog" name="DSystemInfo"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>446</width> + <height>298</height> + </rect> + </property> + <property name="windowTitle"> + <string>System Information</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0" colspan="2"> + <widget class="QPlainTextEdit" name="txtSysInfo"> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>DSystemInfo</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>DSystemInfo</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/Source/Core/DolphinQt/Utils/Utils.h b/Source/Core/DolphinQt/Utils/Utils.h index 9591d4dd98..8b149c6fe8 100644 --- a/Source/Core/DolphinQt/Utils/Utils.h +++ b/Source/Core/DolphinQt/Utils/Utils.h @@ -8,7 +8,11 @@ #include "Common/CommonTypes.h" -// Shorter version of QStringLiteral(str) +// Use this to encapsulate ASCII string literals #define SL(str) QStringLiteral(str) +// Use this to encapsulate string constants and functions that +// return "char*"s +#define SC(str) QString::fromLatin1(str) + QString NiceSizeFormat(s64 size); |
