Files
BudgetPro/widget/sliderlabel.cpp
T

131 lines
3.5 KiB
C++
Raw Normal View History

2026-05-24 23:21:33 +02:00
#include "sliderlabel.h"
#include <QHBoxLayout>
#include <QDebug>
#include "utils/configsettings.h"
const int SLIDER_WIDTH = 180;
const QSize SLIDER_WIDTH_SIZE = QSize(222, 24);
Slider::Slider(QWidget *parent)
: QLabel(parent)
{
setStyleSheet("Slider{"
"border: 1px solid rgba(0, 0, 0, 26);"
"border-radius: 3px; "
"}");
setMinimumWidth(160);
m_slider = new QSlider(Qt::Horizontal,this);
m_slider->setMinimum(0);
m_slider->setMaximum(100);
m_slider->setValue(100);
m_slider->setFixedWidth(127);
m_valueLabel = new QLabel(this);
m_valueLabel->setObjectName("ValueLabel");
m_valueLabel->setStyleSheet("QLabel#ValueLabel{"
"color: #303030;"
"font-size: 11px;}");
m_valueLabel->setText("100%");
QHBoxLayout* mLayout = new QHBoxLayout(this);
mLayout->setMargin(0);
mLayout->setSpacing(0);
mLayout->addSpacing(1);
mLayout->addWidget(m_slider);
mLayout->addSpacing(4);
mLayout->addWidget(m_valueLabel);
mLayout->addSpacing(4);
setLayout(mLayout);
connect(m_slider, &QSlider::valueChanged, this, [=](int value){
emit valueChanged(value);
m_valueLabel->setText(QString("%1%").arg(value));
});
}
void Slider::setAlphaValue(int value)
{
qDebug() << "value..." << value;
m_valueLabel->setText(QString("%1%").arg(value));
m_slider->setValue(value);
}
int Slider::alphaValue()
{
return m_slider->value();
}
Slider::~Slider() {}
SliderLabel::SliderLabel(QString text, DrawStatus status,
MiddleWidgetStatus widgetStatus, QWidget* parent)
: QLabel(parent)
{
m_text = text;
m_drawStatus = status;
setFixedSize(SLIDER_WIDTH_SIZE);
m_titleLabel = new QLabel(this);
m_titleLabel->setFixedWidth(43);
m_titleLabel->setObjectName("TitleLabel");
m_titleLabel->setStyleSheet("QLabel#TitleLabel {"
"color: #626262;"
"font-size: 11px;"
"}");
m_slider = new Slider(this);
updateDrawStatus(status, widgetStatus);
m_titleLabel->setText(m_text);
QHBoxLayout* mLayout = new QHBoxLayout(this);
mLayout->setMargin(0);
mLayout->setSpacing(0);
mLayout->addWidget(m_titleLabel);
mLayout->addSpacing(5);
mLayout->addWidget(m_slider);
setLayout(mLayout);
connect(m_slider, &Slider::valueChanged, this, &SliderLabel::alphaChanged);
}
int SliderLabel::alpha()
{
return m_slider->alphaValue();
}
void SliderLabel::setAlpha(int val)
{
m_slider->setAlphaValue(val);
}
void SliderLabel::updateDrawStatus(DrawStatus status,
MiddleWidgetStatus widgetStatus)
{
int colorAlpha;
m_drawStatus = status;
m_widgetStatus = widgetStatus;
if (widgetStatus != MiddleWidgetStatus::DrawText)
{
if (m_drawStatus == DrawStatus::Fill)
{
colorAlpha = ConfigSettings::instance()->value("common", "fillColor_alpha").toInt();
} else
{
colorAlpha = ConfigSettings::instance()->value("common", "strokeColor_alpha").toInt();
}
} else {
colorAlpha = ConfigSettings::instance()->value("text", "fillColor_alpha").toInt();
}
m_slider->setAlphaValue(colorAlpha);
}
void SliderLabel::setTitle(const QString &text) {
m_text = text;
m_titleLabel->setText(m_text);
}
SliderLabel::~SliderLabel() {}