diff --git a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_list_display_widget.cpp b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_list_display_widget.cpp index 079bb61f4..9117ca520 100644 --- a/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_list_display_widget.cpp +++ b/cockatrice/src/client/tabs/api/edhrec/edhrec_commander_api_response_card_list_display_widget.cpp @@ -13,9 +13,10 @@ EdhrecCommanderApiResponseCardListDisplayWidget::EdhrecCommanderApiResponseCardL layout = new QVBoxLayout(this); setLayout(layout); - auto header = new BannerWidget(toDisplay.header, Qt::Vertical, 80, this); + auto header = new BannerWidget(this, toDisplay.header); flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff); + header->setBuddy(flowWidget); foreach (EdhrecCommanderApiResponseCardDetails card_detail, toDisplay.cardViews) { auto widget = new EdhrecCommanderApiResponseCardDetailsDisplayWidget(flowWidget, card_detail); diff --git a/cockatrice/src/client/ui/widgets/general/display/banner_widget.cpp b/cockatrice/src/client/ui/widgets/general/display/banner_widget.cpp index a557d9a93..7c61deaa2 100644 --- a/cockatrice/src/client/ui/widgets/general/display/banner_widget.cpp +++ b/cockatrice/src/client/ui/widgets/general/display/banner_widget.cpp @@ -1,9 +1,11 @@ #include "banner_widget.h" -#include -#include -#include -BannerWidget::BannerWidget(const QString& text, Qt::Orientation orientation, int transparency, QWidget* parent) +#include +#include +#include +#include + +BannerWidget::BannerWidget(QWidget *parent, const QString &text, Qt::Orientation orientation, int transparency) : QWidget(parent), gradientOrientation(orientation), transparency(qBound(0, transparency, 100)) { // Create the banner label and set properties @@ -19,6 +21,20 @@ BannerWidget::BannerWidget(const QString& text, Qt::Orientation orientation, int // Set minimum height for the widget setMinimumHeight(100); + connect(this, &BannerWidget::buddyVisibilityChanged, this, &BannerWidget::toggleBuddyVisibility); +} + +void BannerWidget::mousePressEvent(QMouseEvent *event) +{ + QWidget::mousePressEvent(event); + emit buddyVisibilityChanged(); +} + +void BannerWidget::toggleBuddyVisibility() const +{ + if (buddy) { + buddy->setVisible(!buddy->isVisible()); + } } void BannerWidget::paintEvent(QPaintEvent* event) diff --git a/cockatrice/src/client/ui/widgets/general/display/banner_widget.h b/cockatrice/src/client/ui/widgets/general/display/banner_widget.h index 6e141e9f4..9d9b4be77 100644 --- a/cockatrice/src/client/ui/widgets/general/display/banner_widget.h +++ b/cockatrice/src/client/ui/widgets/general/display/banner_widget.h @@ -1,23 +1,36 @@ #ifndef BANNER_WIDGET_H #define BANNER_WIDGET_H -#include #include +#include class BannerWidget : public QWidget { Q_OBJECT public: - explicit BannerWidget(const QString& text, Qt::Orientation orientation = Qt::Vertical, int transparency = 80, QWidget* parent = nullptr); + explicit BannerWidget(QWidget *parent, + const QString &text, + Qt::Orientation orientation = Qt::Vertical, + int transparency = 80); + void mousePressEvent(QMouseEvent *event); + void setBuddy(QWidget *_buddy) + { + buddy = _buddy; + } protected: - void paintEvent(QPaintEvent* event) override; + void paintEvent(QPaintEvent *event) override; private: - QLabel* bannerLabel; + QLabel *bannerLabel; Qt::Orientation gradientOrientation; int transparency; // Transparency percentage for the gradient + QWidget *buddy; +signals: + void buddyVisibilityChanged(); +private slots: + void toggleBuddyVisibility() const; }; -#endif //BANNER_WIDGET_H +#endif // BANNER_WIDGET_H