Cockatrice/cockatrice/src/interface/widgets/utility/compact_push_button.cpp
Lukas Brübach b3fa19eaba Make pushbutton compact.
Took 54 minutes

Took 7 seconds
2026-05-14 15:57:01 +02:00

73 lines
No EOL
1.3 KiB
C++

#include "compact_push_button.h"
CompactPushButton::CompactPushButton(QWidget *parent) : QPushButton(parent)
{
setCheckable(true);
setFixedHeight(32);
// default sizing
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
connect(this, &QPushButton::clicked, this, [] {
// your popup logic here
});
}
void CompactPushButton::setButtonText(const QString &text)
{
fullText = text;
if (!compact) {
setText(fullText);
}
updateGeometryState();
}
void CompactPushButton::setButtonIcon(const QIcon &icon)
{
setIcon(icon);
}
void CompactPushButton::setCompact(bool enabled)
{
compact = enabled;
if (compact) {
setText(QString()); // icon only
} else {
setText(fullText);
}
updateGeometryState();
}
void CompactPushButton::updateGeometryState()
{
const int buttonHeight = 32;
setMinimumHeight(buttonHeight);
setMaximumHeight(buttonHeight);
if (compact) {
setMinimumWidth(buttonHeight);
setMaximumWidth(buttonHeight);
} else {
setMinimumWidth(0);
setMaximumWidth(QWIDGETSIZE_MAX);
}
updateGeometry();
}
int CompactPushButton::expandedWidth() const
{
QFontMetrics fm(font());
return fm.horizontalAdvance(fullText) + 48; // icon + padding
}
int CompactPushButton::compactWidth() const
{
return 32;
}