all repos — mgba @ ad12bdde9d34ecd477b33e02d02d8d41c115b817

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	GameController* controller() { return m_controller; }
30
31	static GBAKey mapKey(int qtKey);
32
33	void optionsPassed(StartupOptions*);
34
35signals:
36	void startDrawing(const uint32_t*, GBAThread*);
37	void shutdown();
38	void audioBufferSamplesChanged(int samples);
39	void fpsTargetChanged(float target);
40
41public slots:
42	void selectROM();
43	void selectBIOS();
44	void toggleFullScreen();
45
46#ifdef USE_GDB_STUB
47	void gdbOpen();
48#endif
49
50protected:
51	virtual void keyPressEvent(QKeyEvent* event) override;
52	virtual void keyReleaseEvent(QKeyEvent* event) override;
53	virtual void resizeEvent(QResizeEvent*) override;
54	virtual void closeEvent(QCloseEvent*) override;
55
56private slots:
57	void gameStarted(GBAThread*);
58	void gameStopped();
59	void redoLogo();
60
61private:
62	void setupMenu(QMenuBar*);
63	void openStateWindow(LoadSave);
64
65	void attachWidget(QWidget* widget);
66	void detachWidget(QWidget* widget);
67
68	GameController* m_controller;
69	Display* m_display;
70	QList<QAction*> m_gameActions;
71	LogView* m_logView;
72	LoadSaveState* m_stateWindow;
73	QLabel* m_screenWidget;
74	QPixmap m_logo;
75
76#ifdef USE_GDB_STUB
77	GDBController* m_gdbController;
78#endif
79};
80
81}
82
83#endif