all repos — mgba @ 11bf4fdfdad16a2a3b8059d652f41c2c6b2e2581

mGBA Game Boy Advance Emulator

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}