#ifndef STATUSWIDGET_H #define STATUSWIDGET_H #include #include #include #include #include #include #include #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_message); void onPatchTotalOperationsStarted(); void onPatchTotalOperationsFinished(); void onPatchOperationStarted(Patch::Operation operation, Patch* patch); void onPatchOperationFinished(Patch::Operation operation, Patch* patch); void onPatchTotalProgressChanged(Patch::OperationProgress operation_progress); void onPatchProgressChanged(Patch::OperationProgress progress, Patch* patch); void on_game_button_clicked(); void on_check_for_updates_button_clicked(); private: void updateStatusBar(Patch::OperationProgress progress); void createTooltipMessageWidget(QString tooltip_message); private: Ui::StatusWidget *ui; PatchList *legacy_patches_; bool all_patch_operations_finished_ = false; QMap tooltip_widgets_; QMap tooltip_effects_; QMap tooltip_animations_; QString current_tooltip_message_; QMap patch_operations; QTime last_statusbar_update_time_; ToolTipState tooltip_state_ = E_RANDOM; QMap tooltip_messages_; QTimer random_tooltip_generator_timer_; }; #endif // STATUSWIDGET_H