#pragma once #ifdef _WIN32 #include #include #include #include #endif #include #include #include #include "log_frame.h" #include "debugger_frame.h" #include "game_list_frame.h" #include "gui_settings.h" #include namespace Ui { class main_window; } class main_window : public QMainWindow { Q_OBJECT Ui::main_window *ui; bool m_sys_menu_opened; bool m_is_list_mode = true; bool m_save_slider_pos = false; int m_other_slider_pos = 0; QIcon m_appIcon; QIcon m_icon_play; QIcon m_icon_pause; QIcon m_icon_stop; QIcon m_icon_restart; QIcon m_icon_fullscreen_on; QIcon m_icon_fullscreen_off; #ifdef _WIN32 QIcon m_icon_thumb_play; QIcon m_icon_thumb_pause; QIcon m_icon_thumb_stop; QIcon m_icon_thumb_restart; QWinThumbnailToolBar *m_thumb_bar = nullptr; QWinThumbnailToolButton *m_thumb_playPause = nullptr; QWinThumbnailToolButton *m_thumb_stop = nullptr; QWinThumbnailToolButton *m_thumb_restart = nullptr; QStringList m_vulkan_adapters; #endif #ifdef _MSC_VER QStringList m_d3d12_adapters; #endif enum drop_type { drop_error, drop_pkg, drop_pup, drop_rap, drop_dir, drop_game, drop_rrc }; public: explicit main_window(std::shared_ptr guiSettings, std::shared_ptr emuSettings, QWidget *parent = 0); void Init(); ~main_window(); QIcon GetAppIcon(); Q_SIGNALS: void RequestGlobalStylesheetChange(const QString& sheetFilePath); void RequestTrophyManagerRepaint(); public Q_SLOTS: void OnEmuStop(); void OnEmuRun(); void OnEmuResume(); void OnEmuPause(); void OnEmuReady(); void RepaintGui(); private Q_SLOTS: void OnPlayOrPause(); void Boot(const std::string& path, bool direct = false, bool add_only = false); void BootElf(); void BootGame(); void BootRsxCapture(std::string path = ""); void DecryptSPRXLibraries(); void SaveWindowState(); void ConfigureGuiFromSettings(bool configure_all = false); void SetIconSizeActions(int idx); void ResizeIcons(int index); protected: void closeEvent(QCloseEvent *event) override; void keyPressEvent(QKeyEvent *keyEvent) override; void mouseDoubleClickEvent(QMouseEvent *event) override; void dropEvent(QDropEvent* event) override; void dragEnterEvent(QDragEnterEvent* event) override; void dragMoveEvent(QDragMoveEvent* event) override; void dragLeaveEvent(QDragLeaveEvent* event) override; void SetAppIconFromPath(const std::string& path); private: void RepaintToolBarIcons(); void RepaintThumbnailIcons(); void CreateActions(); void CreateConnects(); void CreateDockWindows(); void EnableMenus(bool enabled); void ShowTitleBars(bool show); void InstallPkg(const QString& dropPath = "", bool is_bulk = false); void InstallPup(const QString& dropPath = ""); int IsValidFile(const QMimeData& md, QStringList* dropPaths = nullptr); void AddGamesFromDir(const QString& path); QAction* CreateRecentAction(const q_string_pair& entry, const uint& sc_idx); void BootRecentAction(const QAction* act); void AddRecentAction(const q_string_pair& entry); q_pair_list m_rg_entries; QList m_recentGameActs; QActionGroup* m_iconSizeActGroup; QActionGroup* m_listModeActGroup; QActionGroup* m_categoryVisibleActGroup; QMessageBox::StandardButton m_install_bulk = QMessageBox::NoButton; // Dockable widget frames QMainWindow *m_mw; log_frame *m_logFrame; debugger_frame *m_debuggerFrame; game_list_frame *m_gameListFrame; std::shared_ptr guiSettings; std::shared_ptr emuSettings; };