mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-06 05:23:56 -07:00
73 lines
No EOL
1.3 KiB
C++
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;
|
|
} |