#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include "statuswidget.h" #include "aboutwidget.h" #include "helpwidget.h" #include "legacyapplication.h" namespace Ui { class MainWindow; } class MenuEntry; class LotroDatManager; class PatchDownloader; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); int getLastDialogResult(); protected: virtual void closeEvent(QCloseEvent *event) override; public slots: void onErrorStatusChanged(AppErrorStatus status); void updateFontSizes(); signals: void messageDialogFinished(QObject* emitter, int result); 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_4_clicked(); void onHoverMenuentry(MenuEntry* hovered_entry); 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: bool show_warning_on_close = false; Ui::MainWindow *ui; MenuEntry* current_active_entry_; MenuEntry* current_hovered_entry_; StatusWidget *status_widget_; HelpWidget *help_widget_; AboutWidget *about_widget_; QWidget* menu_hover_widget_; QPropertyAnimation* menu_hover_widget_animation_; QTimer menu_hover_checker_timer_; QPoint drag_position_; int current_bg_id_; QPixmap current_bg_; QBitmap current_mask_; QTimer background_update_timer_; const int MAX_PIXMAP_ID = 21; }; #endif // MAINWINDOW_H