mainwindow.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QPropertyAnimation>
  5. #include <QTimer>
  6. #include <QPixmap>
  7. #include <QBitmap>
  8. #include <QGraphicsBlurEffect>
  9. #include <QFont>
  10. #include <QCloseEvent>
  11. #include <QMutex>
  12. #include <QMutexLocker>
  13. #include "statuswidget.h"
  14. #include "settingswidget.h"
  15. #include "aboutwidget.h"
  16. #include "helpwidget.h"
  17. #include "chooseversiondialog.h"
  18. #include "legacyapplication.h"
  19. namespace Ui {
  20. class MainWindow;
  21. }
  22. class MenuEntry;
  23. class DialogWindow;
  24. class PatchList;
  25. enum LegacyApplication::ErrorStatus;
  26. class MainWindow : public QMainWindow
  27. {
  28. Q_OBJECT
  29. public:
  30. explicit MainWindow(PatchList *legacy_patches, QWidget *parent = 0);
  31. ~MainWindow();
  32. int getLastDialogResult();
  33. protected:
  34. virtual void closeEvent(QCloseEvent *event) override;
  35. public slots:
  36. void showChooseVersionDialog();
  37. void hideChooseVersionDialog();
  38. void onErrorStatusChanged(LegacyApplication::ErrorStatus status);
  39. void onSecondsToNextTryToInitChanged(size_t seconds_elapsed);
  40. void showMessageDialog(QObject* emitter, QString message, QString ok_button_text = "Ок", QString cancel_button_text = "Отмена");
  41. void updateFontSizes();
  42. signals:
  43. void messageDialogFinished(QObject* emitter, int result);
  44. protected:
  45. void mouseMoveEvent(QMouseEvent *event) override;
  46. void mousePressEvent(QMouseEvent *event) override;
  47. void resizeEvent(QResizeEvent *event) override;
  48. bool eventFilter(QObject *watched, QEvent *event) override;
  49. private slots:
  50. void randomChangeBackground();
  51. void on_menuentry_1_clicked();
  52. void on_menuentry_2_clicked();
  53. void on_menuentry_3_clicked();
  54. void on_menuentry_4_clicked();
  55. void onHoverMenuentry(MenuEntry* hovered_entry);
  56. void on_closeButton_clicked();
  57. void on_minimizeButton_clicked();
  58. void setupWindowBackgroundAndMask(QPixmap background);
  59. void onPatchOperationsStarted();
  60. void onPatchOperationsFinished();
  61. private:
  62. void makeConnections();
  63. void setupMenuHoverWidget();
  64. void moveMenuHoverWidget(MenuEntry* target);
  65. void checkMenuIsHovered();
  66. void hideAllContentWidgets();
  67. bool buttonsMouseMoveEventFilter(QObject *obj, QEvent *event);
  68. void setEventFilterRecursive(QObject* widget);
  69. private:
  70. bool show_warning_on_close = false;
  71. PatchList *legacy_patches_;
  72. Ui::MainWindow *ui;
  73. MenuEntry* current_active_entry_;
  74. MenuEntry* current_hovered_entry_;
  75. StatusWidget *status_widget_;
  76. SettingsWidget *settings_widget_;
  77. HelpWidget *help_widget_;
  78. AboutWidget *about_widget_;
  79. ChooseVersionDialog *choose_locale_dialog_;
  80. DialogWindow *dialog_window_;
  81. QWidget* menu_hover_widget_;
  82. QPropertyAnimation* menu_hover_widget_animation_;
  83. QTimer menu_hover_checker_timer_;
  84. QPoint drag_position_;
  85. int current_bg_id_;
  86. QPixmap current_bg_;
  87. QBitmap current_mask_;
  88. QTimer background_update_timer_;
  89. const int MAX_PIXMAP_ID = 21;
  90. };
  91. #endif // MAINWINDOW_H