[VDD] Fix minimum size by adding a compact mode to quickSettingsButtons (#6890)

* [VDD] Fix minimum size by adding a compact mode to quickSettingsButtons

Took 17 minutes

Took 5 seconds

* Fix and use FlowWidget/FlowLayout

Took 35 minutes

Took 4 seconds

* Set spacings.

Took 12 minutes

* Make VDE tools flow

Took 1 hour 23 minutes

Took 5 seconds

* Squeeze and flow even more.

Took 11 minutes

* Make pushbutton compact.

Took 54 minutes

Took 7 seconds

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-05-14 19:07:15 +02:00 committed by GitHub
parent 762e742be0
commit 7153f7d4c1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 666 additions and 617 deletions

View file

@ -5,16 +5,9 @@
#include <QGroupBox>
VisualDatabaseDisplayFilterToolbarWidget::VisualDatabaseDisplayFilterToolbarWidget(VisualDatabaseDisplayWidget *_parent)
: QWidget(_parent), visualDatabaseDisplay(_parent)
: FlowWidget(_parent, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff),
visualDatabaseDisplay(_parent)
{
filterContainerLayout = new QHBoxLayout(this);
filterContainerLayout->setContentsMargins(11, 0, 11, 0);
filterContainerLayout->setSpacing(2);
setLayout(filterContainerLayout);
filterContainerLayout->setAlignment(Qt::AlignLeft);
setMaximumHeight(80);
connect(this, &VisualDatabaseDisplayFilterToolbarWidget::searchModelChanged, visualDatabaseDisplay,
&VisualDatabaseDisplayWidget::onSearchModelChanged);
@ -131,10 +124,18 @@ void VisualDatabaseDisplayFilterToolbarWidget::initialize()
filterLayout->addWidget(quickFilterFormatLegalityWidget);
// put everything into main layout
filterContainerLayout->addWidget(sortGroupBox);
filterContainerLayout->addWidget(filterGroupBox);
filterContainerLayout->addStretch();
filterContainerLayout->addWidget(quickFilterSaveLoadWidget);
addWidget(sortGroupBox);
addWidget(filterGroupBox);
auto *spacer = new QWidget(this);
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
spacer->setAttribute(Qt::WA_TransparentForMouseEvents);
addWidget(spacer);
addWidget(quickFilterSaveLoadWidget);
addWidget(quickFilterSaveLoadWidget);
// Force a layout pass so sizeHint() is accurate
layout()->activate();
fullWidthHint = sizeHint().width();
}
void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi()
@ -155,4 +156,25 @@ void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi()
quickFilterSubTypeWidget->setButtonText(tr("Sub Type"));
quickFilterSetWidget->setButtonText(tr("Sets"));
quickFilterFormatLegalityWidget->setButtonText(tr("Formats"));
}
void VisualDatabaseDisplayFilterToolbarWidget::resizeEvent(QResizeEvent *event)
{
QWidget::resizeEvent(event);
updateCompactMode(event->size().width());
}
void VisualDatabaseDisplayFilterToolbarWidget::updateCompactMode(int availableWidth)
{
const bool compact = availableWidth < fullWidthHint;
const QList<SettingsButtonWidget *> filterButtons = {
quickFilterSaveLoadWidget, quickFilterNameWidget, quickFilterMainTypeWidget,
quickFilterSubTypeWidget, quickFilterSetWidget, quickFilterFormatLegalityWidget,
};
for (auto *btn : filterButtons) {
if (btn->isCompact() != compact) // only act on transitions
btn->setCompact(compact);
}
}

View file

@ -10,7 +10,7 @@
class VisualDatabaseDisplayWidget;
class VisualDatabaseDisplayFilterToolbarWidget : public QWidget
class VisualDatabaseDisplayFilterToolbarWidget : public FlowWidget
{
Q_OBJECT
@ -32,7 +32,6 @@ private:
QGroupBox *filterGroupBox;
QLabel *filterByLabel;
QHBoxLayout *filterContainerLayout;
SettingsButtonWidget *quickFilterSaveLoadWidget;
VisualDatabaseDisplayFilterSaveLoadWidget *saveLoadWidget;
SettingsButtonWidget *quickFilterNameWidget;
@ -45,6 +44,12 @@ private:
VisualDatabaseDisplaySetFilterWidget *setFilterWidget;
SettingsButtonWidget *quickFilterFormatLegalityWidget;
VisualDatabaseDisplayFormatLegalityFilterWidget *formatLegalityWidget;
int fullWidthHint = 0;
void updateCompactMode(int availableWidth);
protected:
void resizeEvent(QResizeEvent *event) override;
};
#endif // COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H

View file

@ -51,9 +51,7 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
connect(cardSizeWidget, &CardSizeWidget::cardSizeSettingUpdated, &SettingsCache::instance(),
&SettingsCache::setVisualDatabaseDisplayCardSize);
searchContainer = new QWidget(this);
searchLayout = new QHBoxLayout(searchContainer);
searchContainer->setLayout(searchLayout);
searchContainer = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff);
searchEdit = new SearchLineEdit();
searchEdit->setObjectName("searchEdit");
@ -152,10 +150,10 @@ void VisualDatabaseDisplayWidget::initialize()
filterContainer->initialize();
filterContainer->setVisible(true);
searchLayout->addWidget(colorFilterWidget);
searchLayout->addWidget(clearFilterWidget);
searchLayout->addWidget(searchEdit);
searchLayout->addWidget(displayModeButton);
searchContainer->addWidget(colorFilterWidget);
searchContainer->addWidget(clearFilterWidget);
searchContainer->addWidget(searchEdit);
searchContainer->addWidget(displayModeButton);
mainLayout->addWidget(searchContainer);

View file

@ -91,8 +91,7 @@ protected slots:
void onDisplayModeChanged(bool checked);
private:
QWidget *searchContainer;
QHBoxLayout *searchLayout;
FlowWidget *searchContainer;
SearchLineEdit *searchEdit;
QPushButton *displayModeButton;
FilterTreeModel *filterModel;