src/platform/qt/GBAApp.cpp (view raw)
1#include "GBAApp.h"
2
3#include "GameController.h"
4
5#include <QFileOpenEvent>
6
7#define PORT "qt"
8
9using namespace QGBA;
10
11GBAApp::GBAApp(int& argc, char* argv[])
12 : QApplication(argc, argv)
13 , m_args()
14 , m_opts()
15{
16 QApplication::setApplicationName(PROJECT_NAME);
17 QApplication::setApplicationVersion(PROJECT_VERSION);
18
19 struct Configuration config;
20
21 ConfigurationInit(&config);
22 GBAConfigLoad(&config);
23
24 m_opts.audioSync = GameController::AUDIO_SYNC;
25 m_opts.videoSync = GameController::VIDEO_SYNC;
26
27 GBAConfigMapGeneralOpts(&config, PORT, &m_opts);
28 GBAConfigMapGraphicsOpts(&config, PORT, &m_opts);
29
30 ConfigurationDeinit(&config);
31
32 if (parseArguments(&m_args, &m_opts, argc, argv, 0)) {
33 m_window.setOptions(&m_opts);
34 m_window.argumentsPassed(&m_args);
35 } else {
36 m_window.setOptions(&m_opts);
37 }
38
39 m_window.show();
40}
41
42GBAApp::~GBAApp() {
43 freeArguments(&m_args);
44 GBAConfigFreeOpts(&m_opts);
45}
46
47bool GBAApp::event(QEvent* event) {
48 if (event->type() == QEvent::FileOpen) {
49 m_window.controller()->loadGame(static_cast<QFileOpenEvent*>(event)->file());
50 return true;
51 }
52 return QApplication::event(event);
53}