/** * @file home_widget.h * @ingroup Core * @ingroup Widgets */ //! \todo Document this file. #ifndef HOME_WIDGET_H #define HOME_WIDGET_H #include "libcockatrice/deck_list/deck_list.h" #include #include #include #include #include #include class QGridLayout; class QLabel; class CardInfoPictureArtCropWidget; class ExactCard; class HomeStyledButton; class QGroupBox; class QTimer; class TabSupervisor; class TutorialController; class TutorialController; class HomeWidget : public QWidget { Q_OBJECT public: HomeWidget(QWidget *parent, TabSupervisor *tabSupervisor); void updateRandomCard(); void retranslateUi(); static QPair extractDominantColors(const QPixmap &pixmap); public slots: void paintEvent(QPaintEvent *event) override; void showEvent(QShowEvent *event) override; void initializeBackgroundFromSource(); void onBackgroundShuffleFrequencyChanged(); void updateBackgroundProperties(); void updateButtonsToBackgroundColor(); QGroupBox *createButtons(); void updateConnectButton(const ClientStatus status); private: QGridLayout *layout; QTimer *cardChangeTimer; TabSupervisor *tabSupervisor; QPixmap background; TutorialController *tutorialController; bool tutorialStarted = false; CardInfoPictureArtCropWidget *backgroundSourceCard = nullptr; DeckList backgroundSourceDeck; QLabel *logoLabel = nullptr; QPair gradientColors; HomeStyledButton *connectButton = nullptr; HomeStyledButton *visualDeckEditorButton = nullptr; HomeStyledButton *visualDeckStorageButton = nullptr; HomeStyledButton *visualDatabaseDisplayButton = nullptr; HomeStyledButton *edhrecButton = nullptr; HomeStyledButton *archidektButton = nullptr; HomeStyledButton *replayButton = nullptr; HomeStyledButton *exitButton = nullptr; ClientStatus connectionStatus = StatusDisconnected; void setRandomCard(ExactCard &newCard); void loadBackgroundSourceDeck(); QPair determineButtonColor() const; void updateLogoOverlay(); }; #endif // HOME_WIDGET_H