all repos — mgba @ e2812b30b219bf9c77d2ea8e882f333fc8752ffd

mGBA Game Boy Advance Emulator

src/platform/qt/Window.h (view raw)

 1#ifndef QGBA_WINDOW
 2#define QGBA_WINDOW
 3
 4#include <QAudioOutput>
 5#include <QMainWindow>
 6
 7extern "C" {
 8#include "gba.h"
 9}
10
11#include "Display.h"
12#include "LoadSaveState.h"
13
14struct StartupOptions;
15
16namespace QGBA {
17
18class GameController;
19class GDBController;
20class LogView;
21
22class Window : public QMainWindow {
23Q_OBJECT
24
25public:
26	Window(QWidget* parent = nullptr);
27	virtual ~Window();
28
29	static GBAKey mapKey(int qtKey);
30
31	void optionsPassed(StartupOptions*);
32
33signals:
34	void startDrawing(const uint32_t*, GBAThread*);
35	void shutdown();
36
37public slots:
38	void selectROM();
39
40#ifdef USE_GDB_STUB
41	void gdbOpen();
42#endif
43
44protected:
45	virtual void keyPressEvent(QKeyEvent* event) override;
46	virtual void keyReleaseEvent(QKeyEvent* event) override;
47	virtual void resizeEvent(QResizeEvent*) override;
48	virtual void closeEvent(QCloseEvent*) override;
49
50signals:
51	void audioBufferSamplesChanged(int samples);
52	void fpsTargetChanged(float target);
53
54public slots:
55	void toggleFullScreen();
56
57private slots:
58	void gameStarted(GBAThread*);
59	void gameStopped();
60	void redoLogo();
61
62private:
63	void setupMenu(QMenuBar*);
64	void openStateWindow(LoadSave);
65
66	void attachWidget(QWidget* widget);
67	void detachWidget(QWidget* widget);
68
69	GameController* m_controller;
70	Display* m_display;
71	QList<QAction*> m_gameActions;
72	LogView* m_logView;
73	LoadSaveState* m_stateWindow;
74	QLabel* m_screenWidget;
75	QPixmap m_logo;
76
77#ifdef USE_GDB_STUB
78	GDBController* m_gdbController;
79#endif
80};
81
82}
83
84#endif