// Copyright 2014 Dolphin Emulator Project // Licensed under GPLv2 // Refer to the license.txt file included. #pragma once #include #include #include "Core/Core.h" #include "DolphinQt/GameList/GameTracker.h" #include "DolphinQt/VideoInterface/RenderWidget.h" // Predefinitions namespace Ui { class DMainWindow; } class DMainWindow : public QMainWindow { Q_OBJECT public: explicit DMainWindow(QWidget* parent_widget = nullptr); ~DMainWindow(); // DRenderWidget bool RenderWidgetHasFocus(); DRenderWidget* GetRenderWidget() { return m_render_widget.get(); } signals: void CoreStateChanged(Core::EState state); private slots: // Emulation void StartGame(const QString filename); void OnCoreStateChanged(Core::EState state); // Main toolbar void OnOpen(); void OnPlay(); void OnStop(); // View menu void OnGameListStyleChanged(); // Help menu void OnOpenWebsite(); void OnOpenDocs(); void OnOpenGitHub(); void OnOpenSystemInfo(); void OnOpenAbout(); // Misc. void UpdateIcons(); private: std::unique_ptr m_ui; DGameTracker* m_game_tracker; // Emulation QString RequestBootFilename(); QString ShowFileDialog(); void DoStartPause(); std::unique_ptr m_render_widget; // TODO: just create this once and reuse it bool m_isStopping = false; }; // Pointer to the only instance of DMainWindow, used by Host_* extern DMainWindow* g_main_window;