wip: meter bar

This commit is contained in:
Hane 2024-04-28 18:26:44 +02:00
commit 20a82b42d4
9 changed files with 104 additions and 36 deletions

View file

@ -5,6 +5,31 @@ CustomWidgetEvent<T>::CustomWidgetEvent(QEvent::Type type, T payload) : QEvent(t
this->payload = payload;
}
void MeterSlider::paintEvent(QPaintEvent *event) {
//Q_D(QSlider);
/*
* QStylePainter p(this);
* QStyleOptionSlider opt;
* initStyleOption(&opt);
*
* opt.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;
* //if (d->tickPosition != NoTicks)
* // opt.subControls |= QStyle::SC_SliderTickmarks;
*
* //p.drawComplexControl(QStyle::CC_Slider, opt);
*/
QSlider::paintEvent(event);
QStyle *style = QApplication::style();
int lol = style->pixelMetric(QStyle::PM_SliderSpaceAvailable);
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setOpacity(1.0);
painter.setClipping(false);
painter.setCompositionMode(QPainter::CompositionMode::CompositionMode_Source);
painter.fillRect(0, (this->height() / 2) - 3, this->width(), 4, Qt::black);
}
void ExtendedCheckBox::customEvent(QEvent* ev) {
//QEvent::Type tipo = ev->type();
if (ev->type() == (QEvent::Type)CustomQEvent::EndpointDefaultChange) {
@ -106,7 +131,7 @@ void MainWindow::compose() {
if (!epw) continue;
epw->calculateSize(windowWidth, screenHeight);
log_debugcpp("epw loop");
log_debugcpp("epw roles: " + print_as_binary((epw->getEndpointHandler()->getRoles())).to_string());
log_debugcpp("epw roles: " + print_as_binary((epw->getEndpointHandler()->getRoles())));
//std::bitset<sizeof(uint8_t)> content =
//content);
//varToBitset<sizeof(uint8_t), uint8_t>(epw->getEndpointHandler()->getRoles());
@ -360,7 +385,7 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent, uint64_t i
*/
muteButton = new QCheckBox(this);
mainLabel = new QLabel(QString::fromStdWString(eph->getName()), this);
mainSlider = new QSlider(Qt::Horizontal, this);
mainSlider = new MeterSlider(Qt::Horizontal, this);
mainVolumeLabel = new QLabel(this);
if (this->eph->getState() != EndpointState::ENDPOINT_ACTIVE) {
@ -749,6 +774,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
scrollArea->setWidgetResizable(true);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
//scrollArea->verticalScrollBar()->setSingleStep(1);
scrollArea->setStyleSheet("QScrollBar:vertical { width: 4px; }");
//scrollArea->setMinimumWidth(500);
setCentralWidget(scrollArea);

View file

@ -26,7 +26,9 @@
#include <QScreen>
#include <QToolBar>
#include <QWindow>
#include <QPainter>
#include <QStylePainter>
#include <QStyleOptionSlider>
//#include <QScrollBar>
/*
* #else
@ -64,10 +66,19 @@ class CustomWidgetEvent : public QEvent {
public:
CustomWidgetEvent(QEvent::Type type, T payload);
T payload;
};
//Q_DECLARE_METATYPE(EndpointWidgetEvent)
class MeterSlider : public QSlider {
Q_OBJECT
protected:
void paintEvent(QPaintEvent *event) override;
public:
using QSlider::QSlider;
};
class ExtendedCheckBox : public QCheckBox {
Q_OBJECT
protected:
@ -166,7 +177,7 @@ private:
QCheckBox *muteButton = nullptr;
QLabel *mainLabel = nullptr;
QLabel *mainVolumeLabel = nullptr;
QSlider *mainSlider = nullptr;
MeterSlider *mainSlider = nullptr;
std::vector<QSlider*> channelSliders;
std::vector<QLabel*> channelLabels;
QGridLayout *widgetLayout = nullptr;