#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include "statuswidget.h" #include "rusificationwidget.h" #include "settingswidget.h" #include "helpwidget.h" #include "chooseversiondialog.h" namespace Ui { class MainWindow; } class MenuEntry; class LotroDatManager; // class NetworkUpdater; class PatchDownloader; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); public slots: void showChooseVersionDialog(); void hideChooseVersionDialog(); void updateFontSizes(); protected: void mouseMoveEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void resizeEvent(QResizeEvent *event) override; bool eventFilter(QObject *watched, QEvent *event) override; private slots: void randomChangeBackground(); void on_menuentry_1_clicked(); void on_menuentry_2_clicked(); void on_menuentry_3_clicked(); void on_menuentry_4_clicked(); void onHoverMenuentry(); void on_closeButton_clicked(); void on_minimizeButton_clicked(); void setupWindowBackgroundAndMask(QPixmap background); private: void makeConnections(); void setupMenuHoverWidget(); void moveMenuHoverWidget(MenuEntry* target); void checkMenuIsHovered(); void hideAllContentWidgets(); bool buttonsMouseMoveEventFilter(QObject *obj, QEvent *event); void setEventFilterRecursive(QObject* widget); private: PatchDownloader *patch_updater; LotroDatManager *lotro_manager; QThread *lotro_functions_thread; Ui::MainWindow *ui; StatusWidget *status_widget; RusificationWidget *rusification_widget; SettingsWidget *settings_widget; HelpWidget *help_widget; ChooseVersionDialog *choose_locale_dialog; QWidget* menuHoverWidget; QPropertyAnimation* menuHoverWidgetAnimation; QPropertyAnimation* menuHoverWidgetScaleAnimation; QTimer menu_hover_checker_timer; QPoint dragPosition; int current_bg_id; QPixmap current_bg; QBitmap current_mask; QTimer background_update_timer; const int MAX_PIXMAP_ID = 14; }; #endif // MAINWINDOW_H