#ifndef STATUSWIDGET_H #define STATUSWIDGET_H #include <QWidget> #include <QSettings> #include <QTime> #include <QMap> #include <QPropertyAnimation> #include <QGraphicsOpacityEffect> #include <QLabel> #include "models/patchlist.h" namespace Ui { class StatusWidget; } class StatusWidget : public QWidget { Q_OBJECT public: // States. Higher state value means higher priority on visualisation enum ToolTipState : int { E_INFO = 8, E_ERROR = 4, E_PROCESS = 2, E_RANDOM = 1 }; explicit StatusWidget(PatchList *legacy_patches, QWidget *parent = 0); ~StatusWidget(); public slots: void updateFontsSizes(); void setToolTipMessage(QString message, ToolTipState state); void unsetToolTipMessage(ToolTipState state); protected: void resizeEvent(QResizeEvent *event) override; private slots: void generateRandomTooltipMessage(); void fadeBetweenToolTips(QString tooltip_id); void onPatchTotalOperationsStarted(); void onPatchTotalOperationsFinished(); void updatePatchProgressStatus(Patch::OperationProgress progress); void on_game_button_clicked(); void on_check_for_updates_button_clicked(); private: void createTooltipMessageWidget(QString tooltip_id); private: Ui::StatusWidget *ui; PatchList *legacy_patches_; bool all_patch_operations_finished_ = false; QMap<QString, QLabel*> tooltip_widgets_; QMap<QString, QGraphicsOpacityEffect*> tooltip_effects_; QMap<QString, QPropertyAnimation*> tooltip_animations_; QString current_tooltip_message_; QMap<Patch*, Patch::Operation> patch_operations; QTime last_statusbar_update_time_; ToolTipState tooltip_state_ = E_RANDOM; QMap<ToolTipState, QString> tooltip_messages_; QTimer random_tooltip_generator_timer_; QTimer process_completed_tooltip_hide_timer_; }; #endif // STATUSWIDGET_H