all repos — mgba @ f36a74759a291b63520eaabf853025ffbd221c80

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 "GDBController.h"
 12#include "Display.h"
 13#include "LoadSaveState.h"
 14
 15struct GBAOptions;
 16struct StartupOptions;
 17
 18namespace QGBA {
 19
 20class GameController;
 21class LogView;
 22class VideoView;
 23class WindowBackground;
 24
 25class Window : public QMainWindow {
 26Q_OBJECT
 27
 28public:
 29	Window(QWidget* parent = nullptr);
 30	virtual ~Window();
 31
 32	GameController* controller() { return m_controller; }
 33
 34	static GBAKey mapKey(int qtKey);
 35
 36	void setOptions(GBAOptions*);
 37	void optionsPassed(StartupOptions*);
 38
 39signals:
 40	void startDrawing(const uint32_t*, GBAThread*);
 41	void shutdown();
 42	void audioBufferSamplesChanged(int samples);
 43	void fpsTargetChanged(float target);
 44
 45public slots:
 46	void selectROM();
 47	void selectBIOS();
 48	void selectPatch();
 49	void toggleFullScreen();
 50
 51#ifdef USE_FFMPEG
 52	void openVideoWindow();
 53#endif
 54
 55#ifdef USE_GDB_STUB
 56	void gdbOpen();
 57#endif
 58
 59protected:
 60	virtual void keyPressEvent(QKeyEvent* event) override;
 61	virtual void keyReleaseEvent(QKeyEvent* event) override;
 62	virtual void resizeEvent(QResizeEvent*) override;
 63	virtual void closeEvent(QCloseEvent*) override;
 64
 65private slots:
 66	void gameStarted(GBAThread*);
 67	void gameStopped();
 68	void redoLogo();
 69
 70private:
 71	void setupMenu(QMenuBar*);
 72	void openStateWindow(LoadSave);
 73
 74	void attachWidget(QWidget* widget);
 75	void detachWidget(QWidget* widget);
 76
 77	GameController* m_controller;
 78	Display* m_display;
 79	QList<QAction*> m_gameActions;
 80	LogView* m_logView;
 81	LoadSaveState* m_stateWindow;
 82	WindowBackground* m_screenWidget;
 83	QPixmap m_logo;
 84
 85#ifdef USE_FFMPEG
 86	VideoView* m_videoView;
 87#endif
 88
 89#ifdef USE_GDB_STUB
 90	GDBController* m_gdbController;
 91#endif
 92};
 93
 94class WindowBackground : public QLabel {
 95Q_OBJECT
 96
 97public:
 98	WindowBackground(QWidget* parent = 0);
 99
100	void setSizeHint(const QSize& size);
101	virtual QSize sizeHint() const override;
102
103private:
104	QSize m_sizeHint;
105};
106
107}
108
109#endif