Qt: Fix translation initialization (fixes #776)
Vicki Pfau vi@endrift.com
Thu, 06 Jul 2017 11:13:28 -0700
6 files changed,
73 insertions(+),
70 deletions(-)
M
CHANGES
→
CHANGES
@@ -160,6 +160,7 @@ - Qt: Fix initial window size (fixes mgba.io/i/766)
- Qt: Fix data directory path - Qt: Fix controls not saving on non-SDL builds - GB Video: Fix LYC regression + - Qt: Fix translation initialization (fixes mgba.io/i/776) Misc: - Qt: Add language selector - GBA Timer: Improve accuracy of timers
M
src/platform/qt/GBAApp.cpp
→
src/platform/qt/GBAApp.cpp
@@ -6,6 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "GBAApp.h" #include "AudioProcessor.h" +#include "ConfigController.h" #include "Display.h" #include "GameController.h" #include "Window.h"@@ -14,11 +15,8 @@
#include <QFileInfo> #include <QFileOpenEvent> #include <QIcon> -#include <QLibraryInfo> -#include <QTranslator> #include <mgba/core/version.h> -#include <mgba/internal/gba/video.h> #include <mgba-util/socket.h> #include <mgba-util/vfs.h>@@ -32,8 +30,9 @@ static GBAApp* g_app = nullptr;
mLOG_DEFINE_CATEGORY(QT, "Qt", "platform.qt"); -GBAApp::GBAApp(int& argc, char* argv[]) +GBAApp::GBAApp(int& argc, char* argv[], ConfigController* config) : QApplication(argc, argv) + , m_configController(config) { g_app = this;@@ -45,21 +44,6 @@ #ifndef Q_OS_MAC
setWindowIcon(QIcon(":/res/mgba-512.png")); #endif - QLocale locale; - - if (!m_configController.getQtOption("language").isNull()) { - locale = QLocale(m_configController.getQtOption("language").toString()); - QLocale::setDefault(locale); - } - - QTranslator qtTranslator; - qtTranslator.load(locale, "qt", "_", QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - installTranslator(&qtTranslator); - - QTranslator langTranslator; - langTranslator.load(locale, binaryName, "-", ":/translations/"); - installTranslator(&langTranslator); - SocketSubsystemInit(); qRegisterMetaType<const uint32_t*>("const uint32_t*"); qRegisterMetaType<mCoreThread*>("mCoreThread*");@@ -67,50 +51,15 @@
QApplication::setApplicationName(projectName); QApplication::setApplicationVersion(projectVersion); - if (!m_configController.getQtOption("displayDriver").isNull()) { - Display::setDriver(static_cast<Display::Driver>(m_configController.getQtOption("displayDriver").toInt())); - } - - mArguments args; - mGraphicsOpts graphicsOpts; - mSubParser subparser; - initParserForGraphics(&subparser, &graphicsOpts); - bool loaded = m_configController.parseArguments(&args, argc, argv, &subparser); - if (loaded && args.showHelp) { - usage(argv[0], subparser.usage); - ::exit(0); - return; + if (!m_configController->getQtOption("displayDriver").isNull()) { + Display::setDriver(static_cast<Display::Driver>(m_configController->getQtOption("displayDriver").toInt())); } reloadGameDB(); - if (!m_configController.getQtOption("audioDriver").isNull()) { - AudioProcessor::setDriver(static_cast<AudioProcessor::Driver>(m_configController.getQtOption("audioDriver").toInt())); - } - Window* w = new Window(&m_configController); - connect(w, &Window::destroyed, [this, w]() { - m_windows.removeAll(w); - }); - m_windows.append(w); - - if (loaded) { - w->argumentsPassed(&args); - } else { - w->loadConfig(); - } - freeArguments(&args); - - if (graphicsOpts.multiplier) { - w->resizeFrame(QSize(VIDEO_HORIZONTAL_PIXELS * graphicsOpts.multiplier, VIDEO_VERTICAL_PIXELS * graphicsOpts.multiplier)); - } - if (graphicsOpts.fullscreen) { - w->enterFullScreen(); + if (!m_configController->getQtOption("audioDriver").isNull()) { + AudioProcessor::setDriver(static_cast<AudioProcessor::Driver>(m_configController->getQtOption("audioDriver").toInt())); } - - w->show(); - - w->controller()->setMultiplayerController(&m_multiplayer); - w->multiplayerChanged(); } GBAApp::~GBAApp() {@@ -132,7 +81,7 @@ Window* GBAApp::newWindow() {
if (m_windows.count() >= MAX_GBAS) { return nullptr; } - Window* w = new Window(&m_configController, m_multiplayer.attached()); + Window* w = new Window(m_configController, m_multiplayer.attached()); int windowId = m_multiplayer.attached(); connect(w, &Window::destroyed, [this, w]() { m_windows.removeAll(w);@@ -175,10 +124,10 @@
QString GBAApp::getOpenFileName(QWidget* owner, const QString& title, const QString& filter) { QList<Window*> paused; pauseAll(&paused); - QString filename = QFileDialog::getOpenFileName(owner, title, m_configController.getOption("lastDirectory"), filter); + QString filename = QFileDialog::getOpenFileName(owner, title, m_configController->getOption("lastDirectory"), filter); continueAll(paused); if (!filename.isEmpty()) { - m_configController.setOption("lastDirectory", QFileInfo(filename).dir().canonicalPath()); + m_configController->setOption("lastDirectory", QFileInfo(filename).dir().canonicalPath()); } return filename; }@@ -186,10 +135,10 @@
QString GBAApp::getSaveFileName(QWidget* owner, const QString& title, const QString& filter) { QList<Window*> paused; pauseAll(&paused); - QString filename = QFileDialog::getSaveFileName(owner, title, m_configController.getOption("lastDirectory"), filter); + QString filename = QFileDialog::getSaveFileName(owner, title, m_configController->getOption("lastDirectory"), filter); continueAll(paused); if (!filename.isEmpty()) { - m_configController.setOption("lastDirectory", QFileInfo(filename).dir().canonicalPath()); + m_configController->setOption("lastDirectory", QFileInfo(filename).dir().canonicalPath()); } return filename; }@@ -197,10 +146,10 @@
QString GBAApp::getOpenDirectoryName(QWidget* owner, const QString& title) { QList<Window*> paused; pauseAll(&paused); - QString filename = QFileDialog::getExistingDirectory(owner, title, m_configController.getOption("lastDirectory")); + QString filename = QFileDialog::getExistingDirectory(owner, title, m_configController->getOption("lastDirectory")); continueAll(paused); if (!filename.isEmpty()) { - m_configController.setOption("lastDirectory", QFileInfo(filename).dir().canonicalPath()); + m_configController->setOption("lastDirectory", QFileInfo(filename).dir().canonicalPath()); } return filename; }
M
src/platform/qt/GBAApp.h
→
src/platform/qt/GBAApp.h
@@ -10,7 +10,6 @@ #include <QApplication>
#include <QFileDialog> #include <QThread> -#include "ConfigController.h" #include "MultiplayerController.h" struct NoIntroDB;@@ -21,6 +20,7 @@ mLOG_DECLARE_CATEGORY(QT);
namespace QGBA { +class ConfigController; class GameController; class Window;@@ -43,7 +43,7 @@ class GBAApp : public QApplication {
Q_OBJECT public: - GBAApp(int& argc, char* argv[]); + GBAApp(int& argc, char* argv[], ConfigController*); ~GBAApp(); static GBAApp* app();@@ -67,7 +67,7 @@
void pauseAll(QList<Window*>* paused); void continueAll(const QList<Window*>& paused); - ConfigController m_configController; + ConfigController* m_configController; QList<Window*> m_windows; MultiplayerController m_multiplayer;
M
src/platform/qt/GameController.cpp
→
src/platform/qt/GameController.cpp
@@ -9,6 +9,7 @@ #include "AudioProcessor.h"
#include "InputController.h" #include "LogController.h" #include "MultiplayerController.h" +#include "Override.h" #include "VFileDevice.h" #include <QCoreApplication>
M
src/platform/qt/library/LibraryController.cpp
→
src/platform/qt/library/LibraryController.cpp
@@ -5,7 +5,8 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "LibraryController.h" -#include "../GBAApp.h" +#include "ConfigController.h" +#include "GBAApp.h" #include "LibraryGrid.h" #include "LibraryTree.h"
M
src/platform/qt/main.cpp
→
src/platform/qt/main.cpp
@@ -7,10 +7,15 @@
// This must be defined before anything else is included. #define SDL_MAIN_HANDLED +#include "ConfigController.h" #include "GBAApp.h" #include "Window.h" #include <mgba/core/version.h> +#include <mgba/internal/gba/video.h> + +#include <QLibraryInfo> +#include <QTranslator> #ifdef QT_STATIC #include <QtPlugin>@@ -21,12 +26,58 @@ Q_IMPORT_PLUGIN(QWindowsAudioPlugin);
#endif #endif #endif + +using namespace QGBA; int main(int argc, char* argv[]) { #ifdef BUILD_SDL SDL_SetMainReady(); #endif - QGBA::GBAApp application(argc, argv); + + ConfigController configController; + + QLocale locale; + if (!configController.getQtOption("language").isNull()) { + locale = QLocale(configController.getQtOption("language").toString()); + QLocale::setDefault(locale); + } + + mArguments args; + mGraphicsOpts graphicsOpts; + mSubParser subparser; + initParserForGraphics(&subparser, &graphicsOpts); + bool loaded = configController.parseArguments(&args, argc, argv, &subparser); + if (loaded && args.showHelp) { + usage(argv[0], subparser.usage); + return 0; + } + + GBAApp application(argc, argv, &configController); + + QTranslator qtTranslator; + qtTranslator.load(locale, "qt", "_", QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + application.installTranslator(&qtTranslator); + + QTranslator langTranslator; + langTranslator.load(locale, binaryName, "-", ":/translations/"); + application.installTranslator(&langTranslator); + + Window* w = application.newWindow(); + if (loaded) { + w->argumentsPassed(&args); + } else { + w->loadConfig(); + } + freeArguments(&args); + + if (graphicsOpts.multiplier) { + w->resizeFrame(QSize(VIDEO_HORIZONTAL_PIXELS * graphicsOpts.multiplier, VIDEO_VERTICAL_PIXELS * graphicsOpts.multiplier)); + } + if (graphicsOpts.fullscreen) { + w->enterFullScreen(); + } + + w->show(); return application.exec(); }