2015-11-27 01:33:07 -07:00
|
|
|
// Copyright 2015 Dolphin Emulator Project
|
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
|
|
|
#include <QStackedWidget>
|
|
|
|
#include <QString>
|
|
|
|
#include <QToolBar>
|
|
|
|
|
2016-06-24 02:43:46 -06:00
|
|
|
#include "DolphinQt2/GameList/GameList.h"
|
2015-12-19 22:24:48 -07:00
|
|
|
#include "DolphinQt2/MenuBar.h"
|
2015-11-27 01:33:07 -07:00
|
|
|
#include "DolphinQt2/RenderWidget.h"
|
2015-12-03 21:41:17 -07:00
|
|
|
#include "DolphinQt2/ToolBar.h"
|
2015-11-27 01:33:07 -07:00
|
|
|
|
2017-06-06 05:49:49 -06:00
|
|
|
class HotkeyScheduler;
|
2017-06-25 11:40:01 -06:00
|
|
|
class LoggerWidget;
|
2017-06-06 05:49:49 -06:00
|
|
|
class MappingWindow;
|
2016-05-09 07:34:07 -06:00
|
|
|
class SettingsWindow;
|
2017-05-09 10:49:10 -06:00
|
|
|
class ControllersWindow;
|
2017-06-26 15:22:40 -06:00
|
|
|
class DragEnterEvent;
|
2017-06-15 17:42:12 -06:00
|
|
|
class GraphicsWindow;
|
2016-02-09 21:42:06 -07:00
|
|
|
|
2015-11-27 01:33:07 -07:00
|
|
|
class MainWindow final : public QMainWindow
|
|
|
|
{
|
2016-06-24 02:43:46 -06:00
|
|
|
Q_OBJECT
|
2015-11-27 01:33:07 -07:00
|
|
|
|
|
|
|
public:
|
2016-06-24 02:43:46 -06:00
|
|
|
explicit MainWindow();
|
|
|
|
~MainWindow();
|
2015-11-27 01:33:07 -07:00
|
|
|
|
2017-06-24 09:00:37 -06:00
|
|
|
bool eventFilter(QObject* object, QEvent* event) override;
|
|
|
|
|
2015-11-27 01:33:07 -07:00
|
|
|
signals:
|
2016-06-24 02:43:46 -06:00
|
|
|
void EmulationStarted();
|
|
|
|
void EmulationPaused();
|
|
|
|
void EmulationStopped();
|
2015-11-27 01:33:07 -07:00
|
|
|
|
2017-06-30 03:24:26 -06:00
|
|
|
private:
|
2016-06-24 02:43:46 -06:00
|
|
|
void Open();
|
|
|
|
void Play();
|
|
|
|
void Pause();
|
|
|
|
|
|
|
|
// May ask for confirmation. Returns whether or not it actually stopped.
|
2017-07-03 08:04:24 -06:00
|
|
|
bool RequestStop();
|
2016-06-24 02:43:46 -06:00
|
|
|
void ForceStop();
|
|
|
|
void Reset();
|
|
|
|
void FrameAdvance();
|
|
|
|
void StateLoad();
|
|
|
|
void StateSave();
|
|
|
|
void StateLoadSlot();
|
|
|
|
void StateSaveSlot();
|
|
|
|
void StateLoadSlotAt(int slot);
|
|
|
|
void StateSaveSlotAt(int slot);
|
|
|
|
void StateLoadUndo();
|
|
|
|
void StateSaveUndo();
|
|
|
|
void StateSaveOldest();
|
|
|
|
void SetStateSlot(int slot);
|
2017-07-06 03:01:32 -06:00
|
|
|
void BootWiiSystemMenu();
|
2016-06-24 02:43:46 -06:00
|
|
|
|
2017-06-14 03:58:11 -06:00
|
|
|
void PerformOnlineUpdate(const std::string& region);
|
|
|
|
|
2016-06-24 02:43:46 -06:00
|
|
|
void FullScreen();
|
|
|
|
void ScreenShot();
|
2015-11-27 01:33:07 -07:00
|
|
|
|
2016-06-24 02:43:46 -06:00
|
|
|
void CreateComponents();
|
|
|
|
|
|
|
|
void ConnectGameList();
|
2017-06-06 05:49:49 -06:00
|
|
|
void ConnectHotkeys();
|
2016-06-24 02:43:46 -06:00
|
|
|
void ConnectMenuBar();
|
|
|
|
void ConnectRenderWidget();
|
|
|
|
void ConnectStack();
|
|
|
|
void ConnectToolBar();
|
|
|
|
|
2017-05-23 14:12:01 -06:00
|
|
|
void InitControllers();
|
2017-05-31 22:11:54 -06:00
|
|
|
void ShutdownControllers();
|
2017-05-23 14:12:01 -06:00
|
|
|
|
2017-06-16 07:27:00 -06:00
|
|
|
void InitCoreCallbacks();
|
|
|
|
|
2016-06-24 02:43:46 -06:00
|
|
|
void StartGame(const QString& path);
|
|
|
|
void ShowRenderWidget();
|
|
|
|
void HideRenderWidget();
|
|
|
|
|
|
|
|
void ShowSettingsWindow();
|
2017-07-16 15:11:11 -06:00
|
|
|
void ShowAudioWindow();
|
2017-05-09 10:49:10 -06:00
|
|
|
void ShowControllersWindow();
|
2017-06-15 17:42:12 -06:00
|
|
|
void ShowGraphicsWindow();
|
2016-06-24 02:43:46 -06:00
|
|
|
void ShowAboutDialog();
|
2017-06-06 05:49:49 -06:00
|
|
|
void ShowHotkeyDialog();
|
2016-06-24 02:43:46 -06:00
|
|
|
|
2017-07-03 08:04:24 -06:00
|
|
|
void OnStopComplete();
|
2017-06-26 15:22:40 -06:00
|
|
|
void dragEnterEvent(QDragEnterEvent* event) override;
|
|
|
|
void dropEvent(QDropEvent* event) override;
|
2017-05-26 19:24:07 -06:00
|
|
|
QSize sizeHint() const override;
|
2017-06-26 15:22:40 -06:00
|
|
|
|
2016-06-24 02:43:46 -06:00
|
|
|
QStackedWidget* m_stack;
|
|
|
|
ToolBar* m_tool_bar;
|
|
|
|
MenuBar* m_menu_bar;
|
|
|
|
GameList* m_game_list;
|
|
|
|
RenderWidget* m_render_widget;
|
|
|
|
bool m_rendering_to_main;
|
2017-06-24 09:00:37 -06:00
|
|
|
bool m_stop_requested = false;
|
2017-07-03 08:04:24 -06:00
|
|
|
bool m_exit_requested = false;
|
2016-06-24 02:43:46 -06:00
|
|
|
int m_state_slot = 1;
|
2017-07-03 08:04:24 -06:00
|
|
|
QString m_pending_boot;
|
2016-06-24 02:43:46 -06:00
|
|
|
|
2017-06-06 05:49:49 -06:00
|
|
|
HotkeyScheduler* m_hotkey_scheduler;
|
2017-05-09 10:49:10 -06:00
|
|
|
ControllersWindow* m_controllers_window;
|
2016-06-24 02:43:46 -06:00
|
|
|
SettingsWindow* m_settings_window;
|
2017-06-06 05:49:49 -06:00
|
|
|
MappingWindow* m_hotkey_window;
|
2017-06-15 17:42:12 -06:00
|
|
|
GraphicsWindow* m_graphics_window;
|
2017-06-25 11:40:01 -06:00
|
|
|
LoggerWidget* m_logger_widget;
|
2015-11-27 01:33:07 -07:00
|
|
|
};
|