wip: bad build config, unnecesary reimpl. Step by step
This commit is contained in:
parent
0e123f886d
commit
f8171f12f3
5 changed files with 640 additions and 135 deletions
|
|
@ -11,7 +11,7 @@ DESTPATH += "$$PWD\src" "$$PWD\src\qt" "$$PWD\src\back" "$$PWD\src\back\reimpl"
|
||||||
VPATH += "$$PWD\src" "$$PWD\src\qt" "$$PWD\src\back" "$$PWD\src\back\reimpl" "$$PWD\src\cont"
|
VPATH += "$$PWD\src" "$$PWD\src\qt" "$$PWD\src\back" "$$PWD\src\back\reimpl" "$$PWD\src\cont"
|
||||||
|
|
||||||
SOURCES += qtestmain.cpp qtclasses.cpp backlasses.cpp backsessionclasses.cpp contclasses.cpp contsessionclasses.cpp
|
SOURCES += qtestmain.cpp qtclasses.cpp backlasses.cpp backsessionclasses.cpp contclasses.cpp contsessionclasses.cpp
|
||||||
HEADERS += qtclasses.h backlasses.h backsessionclasses.h contclasses.h contsessionclasses.h global.h debug.h backfuncs.h ipolicyconfig.h msinclude.h qtvisuals.h
|
HEADERS += qtclasses.h backlasses.h backsessionclasses.h contclasses.h contsessionclasses.h global.h debug.h backfuncs.h ipolicyconfig.h msinclude.h
|
||||||
RESOURCES = assets.qrc
|
RESOURCES = assets.qrc
|
||||||
RC_ICONS += assets/logo.ico
|
RC_ICONS += assets/logo.ico
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ bool MeterSlider::event(QEvent* ev) {
|
||||||
void MeterSlider::paintEvent(QPaintEvent *event) {
|
void MeterSlider::paintEvent(QPaintEvent *event) {
|
||||||
QStyleOptionSlider sliderComplex = QStyleOptionSlider();
|
QStyleOptionSlider sliderComplex = QStyleOptionSlider();
|
||||||
sliderComplex.initFrom(this);
|
sliderComplex.initFrom(this);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sliderComplex.initFrom(this);
|
* sliderComplex.initFrom(this);
|
||||||
* sliderComplex.subControls = QStyle::SC_None;
|
* sliderComplex.subControls = QStyle::SC_None;
|
||||||
|
|
@ -64,36 +65,46 @@ void MeterSlider::paintEvent(QPaintEvent *event) {
|
||||||
* //sliderComplex.subControls = QStyle::SC_SliderGroove;
|
* //sliderComplex.subControls = QStyle::SC_SliderGroove;
|
||||||
* if (this->tickPosition() != NoTicks) sliderComplex.subControls |= QStyle::SC_SliderTickmarks;
|
* if (this->tickPosition() != NoTicks) sliderComplex.subControls |= QStyle::SC_SliderTickmarks;
|
||||||
* QStylePainter p(this);
|
* QStylePainter p(this);
|
||||||
* p.drawComplexControl(QStyle::CC_Slider, sliderComplex);
|
|
||||||
*/
|
*/
|
||||||
|
//p.drawComplexControl(QStyle::CC_Slider, sliderComplex);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
QStyleOptionSlider sliderComplex2 = QStyleOptionSlider();
|
||||||
|
sliderComplex2.initFrom(this);
|
||||||
|
sliderComplex2.orientation = this->orientation();
|
||||||
|
sliderComplex2.maximum = this->maximum();
|
||||||
|
sliderComplex2.minimum = this->minimum();
|
||||||
|
sliderComplex2.tickPosition = (QSlider::TickPosition)this->tickPosition();
|
||||||
|
sliderComplex2.tickInterval = this->tickInterval();
|
||||||
|
sliderComplex2.upsideDown = (this->orientation() == Qt::Horizontal) ?
|
||||||
|
(this->invertedAppearance() != (sliderComplex2.direction == Qt::RightToLeft))
|
||||||
|
: (!this->invertedAppearance());
|
||||||
|
sliderComplex2.subControls = QStyle::SC_SliderHandle;
|
||||||
|
sliderComplex2.direction = Qt::LeftToRight; // we use the upsideDown option instead
|
||||||
|
sliderComplex2.sliderPosition = this->sliderPosition();
|
||||||
|
sliderComplex2.sliderValue = this->value();
|
||||||
|
sliderComplex2.singleStep = this->singleStep();
|
||||||
|
sliderComplex2.pageStep = this->pageStep();
|
||||||
|
if (this->orientation() == Qt::Horizontal)
|
||||||
|
sliderComplex2.state |= QStyle::State_Horizontal;
|
||||||
|
|
||||||
|
if (this->isSliderDown()) {
|
||||||
|
sliderComplex2.activeSubControls = QStyle::SC_SliderHandle;
|
||||||
|
sliderComplex2.state |= QStyle::State_Sunken;
|
||||||
|
} else {
|
||||||
|
sliderComplex2.activeSubControls = QStyle::SC_SliderHandle;
|
||||||
|
}
|
||||||
|
|
||||||
|
sliderComplex2.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;
|
||||||
|
if ((QSlider::TickPosition)this->tickPosition() != NoTicks)
|
||||||
|
sliderComplex2.subControls |= QStyle::SC_SliderTickmarks;
|
||||||
|
|
||||||
|
QPainter painter(this);
|
||||||
|
QStyle* stle = QApplication::style();
|
||||||
|
stle->drawComplexControl((QStyle::ComplexControl)CC_MeterSlider, &sliderComplex2, &painter, this);
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* QStyleOptionSlider sliderComplex2 = QStyleOptionSlider();
|
|
||||||
* sliderComplex2.initFrom(this);
|
|
||||||
* sliderComplex2.orientation = this->orientation();
|
|
||||||
* sliderComplex2.maximum = this->maximum();
|
|
||||||
* sliderComplex2.minimum = this->minimum();
|
|
||||||
* sliderComplex2.tickPosition = (QSlider::TickPosition)this->tickPosition();
|
|
||||||
* sliderComplex2.tickInterval = this->tickInterval();
|
|
||||||
* sliderComplex2.upsideDown = (this->orientation() == Qt::Horizontal) ?
|
|
||||||
* (this->invertedAppearance() != (sliderComplex2.direction == Qt::RightToLeft))
|
|
||||||
* : (!this->invertedAppearance());
|
|
||||||
* sliderComplex2.subControls = QStyle::SC_SliderHandle;
|
|
||||||
* sliderComplex2.direction = Qt::LeftToRight; // we use the upsideDown option instead
|
|
||||||
* sliderComplex2.sliderPosition = this->sliderPosition();
|
|
||||||
* sliderComplex2.sliderValue = this->value();
|
|
||||||
* sliderComplex2.singleStep = this->singleStep();
|
|
||||||
* sliderComplex2.pageStep = this->pageStep();
|
|
||||||
* if (this->orientation() == Qt::Horizontal)
|
|
||||||
* sliderComplex2.state |= QStyle::State_Horizontal;
|
|
||||||
*
|
|
||||||
* if (this->isSliderDown()) {
|
|
||||||
* sliderComplex2.activeSubControls = QStyle::SC_SliderHandle;
|
|
||||||
* sliderComplex2.state |= QStyle::State_Sunken;
|
|
||||||
* } else {
|
|
||||||
* sliderComplex2.activeSubControls = QStyle::SC_SliderHandle;
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
//Q_D(QSlider);
|
//Q_D(QSlider);
|
||||||
/*
|
/*
|
||||||
|
|
@ -108,39 +119,43 @@ void MeterSlider::paintEvent(QPaintEvent *event) {
|
||||||
* //p.drawComplexControl(QStyle::CC_Slider, opt);
|
* //p.drawComplexControl(QStyle::CC_Slider, opt);
|
||||||
*/
|
*/
|
||||||
//QSlider::paintEvent(event);
|
//QSlider::paintEvent(event);
|
||||||
int left = 0, top = 0, right = 0, bottom = 0;
|
|
||||||
((QWidget*)parent())->layout()->getContentsMargins(&left, &top, &right, &bottom);
|
|
||||||
|
|
||||||
QStyle *style = QApplication::style();
|
//IL CODE WENO lbockomet
|
||||||
//int lol = style->pixelMetric(QStyle::PM_SliderSpaceAvailable);
|
/*
|
||||||
QPainter painter(this);
|
* int left = 0, top = 0, right = 0, bottom = 0;
|
||||||
//painter.setPen(Qt::blue);
|
* ((QWidget*)parent())->layout()->getContentsMargins(&left, &top, &right, &bottom);
|
||||||
painter.setOpacity(1.0);
|
*
|
||||||
painter.setClipping(false);
|
* QStyle *style = QApplication::style();
|
||||||
painter.setCompositionMode(QPainter::CompositionMode::CompositionMode_Source);
|
* //int lol = style->pixelMetric(QStyle::PM_SliderSpaceAvailable);
|
||||||
float peakLength = (this->width() * (this->peakValue));
|
* QPainter painter(this);
|
||||||
double stepWidth = (double)this->width() * ((double)this->singleStep() / (this->maximum() - this->minimum()));
|
* //painter.setPen(Qt::blue);
|
||||||
//Fusion seems to fuck around with bar's height and width
|
* painter.setOpacity(1.0);
|
||||||
//const qreal dpr = painter->device()->devicePixelRatio();
|
* painter.setClipping(false);
|
||||||
//QStyleOptionSlider sliderComplex = QStyleOptionSlider(); //slider.initFrom(this);
|
* painter.setCompositionMode(QPainter::CompositionMode::CompositionMode_Source);
|
||||||
QRect sliderSize = style->subControlRect(QStyle::CC_Slider, (QStyleOptionComplex*)&sliderComplex, QStyle::SC_SliderHandle);
|
* float peakLength = (this->width() * (this->peakValue));
|
||||||
int handleCenterPos = QStyle::sliderPositionFromValue(this->minimum(), this->maximum(), this->value(), this->width());
|
* double stepWidth = (double)this->width() * ((double)this->singleStep() / (this->maximum() - this->minimum()));
|
||||||
int unattenuatedPeakMeter = ((this->width() * this->peakValue) >= handleCenterPos - (sliderSize.width() / 2))
|
* //Fusion seems to fuck around with bar's height and width
|
||||||
? this->width() - (sliderSize.width() / 2)
|
* //const qreal dpr = painter->device()->devicePixelRatio();
|
||||||
: this->width() * this->peakValue;
|
* //QStyleOptionSlider sliderComplex = QStyleOptionSlider(); //slider.initFrom(this);
|
||||||
//QApplication::style()->subControlRect(QStyle::CC_Slider, (QStyleOptionComplex*)&slider, QStyle::SC_SliderHandle);
|
* QRect sliderSize = style->subControlRect(QStyle::CC_Slider, (QStyleOptionComplex*)&sliderComplex, QStyle::SC_SliderHandle);
|
||||||
painter.fillRect(0, (this->height() / 2) - 3, this->width(),
|
* int handleCenterPos = QStyle::sliderPositionFromValue(this->minimum(), this->maximum(), this->value(), this->width());
|
||||||
4, Qt::white);
|
* int unattenuatedPeakMeter = ((this->width() * this->peakValue) >= handleCenterPos - (sliderSize.width() / 2))
|
||||||
painter.fillRect(0, (this->height() / 2) - 3, this->width() * this->peakValue,
|
* ? this->width() - (sliderSize.width() / 2)
|
||||||
4, Qt::gray);
|
* : this->width() * this->peakValue;
|
||||||
painter.fillRect(0, (this->height() / 2) - 3, (this->width() - ((this->maximum() - this->value()) * stepWidth)) * this->peakValue,
|
* //QApplication::style()->subControlRect(QStyle::CC_Slider, (QStyleOptionComplex*)&slider, QStyle::SC_SliderHandle);
|
||||||
4, Qt::green);
|
* painter.fillRect(0, (this->height() / 2) - 3, this->width(),
|
||||||
// - ((this->maximum() - this->value()) * stepWidth))
|
* 4, Qt::white);
|
||||||
//double ratio = ;
|
* painter.fillRect(0, (this->height() / 2) - 3, this->width() * this->peakValue,
|
||||||
double handleShift = (double)((sliderSize.width() * ((double)(this->maximum() - this->value()) / 100)));
|
* 4, Qt::gray);
|
||||||
painter.fillRect((this->width() - ((this->maximum() - this->value()) * stepWidth)) - (sliderSize.width()) + handleShift, top / 2, sliderSize.width(), sliderSize.height() - bottom, Qt::magenta);
|
* painter.fillRect(0, (this->height() / 2) - 3, (this->width() - ((this->maximum() - this->value()) * stepWidth)) * this->peakValue,
|
||||||
//sliderComplex.subControls = QStyle::SC_SliderHandle;
|
* 4, Qt::green);
|
||||||
//p.drawComplexControl(QStyle::CC_Slider, sliderComplex);
|
* // - ((this->maximum() - this->value()) * stepWidth))
|
||||||
|
* //double ratio = ;
|
||||||
|
* double handleShift = (double)((sliderSize.width() * ((double)(this->maximum() - this->value()) / 100)));
|
||||||
|
* painter.fillRect((this->width() - ((this->maximum() - this->value()) * stepWidth)) - (sliderSize.width()) + handleShift, top / 2, sliderSize.width(), sliderSize.height() - bottom, Qt::magenta);
|
||||||
|
* //sliderComplex.subControls = QStyle::SC_SliderHandle;
|
||||||
|
* //p.drawComplexControl(QStyle::CC_Slider, sliderComplex);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtendedCheckBox::customEvent(QEvent* ev) {
|
void ExtendedCheckBox::customEvent(QEvent* ev) {
|
||||||
|
|
@ -317,8 +332,8 @@ SessionWidget::SessionWidget(uint64_t idx, SessionHandler* sh, QWidget *parent)
|
||||||
mainSlider->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
mainSlider->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
//mainSlider->setMinimumWidth(120 /*1/16 1080p*/);
|
//mainSlider->setMinimumWidth(120 /*1/16 1080p*/);
|
||||||
mainSlider->setFocusPolicy(Qt::StrongFocus);
|
mainSlider->setFocusPolicy(Qt::StrongFocus);
|
||||||
mainSlider->setTickPosition(QSlider::TicksBothSides);
|
//mainSlider->setTickPosition(QSlider::TicksBothSides);
|
||||||
mainSlider->setTickInterval(5);
|
//mainSlider->setTickInterval(5);
|
||||||
mainSlider->setSingleStep(1);
|
mainSlider->setSingleStep(1);
|
||||||
mainSlider->setRange(0,100);
|
mainSlider->setRange(0,100);
|
||||||
|
|
||||||
|
|
@ -428,7 +443,7 @@ ChannelWidget::ChannelWidget(uint32_t channelCount, EndpointHandler* eph, QWidge
|
||||||
for(uint64_t channel = 0, col = 0, row = 0; channel < channelCount && channelCount > 1; channel++){
|
for(uint64_t channel = 0, col = 0, row = 0; channel < channelCount && channelCount > 1; channel++){
|
||||||
MeterSlider* tmp = new MeterSlider(Qt::Horizontal);
|
MeterSlider* tmp = new MeterSlider(Qt::Horizontal);
|
||||||
QLabel* tmpLb = new QLabel("");
|
QLabel* tmpLb = new QLabel("");
|
||||||
tmp->setTickInterval(5);
|
//tmp->setTickInterval(5);
|
||||||
tmp->setSingleStep(1);
|
tmp->setSingleStep(1);
|
||||||
tmp->setRange(0,100);
|
tmp->setRange(0,100);
|
||||||
|
|
||||||
|
|
@ -520,8 +535,8 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent, uint64_t i
|
||||||
//muteButton->setStyleSheet("background-color: #A3C1DA; color: red");
|
//muteButton->setStyleSheet("background-color: #A3C1DA; color: red");
|
||||||
mainSlider->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
mainSlider->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
mainSlider->setFocusPolicy(Qt::StrongFocus);
|
mainSlider->setFocusPolicy(Qt::StrongFocus);
|
||||||
mainSlider->setTickPosition(QSlider::TicksBothSides);
|
//mainSlider->setTickPosition(QSlider::TicksBothSides);
|
||||||
mainSlider->setTickInterval(5);
|
//mainSlider->setTickInterval(5);
|
||||||
mainSlider->setSingleStep(1);
|
mainSlider->setSingleStep(1);
|
||||||
mainSlider->setRange(0,100);
|
mainSlider->setRange(0,100);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
#include <QStyleOptionSlider>
|
#include <QStyleOptionSlider>
|
||||||
#include <QStylePainter>
|
#include <QStylePainter>
|
||||||
#include <QStyleOptionSlider>
|
#include <QStyleOptionSlider>
|
||||||
|
#include <QFontMetrics>
|
||||||
//#include <QScrollBar>
|
//#include <QScrollBar>
|
||||||
/*
|
/*
|
||||||
* #else
|
* #else
|
||||||
|
|
@ -44,7 +44,6 @@
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "contclasses.h"
|
#include "contclasses.h"
|
||||||
#include "qtvisuals.h"
|
|
||||||
|
|
||||||
enum SpawnPos {
|
enum SpawnPos {
|
||||||
LEFT = (1 << 1),
|
LEFT = (1 << 1),
|
||||||
|
|
@ -76,8 +75,8 @@ class MeterSlider : public QSlider {
|
||||||
private:
|
private:
|
||||||
~MeterSlider();
|
~MeterSlider();
|
||||||
float peakValue;
|
float peakValue;
|
||||||
MixerStyle* style;
|
|
||||||
|
|
||||||
|
friend class MixerStyle;
|
||||||
protected:
|
protected:
|
||||||
bool event(QEvent* ev) override;
|
bool event(QEvent* ev) override;
|
||||||
void paintEvent(QPaintEvent *event) override;
|
void paintEvent(QPaintEvent *event) override;
|
||||||
|
|
@ -89,6 +88,9 @@ public:
|
||||||
using QSlider::QSlider;
|
using QSlider::QSlider;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//todo: TEST. TEST.
|
||||||
|
#include "qtvisuals.h"
|
||||||
|
|
||||||
class ExtendedCheckBox : public QCheckBox {
|
class ExtendedCheckBox : public QCheckBox {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
protected:
|
protected:
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,505 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QProxyStyle>
|
#include <QProxyStyle>
|
||||||
|
#include <QPixmapCache>
|
||||||
|
#include <QLatin1Char>
|
||||||
|
#include <QLatin1String>
|
||||||
|
//#include "qstylehelper.cpp"
|
||||||
|
|
||||||
|
//repeats. bruh.
|
||||||
|
//#include <QStyleOptionSlider>
|
||||||
|
//#include <QPainter>
|
||||||
|
|
||||||
|
enum CustomComplexControl {
|
||||||
|
CC_MeterSlider = 0xf0000001
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
namespace qt64 {
|
||||||
|
static inline QLatin1String operator""_L1(const char* ch, uint64_t) {
|
||||||
|
return QLatin1String(ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace qt64;
|
||||||
|
|
||||||
|
|
||||||
class MixerStyle : public QProxyStyle {
|
class MixerStyle : public QProxyStyle {
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using QProxyStyle::QProxyStyle;
|
using QProxyStyle::QProxyStyle;
|
||||||
|
|
||||||
//void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
|
//void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option,
|
||||||
//QPainter *p, const QWidget *widget) const override;
|
// QPainter *painter, const QWidget *widget) const override;
|
||||||
|
//Click on slider = move handle to click pos
|
||||||
int styleHint(QStyle::StyleHint hint, const QStyleOption* option = 0, const QWidget* widget = 0,
|
int styleHint(QStyle::StyleHint hint, const QStyleOption* option = 0, const QWidget* widget = 0,
|
||||||
QStyleHintReturn* returnData = 0) const {
|
QStyleHintReturn* returnData = 0) const {
|
||||||
if (hint == QStyle::SH_Slider_AbsoluteSetButtons)
|
if (hint == QStyle::SH_Slider_AbsoluteSetButtons)
|
||||||
return (Qt::LeftButton | Qt::MiddleButton | Qt::RightButton);
|
return (Qt::LeftButton | Qt::MiddleButton | Qt::RightButton);
|
||||||
return QProxyStyle::styleHint(hint, option, widget, returnData);
|
return QProxyStyle::styleHint(hint, option, widget, returnData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* #ifdef Q_OS_DARWIN
|
||||||
|
* static const qreal qstyleBaseDpi = 72;
|
||||||
|
* #else
|
||||||
|
* static const qreal qstyleBaseDpi = 96;
|
||||||
|
* #endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
//Q_GUI_EXPORT int qt_defaultDpiX() const;
|
||||||
|
|
||||||
|
qreal dpi(const QStyleOption *option) const {
|
||||||
|
#ifndef Q_OS_DARWIN
|
||||||
|
// Prioritize the application override, except for on macOS where
|
||||||
|
// we have historically not supported the AA_Use96Dpi flag.
|
||||||
|
if (QCoreApplication::testAttribute(Qt::AA_Use96Dpi))
|
||||||
|
return 96;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Expect that QStyleOption::QFontMetrics::QFont has the correct DPI set
|
||||||
|
if (option)
|
||||||
|
return option->fontMetrics.fontDpi();
|
||||||
|
|
||||||
|
// Fall back to historical Qt behavior: hardocded 72 DPI on mac,
|
||||||
|
// primary screen DPI on other platforms.
|
||||||
|
#ifdef Q_OS_DARWIN
|
||||||
|
return qstyleBaseDpi;
|
||||||
|
#else
|
||||||
|
return QGuiApplication::primaryScreen()->physicalDotsPerInch();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal dpiScaled(qreal value, qreal dpi) const {
|
||||||
|
static const qreal qstyleBaseDpi = 96;
|
||||||
|
return value * dpi / qstyleBaseDpi;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal dpiScaled(qreal value, const QPaintDevice *device) const {
|
||||||
|
return dpiScaled(value, device->logicalDpiX());
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal dpiScaled(qreal value, const QStyleOption *option) const {
|
||||||
|
return dpiScaled(value, dpi(option));
|
||||||
|
}
|
||||||
|
|
||||||
|
QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option,
|
||||||
|
SubControl subControl, const QWidget *widget) const {
|
||||||
|
QRect rect = QCommonStyle::subControlRect(CC_Slider, option, subControl, widget);
|
||||||
|
|
||||||
|
switch (control) {
|
||||||
|
#if QT_CONFIG(slider)
|
||||||
|
case CC_MeterSlider:
|
||||||
|
if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
|
||||||
|
int tickSize = proxy()->pixelMetric(PM_SliderTickmarkOffset, option, widget);
|
||||||
|
switch (subControl) {
|
||||||
|
case SC_SliderHandle: {
|
||||||
|
const bool bothTicks = (slider->tickPosition & QSlider::TicksBothSides) == QSlider::TicksBothSides;
|
||||||
|
if (slider->orientation == Qt::Horizontal) {
|
||||||
|
rect.setHeight(baseStyle()->pixelMetric(PM_SliderThickness, option, widget));
|
||||||
|
rect.setWidth(baseStyle()->pixelMetric(PM_SliderLength, option, widget));
|
||||||
|
int centerY = slider->rect.center().y() - rect.height() / 2;
|
||||||
|
if (!bothTicks) {
|
||||||
|
if (slider->tickPosition & QSlider::TicksAbove)
|
||||||
|
centerY += tickSize;
|
||||||
|
if (slider->tickPosition & QSlider::TicksBelow)
|
||||||
|
centerY -= tickSize - 1;
|
||||||
|
}
|
||||||
|
rect.moveTop(centerY);
|
||||||
|
} else {
|
||||||
|
rect.setWidth(baseStyle()->pixelMetric(PM_SliderThickness, option, widget));
|
||||||
|
rect.setHeight(baseStyle()->pixelMetric(PM_SliderLength, option, widget));
|
||||||
|
int centerX = slider->rect.center().x() - rect.width() / 2;
|
||||||
|
if (!bothTicks) {
|
||||||
|
if (slider->tickPosition & QSlider::TicksAbove)
|
||||||
|
centerX += tickSize;
|
||||||
|
if (slider->tickPosition & QSlider::TicksBelow)
|
||||||
|
centerX -= tickSize - 1;
|
||||||
|
}
|
||||||
|
rect.moveLeft(centerX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SC_SliderGroove: {
|
||||||
|
QPoint grooveCenter = slider->rect.center();
|
||||||
|
//rect.setWidth(std::abs(grooveCenter.x()) * 2);
|
||||||
|
const int grooveThickness = this->dpiScaled(7, option); //QStyleHelper::dpiScaled(7, option);
|
||||||
|
const bool bothTicks = (slider->tickPosition & QSlider::TicksBothSides) == QSlider::TicksBothSides;
|
||||||
|
if (slider->orientation == Qt::Horizontal) {
|
||||||
|
rect.setHeight(grooveThickness);
|
||||||
|
if (!bothTicks) {
|
||||||
|
if (slider->tickPosition & QSlider::TicksAbove)
|
||||||
|
grooveCenter.ry() += tickSize;
|
||||||
|
if (slider->tickPosition & QSlider::TicksBelow)
|
||||||
|
grooveCenter.ry() -= tickSize - 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rect.setWidth(grooveThickness);
|
||||||
|
if (!bothTicks) {
|
||||||
|
if (slider->tickPosition & QSlider::TicksAbove)
|
||||||
|
grooveCenter.rx() += tickSize;
|
||||||
|
if (slider->tickPosition & QSlider::TicksBelow)
|
||||||
|
grooveCenter.rx() -= tickSize - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rect.moveCenter(grooveCenter);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rect;
|
||||||
|
break;
|
||||||
|
#endif // QT_CONFIG(slider)
|
||||||
|
default:
|
||||||
|
return baseStyle()->subControlRect(control, option, subControl, widget);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option,
|
||||||
|
QPainter *painter, const QWidget *widget) const {
|
||||||
|
switch (cc) {
|
||||||
|
#if QT_CONFIG(slider)
|
||||||
|
case CC_MeterSlider:
|
||||||
|
if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
|
||||||
|
const qreal dpr = painter->device()->devicePixelRatio();
|
||||||
|
const QColor buttonColor = this->buttonColor(option->palette);
|
||||||
|
QRect groove = this->subControlRect(static_cast<QStyle::ComplexControl>(CC_MeterSlider), option, SC_SliderGroove, widget);
|
||||||
|
QRect handle = this->subControlRect(static_cast<QStyle::ComplexControl>(CC_MeterSlider), option, SC_SliderHandle, widget);
|
||||||
|
|
||||||
|
bool horizontal = slider->orientation == Qt::Horizontal;
|
||||||
|
bool ticksAbove = slider->tickPosition & QSlider::TicksAbove;
|
||||||
|
bool ticksBelow = slider->tickPosition & QSlider::TicksBelow;
|
||||||
|
QColor activeHighlight = this->highlight(option->palette);
|
||||||
|
QPixmap cache;
|
||||||
|
QBrush oldBrush = painter->brush();
|
||||||
|
QPen oldPen = painter->pen();
|
||||||
|
QColor shadowAlpha(Qt::black);
|
||||||
|
shadowAlpha.setAlpha(10);
|
||||||
|
QColor outline;
|
||||||
|
if (option->state & State_HasFocus && option->state & State_KeyboardFocusChange)
|
||||||
|
outline = this->highlightedOutline(option->palette);
|
||||||
|
|
||||||
|
if ((option->subControls & SC_SliderGroove) && groove.isValid()) {
|
||||||
|
QColor grooveColor;
|
||||||
|
grooveColor.setHsv(buttonColor.hue(),
|
||||||
|
qMin(255, (int)(buttonColor.saturation())),
|
||||||
|
qMin(255, (int)(buttonColor.value()*0.9)));
|
||||||
|
QString groovePixmapName = "slider_groove" + QString::number(groove.width());//QStyleHelper::uniqueName("slider_groove"_L1, option, groove.size(), dpr);
|
||||||
|
QRect pixmapRect(0, 0, groove.width(), groove.height());
|
||||||
|
|
||||||
|
// draw background groove
|
||||||
|
if (!QPixmapCache::find(groovePixmapName, &cache)) {
|
||||||
|
cache = this->styleCachePixmap(pixmapRect.size(), dpr);
|
||||||
|
QPainter groovePainter(&cache);
|
||||||
|
groovePainter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
groovePainter.translate(0.5, 0.5);
|
||||||
|
QLinearGradient gradient;
|
||||||
|
if (horizontal) {
|
||||||
|
gradient.setStart(pixmapRect.center().x(), pixmapRect.top());
|
||||||
|
gradient.setFinalStop(pixmapRect.center().x(), pixmapRect.bottom());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
gradient.setStart(pixmapRect.left(), pixmapRect.center().y());
|
||||||
|
gradient.setFinalStop(pixmapRect.right(), pixmapRect.center().y());
|
||||||
|
}
|
||||||
|
groovePainter.setPen(QPen(outline));
|
||||||
|
gradient.setColorAt(0, grooveColor.darker(110));
|
||||||
|
gradient.setColorAt(1, grooveColor.lighter(110));//palette.button().color().darker(115));
|
||||||
|
groovePainter.setBrush(gradient);
|
||||||
|
groovePainter.drawRoundedRect(pixmapRect.adjusted(1, 1, -2, -2), 1, 1);
|
||||||
|
groovePainter.end();
|
||||||
|
QPixmapCache::insert(groovePixmapName, cache);
|
||||||
|
}
|
||||||
|
painter->drawPixmap(groove.topLeft(), cache);
|
||||||
|
|
||||||
|
// draw groove lines (vol + unattenuated vol)
|
||||||
|
const MeterSlider* widgetCast = qobject_cast<const MeterSlider*>(widget);
|
||||||
|
if (widgetCast) {
|
||||||
|
QRect clipRect;
|
||||||
|
//if (!groovePixmapName.isEmpty()) groovePixmapName += QLatin1String("_unattenuated");
|
||||||
|
//groovePixmapName += "_unattenuated"_L1;
|
||||||
|
//lf (!QPixmapCache::find(groovePixmapName, &cache)) {
|
||||||
|
cache = styleCachePixmap(pixmapRect.size(), dpr);
|
||||||
|
QPainter groovePainter(&cache);
|
||||||
|
QLinearGradient gradient;
|
||||||
|
if (horizontal) {
|
||||||
|
gradient.setStart(pixmapRect.center().x(), pixmapRect.top());
|
||||||
|
gradient.setFinalStop(pixmapRect.center().x(), pixmapRect.bottom());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
gradient.setStart(pixmapRect.left(), pixmapRect.center().y());
|
||||||
|
gradient.setFinalStop(pixmapRect.right(), pixmapRect.center().y());
|
||||||
|
}
|
||||||
|
QColor highlight = QColor(30,30,30,100); //this->highlight(option->palette);
|
||||||
|
QColor highlightedoutline = highlight.darker(140);
|
||||||
|
QColor grooveOutline = outline;
|
||||||
|
if (qGray(grooveOutline.rgb()) > qGray(highlightedoutline.rgb()))
|
||||||
|
grooveOutline = highlightedoutline;
|
||||||
|
|
||||||
|
float peakValue = ((MeterSlider*)widget)->peakValue;
|
||||||
|
groovePainter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
groovePainter.translate(0.5, 0.5);
|
||||||
|
groovePainter.setPen(QPen(grooveOutline));
|
||||||
|
gradient.setColorAt(0, highlight);
|
||||||
|
gradient.setColorAt(1, highlight.lighter(130));
|
||||||
|
groovePainter.setBrush(gradient);
|
||||||
|
groovePainter.drawRoundedRect(pixmapRect.adjusted(
|
||||||
|
1, 1,
|
||||||
|
-pixmapRect.width() + (pixmapRect.width() * peakValue),
|
||||||
|
-2), 1, 1);
|
||||||
|
groovePainter.setPen(this->innerContrastLine());
|
||||||
|
groovePainter.setBrush(Qt::green);
|
||||||
|
double stepWidth = (double)widgetCast->width() * ((double)widgetCast->singleStep() / (widgetCast->maximum() - widgetCast->minimum()));
|
||||||
|
groovePainter.drawRoundedRect(pixmapRect.adjusted(
|
||||||
|
1, 1,
|
||||||
|
-pixmapRect.width() + ((widgetCast->width() - ((widgetCast->maximum() - widgetCast->value()) * stepWidth)) * peakValue),
|
||||||
|
-2), 1, 1);
|
||||||
|
|
||||||
|
groovePainter.end();
|
||||||
|
//QPixmapCache::insert(groovePixmapName, cache);
|
||||||
|
//}
|
||||||
|
//}
|
||||||
|
if (horizontal) {
|
||||||
|
if (slider->upsideDown)
|
||||||
|
clipRect = QRect(handle.right(), groove.top(), groove.right() - handle.right(), groove.height());
|
||||||
|
else
|
||||||
|
clipRect = QRect(groove.left() + 2, groove.top() + 2,
|
||||||
|
groove.right() - 2, 2);
|
||||||
|
} else {
|
||||||
|
if (slider->upsideDown)
|
||||||
|
clipRect = QRect(groove.left(), handle.bottom(), groove.width(), groove.height() - (handle.bottom() - slider->rect.top()));
|
||||||
|
else
|
||||||
|
clipRect = QRect(groove.left(), groove.top(), groove.width(), handle.top() - groove.top());
|
||||||
|
}
|
||||||
|
painter->save();
|
||||||
|
painter->setClipRect(clipRect.adjusted(0, 0, 1, 1), Qt::IntersectClip);
|
||||||
|
painter->drawPixmap(groove.topLeft(), cache);
|
||||||
|
painter->restore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (option->subControls & SC_SliderTickmarks) {
|
||||||
|
painter->save();
|
||||||
|
painter->translate(slider->rect.x(), slider->rect.y());
|
||||||
|
painter->setPen(outline);
|
||||||
|
int tickSize = proxy()->pixelMetric(PM_SliderTickmarkOffset, option, widget);
|
||||||
|
int available = proxy()->pixelMetric(PM_SliderSpaceAvailable, slider, widget);
|
||||||
|
int interval = slider->tickInterval;
|
||||||
|
if (interval <= 0) {
|
||||||
|
interval = slider->singleStep;
|
||||||
|
if (QStyle::sliderPositionFromValue(slider->minimum, slider->maximum, interval,
|
||||||
|
available)
|
||||||
|
- QStyle::sliderPositionFromValue(slider->minimum, slider->maximum,
|
||||||
|
0, available) < 3)
|
||||||
|
interval = slider->pageStep;
|
||||||
|
}
|
||||||
|
if (interval <= 0)
|
||||||
|
interval = 1;
|
||||||
|
|
||||||
|
int v = slider->minimum;
|
||||||
|
int len = proxy()->pixelMetric(PM_SliderLength, slider, widget);
|
||||||
|
QVector<QLine> lines;
|
||||||
|
while (v <= slider->maximum + 1) {
|
||||||
|
if (v == slider->maximum + 1 && interval == 1)
|
||||||
|
break;
|
||||||
|
const int v_ = qMin(v, slider->maximum);
|
||||||
|
int pos = sliderPositionFromValue(slider->minimum, slider->maximum,
|
||||||
|
v_, (horizontal
|
||||||
|
? slider->rect.width()
|
||||||
|
: slider->rect.height()) - len,
|
||||||
|
slider->upsideDown) + len / 2;
|
||||||
|
int extra = 2 - ((v_ == slider->minimum || v_ == slider->maximum) ? 1 : 0);
|
||||||
|
|
||||||
|
if (horizontal) {
|
||||||
|
if (ticksAbove) {
|
||||||
|
lines += QLine(pos, slider->rect.top() + extra,
|
||||||
|
pos, slider->rect.top() + tickSize);
|
||||||
|
}
|
||||||
|
if (ticksBelow) {
|
||||||
|
lines += QLine(pos, slider->rect.bottom() - extra,
|
||||||
|
pos, slider->rect.bottom() - tickSize);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (ticksAbove) {
|
||||||
|
lines += QLine(slider->rect.left() + extra, pos,
|
||||||
|
slider->rect.left() + tickSize, pos);
|
||||||
|
}
|
||||||
|
if (ticksBelow) {
|
||||||
|
lines += QLine(slider->rect.right() - extra, pos,
|
||||||
|
slider->rect.right() - tickSize, pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// in the case where maximum is max int
|
||||||
|
int nextInterval = v + interval;
|
||||||
|
if (nextInterval < v)
|
||||||
|
break;
|
||||||
|
v = nextInterval;
|
||||||
|
}
|
||||||
|
painter->drawLines(lines);
|
||||||
|
painter->restore();
|
||||||
|
}
|
||||||
|
// draw handle
|
||||||
|
if ((option->subControls & SC_SliderHandle) ) {
|
||||||
|
QString handlePixmapName = "slider_handle" + QString::number(handle.height());//QStyleHelper::uniqueName("slider_handle"_L1, option,//handle.size(), dpr);
|
||||||
|
if (!QPixmapCache::find(handlePixmapName, &cache)) {
|
||||||
|
cache = styleCachePixmap(handle.size(), dpr);
|
||||||
|
QRect pixmapRect(0, 0, handle.width(), handle.height());
|
||||||
|
QPainter handlePainter(&cache);
|
||||||
|
QRect gradRect = pixmapRect.adjusted(2, 2, -2, -2);
|
||||||
|
|
||||||
|
// gradient fill
|
||||||
|
QRect r = pixmapRect.adjusted(1, 1, -2, -2);
|
||||||
|
QLinearGradient gradient = qt_fusion_gradient(gradRect, this->buttonColor(option->palette),horizontal ? TopDown : FromLeft);
|
||||||
|
|
||||||
|
handlePainter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
handlePainter.translate(0.5, 0.5);
|
||||||
|
|
||||||
|
handlePainter.setPen(Qt::NoPen);
|
||||||
|
handlePainter.setBrush(QColor(0, 0, 0, 40));
|
||||||
|
handlePainter.drawRect(horizontal ? r.adjusted(-1, 2, 1, -2) : r.adjusted(2, -1, -2, 1));
|
||||||
|
|
||||||
|
handlePainter.setPen(QPen(this->outline(option->palette)));
|
||||||
|
if (option->state & State_HasFocus && option->state & State_KeyboardFocusChange)
|
||||||
|
handlePainter.setPen(QPen(this->highlightedOutline(option->palette)));
|
||||||
|
|
||||||
|
handlePainter.setBrush(gradient);
|
||||||
|
handlePainter.drawRoundedRect(r, 2, 2);
|
||||||
|
handlePainter.setBrush(Qt::NoBrush);
|
||||||
|
handlePainter.setPen(this->innerContrastLine());
|
||||||
|
handlePainter.drawRoundedRect(r.adjusted(1, 1, -1, -1), 2, 2);
|
||||||
|
|
||||||
|
QColor cornerAlpha = outline.darker(120);
|
||||||
|
cornerAlpha.setAlpha(80);
|
||||||
|
|
||||||
|
//handle shadow
|
||||||
|
handlePainter.setPen(shadowAlpha);
|
||||||
|
handlePainter.drawLine(QPoint(r.left() + 2, r.bottom() + 1), QPoint(r.right() - 2, r.bottom() + 1));
|
||||||
|
handlePainter.drawLine(QPoint(r.right() + 1, r.bottom() - 3), QPoint(r.right() + 1, r.top() + 4));
|
||||||
|
handlePainter.drawLine(QPoint(r.right() - 1, r.bottom()), QPoint(r.right() + 1, r.bottom() - 2));
|
||||||
|
|
||||||
|
handlePainter.end();
|
||||||
|
QPixmapCache::insert(handlePixmapName, cache);
|
||||||
|
}
|
||||||
|
|
||||||
|
painter->drawPixmap(handle.topLeft(), cache);
|
||||||
|
|
||||||
|
}
|
||||||
|
painter->setBrush(oldBrush);
|
||||||
|
painter->setPen(oldPen);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
baseStyle()->drawComplexControl(cc, option, painter, widget);
|
||||||
|
#endif // QT_CONFIG(slider)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
enum Direction {
|
||||||
|
TopDown,
|
||||||
|
FromLeft,
|
||||||
|
BottomUp,
|
||||||
|
FromRight
|
||||||
};
|
};
|
||||||
|
|
||||||
|
QColor highlightedOutline(const QPalette &pal) const {
|
||||||
|
QColor highlightedOutline = highlight(pal).darker(125);
|
||||||
|
if (highlightedOutline.value() > 160)
|
||||||
|
highlightedOutline.setHsl(highlightedOutline.hue(), highlightedOutline.saturation(), 160);
|
||||||
|
return highlightedOutline;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor outline(const QPalette &pal) const {
|
||||||
|
if (pal.window().style() == Qt::TexturePattern)
|
||||||
|
return QColor(0, 0, 0, 160);
|
||||||
|
return pal.window().color().darker(140);
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor buttonColor(const QPalette &pal) const {
|
||||||
|
QColor buttonColor = pal.button().color();
|
||||||
|
int val = qGray(buttonColor.rgb());
|
||||||
|
buttonColor = buttonColor.lighter(100 + qMax(1, (180 - val)/6));
|
||||||
|
buttonColor.setHsv(buttonColor.hue(), buttonColor.saturation() * 0.75, buttonColor.value());
|
||||||
|
return buttonColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor highlight(const QPalette &pal) const {
|
||||||
|
if (isMacSystemPalette(pal))
|
||||||
|
return QColor(60, 140, 230);
|
||||||
|
return pal.color(QPalette::Highlight);
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor innerContrastLine() const {
|
||||||
|
return QColor(255, 255, 255, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isMacSystemPalette(const QPalette &pal) const {
|
||||||
|
Q_UNUSED(pal);
|
||||||
|
#if defined(Q_OS_MACOS)
|
||||||
|
const QPalette *themePalette = QGuiApplicationPrivate::platformTheme()->palette();
|
||||||
|
if (themePalette && themePalette->color(QPalette::Normal, QPalette::Highlight) ==
|
||||||
|
pal.color(QPalette::Normal, QPalette::Highlight) &&
|
||||||
|
themePalette->color(QPalette::Normal, QPalette::HighlightedText) ==
|
||||||
|
pal.color(QPalette::Normal, QPalette::HighlightedText))
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QPixmap styleCachePixmap(const QSize &size, qreal pixelRatio) const {
|
||||||
|
//not api
|
||||||
|
QPixmap cachePixmap = QPixmap(size * pixelRatio);
|
||||||
|
cachePixmap.setDevicePixelRatio(pixelRatio);
|
||||||
|
cachePixmap.fill(Qt::transparent);
|
||||||
|
return cachePixmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
static QLinearGradient qt_fusion_gradient(const QRect &rect, const QBrush &baseColor, Direction direction = TopDown)
|
||||||
|
{
|
||||||
|
int x = rect.center().x();
|
||||||
|
int y = rect.center().y();
|
||||||
|
QLinearGradient gradient;
|
||||||
|
switch (direction) {
|
||||||
|
case FromLeft:
|
||||||
|
gradient = QLinearGradient(rect.left(), y, rect.right(), y);
|
||||||
|
break;
|
||||||
|
case FromRight:
|
||||||
|
gradient = QLinearGradient(rect.right(), y, rect.left(), y);
|
||||||
|
break;
|
||||||
|
case BottomUp:
|
||||||
|
gradient = QLinearGradient(x, rect.bottom(), x, rect.top());
|
||||||
|
break;
|
||||||
|
case TopDown:
|
||||||
|
default:
|
||||||
|
gradient = QLinearGradient(x, rect.top(), x, rect.bottom());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (baseColor.gradient())
|
||||||
|
gradient.setStops(baseColor.gradient()->stops());
|
||||||
|
else {
|
||||||
|
QColor gradientStartColor = baseColor.color().lighter(124);
|
||||||
|
QColor gradientStopColor = baseColor.color().lighter(102);
|
||||||
|
gradient.setColorAt(0, gradientStartColor);
|
||||||
|
gradient.setColorAt(1, gradientStopColor);
|
||||||
|
// Uncomment for adding shiny shading
|
||||||
|
// QColor midColor1 = mergedColors(gradientStartColor, gradientStopColor, 55);
|
||||||
|
// QColor midColor2 = mergedColors(gradientStartColor, gradientStopColor, 45);
|
||||||
|
// gradient.setColorAt(0.5, midColor1);
|
||||||
|
// gradient.setColorAt(0.501, midColor2);
|
||||||
|
}
|
||||||
|
return gradient;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* void MixerStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
|
* void MixerStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
|
||||||
* QPainter *p, const QWidget *widget) const {
|
* QPainter *p, const QWidget *widget) const {
|
||||||
|
* switch (cc) {
|
||||||
* #if QT_CONFIG(slider)
|
* #if QT_CONFIG(slider)
|
||||||
* case CC_Slider:
|
* case CC_Slider:
|
||||||
* if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
|
* if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
|
||||||
|
|
@ -46,7 +523,7 @@ public:
|
||||||
* int fudge = len / 2;
|
* int fudge = len / 2;
|
||||||
* int pos;
|
* int pos;
|
||||||
* // Since there is no subrect for tickmarks do a translation here.
|
* // Since there is no subrect for tickmarks do a translation here.
|
||||||
* QPainterStateSaver pss(p);
|
* p->save();
|
||||||
* p->translate(slider->rect.x(), slider->rect.y());
|
* p->translate(slider->rect.x(), slider->rect.y());
|
||||||
* p->setPen(slider->palette.windowText().color());
|
* p->setPen(slider->palette.windowText().color());
|
||||||
* int v = slider->minimum;
|
* int v = slider->minimum;
|
||||||
|
|
@ -56,7 +533,6 @@ public:
|
||||||
* const int v_ = qMin(v, slider->maximum);
|
* const int v_ = qMin(v, slider->maximum);
|
||||||
* pos = QStyle::sliderPositionFromValue(slider->minimum, slider->maximum,
|
* pos = QStyle::sliderPositionFromValue(slider->minimum, slider->maximum,
|
||||||
* v_, available) + fudge;
|
* v_, available) + fudge;
|
||||||
**
|
|
||||||
* if (slider->orientation == Qt::Horizontal) {
|
* if (slider->orientation == Qt::Horizontal) {
|
||||||
* if (ticks & QSlider::TicksAbove)
|
* if (ticks & QSlider::TicksAbove)
|
||||||
* p->drawLine(pos, 0, pos, tickOffset - 2);
|
* p->drawLine(pos, 0, pos, tickOffset - 2);
|
||||||
|
|
@ -78,7 +554,14 @@ public:
|
||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
|
* p->restore();
|
||||||
* break;
|
* break;
|
||||||
|
* default:
|
||||||
|
* baseStyle()->drawComplexControl(cc, opt, p, widget);
|
||||||
|
* break;
|
||||||
|
* }
|
||||||
* #endif // QT_CONFIG(slider)
|
* #endif // QT_CONFIG(slider)
|
||||||
|
* }
|
||||||
*/
|
*/
|
||||||
//}
|
|
||||||
|
//void MixerStyle::
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QStyleFactory>
|
#include <QStyleFactory>
|
||||||
|
#include <QPalette>
|
||||||
//#include "contclasses.h"
|
//#include "contclasses.h"
|
||||||
#define INIT_FILELOG
|
#define INIT_FILELOG
|
||||||
#include "qtclasses.h"
|
#include "qtclasses.h"
|
||||||
|
|
@ -54,7 +55,11 @@ int main (int argc, char* argv[]) {
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QApplication::setStyle(new MixerStyle(QStyleFactory::create("windowsvista")));
|
QApplication::setStyle(new MixerStyle(QStyleFactory::create("Fusion")));
|
||||||
|
QPalette palette = QGuiApplication::palette();
|
||||||
|
//todo: ez full apply os accent colorw
|
||||||
|
palette.setColor(QPalette::Active, QPalette::Highlight, QColor(255, 192, 203, 200));//QColor(30,30,30,100));
|
||||||
|
QGuiApplication::setPalette(palette);
|
||||||
//Check if running
|
//Check if running
|
||||||
//https://stackoverflow.com/questions/48060989/qt-show-application-if-currently-running
|
//https://stackoverflow.com/questions/48060989/qt-show-application-if-currently-running
|
||||||
initialize_file_log();
|
initialize_file_log();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue