mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-06 05:23:56 -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);
|
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->setMinimumSize(QSize(0, 0));
|
||||||
button->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
|
button->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
|
||||||
|
|
||||||
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
button->setText(buttonText);
|
button->setText(text);
|
||||||
|
|
||||||
button->setFixedHeight(32);
|
button->setFixedHeight(32);
|
||||||
button->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
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()
|
void SettingsButtonWidget::togglePopup()
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,11 @@ public:
|
||||||
void removeSettingsWidget(QWidget *toRemove) const;
|
void removeSettingsWidget(QWidget *toRemove) const;
|
||||||
void setButtonIcon(QPixmap iconMap);
|
void setButtonIcon(QPixmap iconMap);
|
||||||
void setButtonText(const QString &buttonText);
|
void setButtonText(const QString &buttonText);
|
||||||
|
void setCompact(bool compact);
|
||||||
|
bool isCompact() const
|
||||||
|
{
|
||||||
|
return compact;
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QMouseEvent *event) override;
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
|
|
@ -34,6 +39,8 @@ private slots:
|
||||||
private:
|
private:
|
||||||
QHBoxLayout *layout;
|
QHBoxLayout *layout;
|
||||||
QToolButton *button;
|
QToolButton *button;
|
||||||
|
QString buttonText;
|
||||||
|
bool compact;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SettingsPopupWidget *popup;
|
SettingsPopupWidget *popup;
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,10 @@ void VisualDatabaseDisplayFilterToolbarWidget::initialize()
|
||||||
filterContainerLayout->addWidget(filterGroupBox);
|
filterContainerLayout->addWidget(filterGroupBox);
|
||||||
filterContainerLayout->addStretch();
|
filterContainerLayout->addStretch();
|
||||||
filterContainerLayout->addWidget(quickFilterSaveLoadWidget);
|
filterContainerLayout->addWidget(quickFilterSaveLoadWidget);
|
||||||
|
|
||||||
|
// Force a layout pass so sizeHint() is accurate
|
||||||
|
layout()->activate();
|
||||||
|
fullWidthHint = sizeHint().width();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi()
|
void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi()
|
||||||
|
|
@ -155,4 +159,25 @@ void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi()
|
||||||
quickFilterSubTypeWidget->setButtonText(tr("Sub Type"));
|
quickFilterSubTypeWidget->setButtonText(tr("Sub Type"));
|
||||||
quickFilterSetWidget->setButtonText(tr("Sets"));
|
quickFilterSetWidget->setButtonText(tr("Sets"));
|
||||||
quickFilterFormatLegalityWidget->setButtonText(tr("Formats"));
|
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;
|
VisualDatabaseDisplaySetFilterWidget *setFilterWidget;
|
||||||
SettingsButtonWidget *quickFilterFormatLegalityWidget;
|
SettingsButtonWidget *quickFilterFormatLegalityWidget;
|
||||||
VisualDatabaseDisplayFormatLegalityFilterWidget *formatLegalityWidget;
|
VisualDatabaseDisplayFormatLegalityFilterWidget *formatLegalityWidget;
|
||||||
|
|
||||||
|
int fullWidthHint = 0;
|
||||||
|
void updateCompactMode(int availableWidth);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H
|
#endif // COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue