mainwindow.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QWidget>
  5. #include <QDockWidget>
  6. #include <QString>
  7. #include <QColor>
  8. #include <QTimer>
  9. #include <QMenuBar>
  10. #include <QMenu>
  11. #include <QAction>
  12. #include <QToolBar>
  13. #include <QStatusBar>
  14. #include <QFont>
  15. #include <QCloseEvent>
  16. #include <QKeyEvent>
  17. #include <QDropEvent>
  18. #include <QDragEnterEvent>
  19. #include <QTranslator>
  20. #include "qsptextbox.h"
  21. #include "qsplistbox.h"
  22. #include "qspinputbox.h"
  23. #include "qspimgcanvas.h"
  24. #ifdef _WEBBOX
  25. #include <QWebEngineProfile>
  26. #include "qspwebbox.h"
  27. #include "qspwebengineurlrequestinterceptor.h"
  28. #include "qspwebengineurlschemehandler.h"
  29. #endif
  30. #ifdef _WEBBOX_WEBKIT
  31. #include "qspwebbox_webkit.h"
  32. #endif
  33. #include <qsp_default.h>
  34. #define QSP_LOGO "Qt Quest Soft Player"
  35. #define QSP_APPNAME "Qqsp"
  36. #define QSP_CONFIG "qqsp.ini"
  37. #define QSP_CUSTOM_CONFIG "custom.ini"
  38. #define QSP_QUICKSAVE "quicksave.sav"
  39. #define QSP_GAME "game.qsp"
  40. namespace Ui {
  41. class MainWindow;
  42. }
  43. class MainWindow : public QMainWindow
  44. {
  45. Q_OBJECT
  46. public:
  47. explicit MainWindow(QWidget *parent = 0);
  48. ~MainWindow();
  49. // Methods
  50. void EnableControls(bool status, bool isExtended = false);
  51. void ApplyParams();
  52. void DeleteMenu();
  53. void AddMenuItem(const QString &name, const QString &imgPath);
  54. int ShowMenu();
  55. void UpdateGamePath(const QString &path);
  56. void ShowError();
  57. // Accessors
  58. QTimer *GetTimer() const { return m_timer; }
  59. #ifndef _WEBBOX_COMMON
  60. QspTextBox *GetDesc() const { return _mainDescTextBox; }
  61. QspTextBox *GetVars() const { return _descTextBox; }
  62. #else
  63. QspWebBox *GetDesc() const { return _mainDescTextBox; }
  64. QspWebBox *GetVars() const { return _descTextBox; }
  65. #endif
  66. QspInputBox *GetInput() const { return _inputTextBox; }
  67. QspListBox *GetActions() const { return _actionsListBox; }
  68. QspListBox *GetObjects() const { return _objectsListBox; }
  69. QDockWidget *GetVarsDock() const { return _descWidget; }
  70. QDockWidget *GetInputDock() const { return _inputWidget; }
  71. QDockWidget *GetActionsDock() const { return _actionsWidget; }
  72. QDockWidget *GetObjectsDock() const { return _objectsWidget; }
  73. QDockWidget *GetImageDock() const { return _imgViewWidget; }
  74. QString GetLastPath() { return lastPath; }
  75. void SetLastPath(const QString &path) { lastPath = path; }
  76. QspImgCanvas *GetImgView() const { return m_imgView; }
  77. QMenu *GetGameMenu() const { return _gameMenu; }
  78. bool IsShowHotkeys() const { return m_isShowHotkeys; }
  79. bool IsQuit() const { return m_isQuit; }
  80. bool IsKeyPressedWhileDisabled() const { return m_keyPressedWhileDisabled; }
  81. QColor GetLinkColor() { return m_linkColor; }
  82. QColor GetBackgroundColor() { return m_backColor; }
  83. QColor GetForegroundColor() { return m_fontColor; }
  84. void SetLinkColor(const QColor& new_color) { m_settingsLinkColor = new_color; if(m_isUseLinkColor) ApplyLinkColor(new_color); }
  85. void SetBackgroundColor(const QColor& new_color) { m_settingsBackColor = new_color; if(m_isUseBackColor) ApplyBackColor(new_color); }
  86. void SetForegroundColor(const QColor& new_color) { m_settingsFontColor = new_color; if(m_isUseFontColor) ApplyFontColor(new_color); }
  87. void SetShowPlainText(bool isPlain);
  88. bool GetUseFontSize() { return m_isUseFontSize; }
  89. void SetUseFontSize(bool isUseFontS) { m_isUseFontSize = isUseFontS; }
  90. int GetFontSize() { return m_fontSize; }
  91. void SetFontSize(int fontS) { m_fontSize = fontS; }
  92. bool GetUseFont() { return m_isUseFont; }
  93. void SetUseFont(bool isUseFont) { m_isUseFont = isUseFont; }
  94. QFont GetFont() { return m_font; }
  95. void SetFont(const QFont& new_font) { m_font = new_font; if(m_isUseFont) ApplyFont(new_font, 2, 2); }
  96. bool GetAutostart() { return autostartLastGame; }
  97. void SetAutostart(bool isAutostart) { autostartLastGame = isAutostart; }
  98. bool GetPerGameConfig() { return perGameConfig; }
  99. void SetPerGameConfig(bool isPerGameConfig) { perGameConfig = isPerGameConfig; }
  100. bool GetUseBackColor() { return m_isUseBackColor; }
  101. void SetUseBackColor(bool isUseBackColor) { m_isUseBackColor = isUseBackColor; }
  102. bool GetUseLinkColor() { return m_isUseLinkColor; }
  103. void SetUseLinkColor(bool isUseLinkColor) { m_isUseLinkColor = isUseLinkColor; }
  104. bool GetUseFontColor() { return m_isUseFontColor; }
  105. void SetUseFontColor(bool isUseFontColor) { m_isUseFontColor = isUseFontColor; }
  106. QString GetLangID() { return langid; }
  107. void SetLangID(const QString& new_langid) { langid = new_langid; }
  108. float GetOverallVolume() { return m_volume; }
  109. void SetOverallVolume(float new_volume);
  110. bool GetDisableVideo() { return disableVideo; }
  111. void SetDisableVideo(bool isDisableVideo);
  112. bool GetVideoFix() { return m_videoFix; }
  113. void SetVideoFix(bool isFix);
  114. void SetAllowHTML5Extras(bool HTML5Extras);
  115. bool GetAllowHTML5Extras() { return m_isAllowHTML5Extras; }
  116. void SetUseCaseInsensitiveFilePath(bool CaseInsensitiveFilePath);
  117. bool GetUseCaseInsensitiveFilePath();
  118. private:
  119. void CreateMenuBar();
  120. void CreateDockWindows();
  121. void LoadSettings(QString filePath = QString());
  122. void SaveSettings(QString filePath = QString());
  123. void closeEvent(QCloseEvent *event);
  124. void keyPressEvent(QKeyEvent *event);
  125. void ActionsListBoxDoAction(int action);
  126. void dropEvent(QDropEvent* event);
  127. void dragEnterEvent(QDragEnterEvent* event);
  128. // Internal methods
  129. void UpdateTitle();
  130. void ReCreateGUI();
  131. void RefreshUI();
  132. void ApplyFont(const QFont& new_font, int fontType, int sizeType);
  133. bool ApplyFontColor(const QColor& color);
  134. bool ApplyBackColor(const QColor& color);
  135. bool ApplyLinkColor(const QColor& color);
  136. QMenuBar* mainMenuBar;
  137. QToolBar* mainToolBar;
  138. //QStatusBar* mainStatusBar;
  139. QMenu* _fileMenu; // was wxMenu *m_fileMenu;
  140. QMenu* _gameMenu; // was wxMenu *m_gameMenu;
  141. QMenu* _settingsMenu; // was wxMenu *m_settingsMenu;
  142. QMenu* _showHideMenu; //Show / Hide submenu
  143. #ifndef _WEBBOX_COMMON
  144. QspTextBox* _mainDescTextBox; //m_desc
  145. QspTextBox* _descTextBox; //m_vars ID_VARSDESC
  146. #else
  147. QspWebBox* _mainDescTextBox; //m_desc
  148. QspWebBox* _descTextBox; //m_vars ID_VARSDESC
  149. #endif
  150. QspListBox* _objectsListBox; //m_objects
  151. QspListBox* _actionsListBox; //m_actions
  152. QspInputBox* _inputTextBox; //m_input
  153. QDockWidget* _objectsWidget; //m_objects
  154. QDockWidget* _actionsWidget; //m_actions
  155. QDockWidget* _descWidget; //m_vars ID_VARSDESC
  156. QDockWidget* _inputWidget; //m_input
  157. QDockWidget* _mainDescWidget;
  158. QString lastPath; //For QFileDialog
  159. QString lastGame;
  160. // Fields
  161. bool m_isGameOpened;
  162. QString m_savedGamePath;
  163. QString m_configPath;
  164. bool perGameConfig;
  165. QString m_path;
  166. QTimer *m_timer;
  167. QspImgCanvas *m_imgView;
  168. QDockWidget* _imgViewWidget;
  169. int m_menuItemId;
  170. QMenu *m_menu; //qsp callback menu
  171. QColor m_backColor;
  172. QColor m_linkColor;
  173. QColor m_fontColor;
  174. QColor m_defaultBackColor;
  175. QColor m_defaultLinkColor;
  176. QColor m_defaultFontColor;
  177. QColor m_settingsBackColor;
  178. QColor m_settingsLinkColor;
  179. QColor m_settingsFontColor;
  180. bool m_isUseBackColor;
  181. bool m_isUseLinkColor;
  182. bool m_isUseFontColor;
  183. QPalette m_palette;
  184. int m_fontSize;
  185. QFont m_font;
  186. QFont m_defaultFont;
  187. bool m_isUseFontSize;
  188. bool m_isUseFont;
  189. bool m_isProcessEvents;
  190. bool m_isQuit;
  191. bool m_keyPressedWhileDisabled;
  192. bool m_isShowHotkeys;
  193. float m_volume;
  194. int m_menuIndex;
  195. bool showPlainText;
  196. bool showCaptions;
  197. bool autostartLastGame;
  198. QString langid;
  199. bool disableVideo;
  200. bool m_videoFix;
  201. bool m_isAllowHTML5Extras;
  202. public slots:
  203. void OpenGameFile(const QString& path);
  204. private slots:
  205. void OnOpenGame();
  206. void OnRestartGame();
  207. void OnOpenSavedGame();
  208. void OnSaveGame();
  209. void OnOpenQuickSavedGame();
  210. void OnQuickSaveGame();
  211. void OnOptions();
  212. void OnAbout();
  213. void OnToggleCaptions(bool checked);
  214. void OnToggleMenuBar(bool checked);
  215. void OnToggleHotkeys(bool checked);
  216. void OnToggleWinMode();
  217. void OnToggleShowPlainText(bool checked);
  218. void OnNewGame();
  219. void OnTimer();
  220. void OnLinkClicked(const QUrl& url);
  221. void OnObjectListBoxItemClicked (QListWidgetItem * itemClicked);
  222. void OnActionsListBoxItemClicked (QListWidgetItem * itemClicked);
  223. void OnObjectChange(int currentRow);
  224. void OnActionChange(int currentRow);
  225. void OnMenu(QAction* action);
  226. void OnInputTextChange();
  227. void OnInputTextEnter();
  228. };
  229. #endif // MAINWINDOW_H