Indicate that things are clickable.

This commit is contained in:
Brübach, Lukas 2025-11-29 21:26:58 +01:00
parent 20a4836de3
commit 8cd5552d65
4 changed files with 34 additions and 5 deletions

View file

@ -19,6 +19,16 @@ void BackgroundPlateWidget::paintEvent(QPaintEvent *event)
// Set the background color to semi-transparent black with rounded corners
QRect rect = this->rect();
painter.setPen(Qt::NoPen); // No border
if (focused) {
painter.setBrush(QColor(85, 190, 75, 140));
} else {
painter.setBrush(QColor(0, 0, 0, 140)); // semi-transparent black
}
painter.drawRoundedRect(rect, 6, 6); // rounded corners
}
void BackgroundPlateWidget::setFocused(bool _focused)
{
focused = _focused;
update();
}

View file

@ -10,6 +10,11 @@ class BackgroundPlateWidget : public QWidget
public:
explicit BackgroundPlateWidget(QWidget *parent = nullptr);
void setFocused(bool focused);
private:
bool focused = false;
protected:
void paintEvent(QPaintEvent *event) override;
};

View file

@ -101,10 +101,10 @@ ArchidektApiResponseDeckEntryDisplayWidget::ArchidektApiResponseDeckEntryDisplay
headerLayout->addWidget(colorBar);
// Create a shared plate for the labels
BackgroundPlateWidget *sharedPlate = new BackgroundPlateWidget(this);
sharedPlate->setFixedHeight(120); // Adjust height to fit all labels
backgroundPlateWidget = new BackgroundPlateWidget(this);
backgroundPlateWidget->setFixedHeight(120); // Adjust height to fit all labels
QVBoxLayout *plateLayout = new QVBoxLayout(sharedPlate);
QVBoxLayout *plateLayout = new QVBoxLayout(backgroundPlateWidget);
// Add labels to the plate layout
QLabel *ownerLabel = new QLabel(QString("Owner: %1").arg(response.getOwner().getName()));
@ -117,7 +117,7 @@ ArchidektApiResponseDeckEntryDisplayWidget::ArchidektApiResponseDeckEntryDisplay
plateLayout->addWidget(updatedAtLabel);
// Add the shared plate to the header layout
headerLayout->addWidget(sharedPlate);
headerLayout->addWidget(backgroundPlateWidget);
layout->addLayout(headerLayout);
}
@ -127,6 +127,16 @@ void ArchidektApiResponseDeckEntryDisplayWidget::mousePressEvent(QMouseEvent *ev
QWidget::mousePressEvent(event);
actRequestNavigationToDeck();
}
void ArchidektApiResponseDeckEntryDisplayWidget::enterEvent(QEnterEvent *event)
{
QWidget::enterEvent(event);
backgroundPlateWidget->setFocused(true);
}
void ArchidektApiResponseDeckEntryDisplayWidget::leaveEvent(QEvent *event)
{
QWidget::leaveEvent(event);
backgroundPlateWidget->setFocused(false);
}
void ArchidektApiResponseDeckEntryDisplayWidget::setScaleFactor(int scale)
{

View file

@ -11,6 +11,7 @@
#include <QVBoxLayout>
#include <QWidget>
class BackgroundPlateWidget;
class ArchidektApiResponseDeckEntryDisplayWidget : public QWidget
{
Q_OBJECT
@ -32,6 +33,8 @@ public slots:
protected:
void mousePressEvent(QMouseEvent *event) override;
void enterEvent(QEnterEvent *event) override;
void leaveEvent(QEvent *event) override;
private:
QVBoxLayout *layout;
@ -42,6 +45,7 @@ private:
QLabel *picture;
QPixmap originalPixmap;
int scaleFactor = 100;
BackgroundPlateWidget *backgroundPlateWidget;
};
#endif // COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_ENTRY_DISPLAY_WIDGET_H