summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorAugustin Cavalier <waddlesplash@gmail.com>2014-10-25 09:21:05 -0400
committerAugustin Cavalier <waddlesplash@gmail.com>2014-10-25 20:59:07 -0400
commit69cd8229d845cdab8acc29e73e98f3e4e8a83528 (patch)
treecf2e5b7b1d1d0b7a20ad10bdc09067d116652013 /Source/Core
parent51700a2b6873b698e7d446c73a519bf5e9e863ee (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.cpp30
-rw-r--r--Source/Core/DolphinQt/AboutDialog.h7
-rw-r--r--Source/Core/DolphinQt/AboutDialog.ui42
-rw-r--r--Source/Core/DolphinQt/CMakeLists.txt20
-rw-r--r--Source/Core/DolphinQt/DolphinQt.vcxproj3
-rw-r--r--Source/Core/DolphinQt/DolphinQt.vcxproj.filters2
-rw-r--r--Source/Core/DolphinQt/MainWindow.cpp21
-rw-r--r--Source/Core/DolphinQt/MainWindow.h3
-rw-r--r--Source/Core/DolphinQt/MainWindow.ui21
-rw-r--r--Source/Core/DolphinQt/SystemInfo.cpp106
-rw-r--r--Source/Core/DolphinQt/SystemInfo.h31
-rw-r--r--Source/Core/DolphinQt/SystemInfo.ui71
-rw-r--r--Source/Core/DolphinQt/Utils/Utils.h6
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>&lt;big&gt;&lt;b&gt;Dolphin&lt;/b&gt;&lt;/big&gt; %1&lt;br&gt;
© 2003-%2 Dolphin Team&lt;br&gt;
Branch: %3&lt;br&gt;
Revision: %4&lt;br&gt;
Compiled: %5 @ %6&lt;br&gt;
-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 &lt;a href=&quot;https://github.com/dolphin-emu/dolphin&quot;&gt;the project page&lt;/a&gt;.&lt;br&gt;
+Dolphin is a GameCube/Wii emulator, which was originally written by&lt;br&gt;F|RES and ector. Today Dolphin is an open source project with many&lt;br&gt; contributors, too many to list. If interested, just go check out &lt;a href=&quot;https://github.com/dolphin-emu/dolphin&quot;&gt;the project&lt;br&gt;page&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
-Special thanks to Bushing, Costis, CrowTRobo, Marcan, Segher, Titanik, or9, and Hotquik for their reverse engineering and docs/demos.&lt;br&gt;
+Special thanks to Bushing, Costis, CrowTRobo, Marcan, Segher, Titanik,&lt;br&gt;or9, and Hotquik for their reverse engineering and docs/demos.&lt;br&gt;
&lt;br&gt;
-Big thanks to Gilles Mouchard whose Microlib PPC emulator gave our development a kickstart.&lt;br&gt;
+Big thanks to Gilles Mouchard whose Microlib PPC emulator gave our&lt;br&gt; development a kickstart.&lt;br&gt;
&lt;br&gt;
-Thanks to Frank Wille for his PowerPC disassembler, which or9 and we modified to include Gekko specifics.&lt;br&gt;
+Thanks to Frank Wille for his PowerPC disassembler, which or9 and we&lt;br&gt; modified to include Gekko specifics.&lt;br&gt;
&lt;br&gt;
Thanks to hcs/destop for their GC ADPCM decoder.&lt;br&gt;
&lt;br&gt;
-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&lt;br&gt; trademarks of Nintendo. This emulator should not be used to play games&lt;br&gt;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>&amp;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>&amp;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);