mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-06 13:33:55 -07:00
[VDD] Fix minimum size by adding a compact mode to quickSettingsButtons
Took 17 minutes Took 5 seconds
This commit is contained in:
parent
fe12f4cbb9
commit
33e5ae00db
4 changed files with 58 additions and 6 deletions
|
|
@ -35,19 +35,33 @@ void SettingsButtonWidget::setButtonIcon(QPixmap iconMap)
|
|||
button->setIcon(iconMap);
|
||||
}
|
||||
|
||||
void SettingsButtonWidget::setButtonText(const QString &buttonText)
|
||||
void SettingsButtonWidget::setButtonText(const QString &text)
|
||||
{
|
||||
// 🔓 unlock size constraints
|
||||
buttonText = text;
|
||||
|
||||
button->setMinimumSize(QSize(0, 0));
|
||||
button->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
|
||||
|
||||
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||
button->setText(buttonText);
|
||||
|
||||
button->setText(text);
|
||||
button->setFixedHeight(32);
|
||||
button->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
|
||||
button->setMinimumWidth(button->sizeHint().width());
|
||||
button->setMinimumWidth(32); // icon-only fallback minimum
|
||||
}
|
||||
|
||||
void SettingsButtonWidget::setCompact(bool _compact)
|
||||
{
|
||||
compact = _compact;
|
||||
if (compact) {
|
||||
button->setToolButtonStyle(Qt::ToolButtonIconOnly);
|
||||
button->setFixedWidth(32);
|
||||
} else {
|
||||
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||
button->setText(buttonText);
|
||||
button->setFixedWidth(QWIDGETSIZE_MAX); // release fixed width
|
||||
button->setMinimumWidth(32);
|
||||
button->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsButtonWidget::togglePopup()
|
||||
|
|
|
|||
|
|
@ -23,6 +23,11 @@ public:
|
|||
void removeSettingsWidget(QWidget *toRemove) const;
|
||||
void setButtonIcon(QPixmap iconMap);
|
||||
void setButtonText(const QString &buttonText);
|
||||
void setCompact(bool compact);
|
||||
bool isCompact() const
|
||||
{
|
||||
return compact;
|
||||
};
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *event) override;
|
||||
|
|
@ -34,6 +39,8 @@ private slots:
|
|||
private:
|
||||
QHBoxLayout *layout;
|
||||
QToolButton *button;
|
||||
QString buttonText;
|
||||
bool compact;
|
||||
|
||||
public:
|
||||
SettingsPopupWidget *popup;
|
||||
|
|
|
|||
|
|
@ -135,6 +135,10 @@ void VisualDatabaseDisplayFilterToolbarWidget::initialize()
|
|||
filterContainerLayout->addWidget(filterGroupBox);
|
||||
filterContainerLayout->addStretch();
|
||||
filterContainerLayout->addWidget(quickFilterSaveLoadWidget);
|
||||
|
||||
// Force a layout pass so sizeHint() is accurate
|
||||
layout()->activate();
|
||||
fullWidthHint = sizeHint().width();
|
||||
}
|
||||
|
||||
void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi()
|
||||
|
|
@ -155,4 +159,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);
|
||||
}
|
||||
}
|
||||
|
|
@ -45,6 +45,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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue