#ifndef STATUSWIDGET_H #define STATUSWIDGET_H #include #include #include #include #include #include #include #include "legacyapplication.h" #include "models/downloader.h" #include "models/patchinstaller.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(QWidget *parent = 0); ~StatusWidget(); public slots: void updateFontsSizes(); void setToolTipMessage(QString message, ToolTipState state); void unsetToolTipMessage(ToolTipState state); // for LegacyApplication signals void onErrorStatusChanged(AppErrorStatus status); void onSecondsToNextTryToInitChanged(size_t seconds_elapsed); protected: void resizeEvent(QResizeEvent *event) override; private slots: void generateRandomTooltipMessage(); void fadeBetweenToolTips(QString tooltip_id); void onPatchDownloaderStarted(); void onPatchDownloaderFinished(); void onPatchDownloaderProgressChanged(Downloader::Status status); void onPatchInstallerStarted(); void onPatchInstallerFinished(); void onPatchInstallerProgressChanged(PatchInstaller::Status status); void onPatchInstallerVideoProgressChanged(int finished_videos, int total_videos, Downloader::Status status); void on_game_button_clicked(); void on_check_for_updates_button_clicked(); private: void createTooltipMessageWidget(QString tooltip_id); private: Ui::StatusWidget *ui; 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_; QTimer process_completed_tooltip_hide_timer_; QString init_error_type_message_ = ""; QString error_timeout_message_ = ""; }; #endif // STATUSWIDGET_H