statuswidget.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef STATUSWIDGET_H
  2. #define STATUSWIDGET_H
  3. #include <QWidget>
  4. #include <QSettings>
  5. #include <QTime>
  6. #include <QMap>
  7. #include <QPropertyAnimation>
  8. #include <QGraphicsOpacityEffect>
  9. #include <QLabel>
  10. #include "models/patchlist.h"
  11. #include "legacyapplication.h"
  12. namespace Ui {
  13. class StatusWidget;
  14. }
  15. class StatusWidget : public QWidget
  16. {
  17. Q_OBJECT
  18. public:
  19. // States. Higher state value means higher priority on visualisation
  20. enum ToolTipState : int {
  21. E_INFO = 8,
  22. E_ERROR = 4,
  23. E_PROCESS = 2,
  24. E_RANDOM = 1
  25. };
  26. explicit StatusWidget(PatchList *legacy_patches, QWidget *parent = 0);
  27. ~StatusWidget();
  28. public slots:
  29. void updateFontsSizes();
  30. void setToolTipMessage(QString message, ToolTipState state);
  31. void unsetToolTipMessage(ToolTipState state);
  32. // for LegacyApplication signals
  33. void onErrorStatusChanged(AppErrorStatus status);
  34. void onSecondsToNextTryToInitChanged(size_t seconds_elapsed);
  35. protected:
  36. void resizeEvent(QResizeEvent *event) override;
  37. private slots:
  38. void generateRandomTooltipMessage();
  39. void fadeBetweenToolTips(QString tooltip_id);
  40. void onPatchTotalOperationsStarted();
  41. void onPatchTotalOperationsFinished();
  42. void updatePatchProgressStatus(Patch::OperationProgress progress);
  43. void on_game_button_clicked();
  44. void on_check_for_updates_button_clicked();
  45. private:
  46. void createTooltipMessageWidget(QString tooltip_id);
  47. private:
  48. Ui::StatusWidget *ui;
  49. PatchList *legacy_patches_;
  50. bool all_patch_operations_finished_ = false;
  51. QMap<QString, QLabel*> tooltip_widgets_;
  52. QMap<QString, QGraphicsOpacityEffect*> tooltip_effects_;
  53. QMap<QString, QPropertyAnimation*> tooltip_animations_;
  54. QString current_tooltip_message_;
  55. QMap<Patch*, Patch::Operation> patch_operations;
  56. QTime last_statusbar_update_time_;
  57. ToolTipState tooltip_state_ = E_RANDOM;
  58. QMap<ToolTipState, QString> tooltip_messages_;
  59. QTimer random_tooltip_generator_timer_;
  60. QTimer process_completed_tooltip_hide_timer_;
  61. QString init_error_type_message_ = "";
  62. QString error_timeout_message_ = "";
  63. };
  64. #endif // STATUSWIDGET_H