sliders value set to where clicked
This commit is contained in:
parent
b6b7e1c577
commit
1940ea68b1
6 changed files with 114 additions and 15 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
|
HEADERS += qtclasses.h backlasses.h backsessionclasses.h contclasses.h contsessionclasses.h global.h debug.h backfuncs.h ipolicyconfig.h msinclude.h qtvisuals.h
|
||||||
RESOURCES = assets.qrc
|
RESOURCES = assets.qrc
|
||||||
RC_ICONS += assets/logo.ico
|
RC_ICONS += assets/logo.ico
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
#include <backlasses.h>
|
#include "backlasses.h"
|
||||||
#include <backfuncs.h>
|
#include "backfuncs.h"
|
||||||
|
|
||||||
EndpointNewSessionCallback::EndpointNewSessionCallback(EndpointHandler* eph){
|
EndpointNewSessionCallback::EndpointNewSessionCallback(EndpointHandler* eph){
|
||||||
this->eph = eph;
|
this->eph = eph;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,19 @@ CustomWidgetEvent<T>::CustomWidgetEvent(QEvent::Type type, T payload) : QEvent(t
|
||||||
this->payload = payload;
|
this->payload = payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MeterSlider::MeterSlider(Qt::Orientation orientation, QWidget* parent) {
|
||||||
|
* //style = new MixerStyle();
|
||||||
|
* //this->setStyle(style);
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
MeterSlider::~MeterSlider() {
|
||||||
|
delete style;
|
||||||
|
}
|
||||||
|
|
||||||
void MeterSlider::setPeakValue(float peakValue) {
|
void MeterSlider::setPeakValue(float peakValue) {
|
||||||
this->peakValue = peakValue;
|
this->peakValue = peakValue;
|
||||||
}
|
}
|
||||||
|
|
@ -99,7 +112,7 @@ void MeterSlider::paintEvent(QPaintEvent *event) {
|
||||||
((QWidget*)parent())->layout()->getContentsMargins(&left, &top, &right, &bottom);
|
((QWidget*)parent())->layout()->getContentsMargins(&left, &top, &right, &bottom);
|
||||||
|
|
||||||
QStyle *style = QApplication::style();
|
QStyle *style = QApplication::style();
|
||||||
int lol = style->pixelMetric(QStyle::PM_SliderSpaceAvailable);
|
//int lol = style->pixelMetric(QStyle::PM_SliderSpaceAvailable);
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
//painter.setPen(Qt::blue);
|
//painter.setPen(Qt::blue);
|
||||||
painter.setOpacity(1.0);
|
painter.setOpacity(1.0);
|
||||||
|
|
@ -125,8 +138,7 @@ void MeterSlider::paintEvent(QPaintEvent *event) {
|
||||||
// - ((this->maximum() - this->value()) * stepWidth))
|
// - ((this->maximum() - this->value()) * stepWidth))
|
||||||
//double ratio = ;
|
//double ratio = ;
|
||||||
double handleShift = (double)((sliderSize.width() * ((double)(this->maximum() - this->value()) / 100)));
|
double handleShift = (double)((sliderSize.width() * ((double)(this->maximum() - this->value()) / 100)));
|
||||||
painter.fillRect((this->width() - ((this->maximum() - this->value()) * stepWidth)) - (sliderSize.width()) + handleShift,
|
painter.fillRect((this->width() - ((this->maximum() - this->value()) * stepWidth)) - (sliderSize.width()) + handleShift, top / 2, sliderSize.width(), sliderSize.height() - bottom, Qt::magenta);
|
||||||
top / 2, sliderSize.width(), sliderSize.height() - bottom, Qt::magenta);
|
|
||||||
//sliderComplex.subControls = QStyle::SC_SliderHandle;
|
//sliderComplex.subControls = QStyle::SC_SliderHandle;
|
||||||
//p.drawComplexControl(QStyle::CC_Slider, sliderComplex);
|
//p.drawComplexControl(QStyle::CC_Slider, sliderComplex);
|
||||||
}
|
}
|
||||||
|
|
@ -637,7 +649,7 @@ void EndpointWidget::addSessionWidget(CustomWidgetEvent<SessionHandler*>* ev){
|
||||||
//TODO: change mainwindow's widget name and subclass qwidget
|
//TODO: change mainwindow's widget name and subclass qwidget
|
||||||
const QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
|
const QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
|
||||||
for (QWidget *widget : topLevelWidgets) {
|
for (QWidget *widget : topLevelWidgets) {
|
||||||
if (dynamic_cast<MainWindow*>(widget)) {
|
if (qobject_cast<MainWindow*>(widget)) {
|
||||||
double widthRatio = ((MainWindow*)widget)->widthRatio;
|
double widthRatio = ((MainWindow*)widget)->widthRatio;
|
||||||
sw->calculateSize(std::abs(this->screen()->geometry().width()) * widthRatio,
|
sw->calculateSize(std::abs(this->screen()->geometry().width()) * widthRatio,
|
||||||
std::abs(this->screen()->geometry().height()));
|
std::abs(this->screen()->geometry().height()));
|
||||||
|
|
@ -917,8 +929,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
|
||||||
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||||
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
//scrollArea->verticalScrollBar()->setSingleStep(1);
|
//scrollArea->verticalScrollBar()->setSingleStep(1);
|
||||||
|
|
||||||
scrollArea->setStyleSheet("QScrollBar:vertical { width: 4px; }");
|
//custom style = no qss
|
||||||
|
//scrollArea->setStyleSheet("QScrollBar:vertical { width: 4px; }");
|
||||||
//scrollArea->setMinimumWidth(500);
|
//scrollArea->setMinimumWidth(500);
|
||||||
setCentralWidget(scrollArea);
|
setCentralWidget(scrollArea);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
//#ifndef MAINWINDOW_H
|
|
||||||
//#define MAINWINDOW_H
|
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
|
|
@ -47,6 +44,7 @@
|
||||||
|
|
||||||
#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,12 +74,17 @@ public:
|
||||||
class MeterSlider : public QSlider {
|
class MeterSlider : public QSlider {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
private:
|
||||||
|
~MeterSlider();
|
||||||
float peakValue;
|
float peakValue;
|
||||||
|
MixerStyle* style;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool event(QEvent* ev) override;
|
bool event(QEvent* ev) override;
|
||||||
void paintEvent(QPaintEvent *event) override;
|
void paintEvent(QPaintEvent *event) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
//MeterSlider(Qt::Orientation orientation, QWidget *parent = nullptr);
|
||||||
|
//MeterSlider(QWidget* parent = nullptr) : MeterSlider(Qt::Vertical, parent){};
|
||||||
void setPeakValue(float peakValue);
|
void setPeakValue(float peakValue);
|
||||||
using QSlider::QSlider;
|
using QSlider::QSlider;
|
||||||
};
|
};
|
||||||
|
|
@ -278,5 +281,3 @@ private:
|
||||||
//void valueChanged(int value);
|
//void valueChanged(int value);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//#endif
|
|
||||||
|
|
|
||||||
83
src/qt/qtvisuals.h
Normal file
83
src/qt/qtvisuals.h
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QProxyStyle>
|
||||||
|
|
||||||
|
class MixerStyle : public QProxyStyle {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
using QProxyStyle::QProxyStyle;
|
||||||
|
|
||||||
|
//void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
|
||||||
|
//QPainter *p, const QWidget *widget) const override;
|
||||||
|
int styleHint(QStyle::StyleHint hint, const QStyleOption* option = 0, const QWidget* widget = 0,
|
||||||
|
QStyleHintReturn* returnData = 0) const {
|
||||||
|
if (hint == QStyle::SH_Slider_AbsoluteSetButtons)
|
||||||
|
return (Qt::LeftButton | Qt::MiddleButton | Qt::RightButton);
|
||||||
|
return QProxyStyle::styleHint(hint, option, widget, returnData);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* void MixerStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
|
||||||
|
* QPainter *p, const QWidget *widget) const {
|
||||||
|
* #if QT_CONFIG(slider)
|
||||||
|
* case CC_Slider:
|
||||||
|
* if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
|
||||||
|
* if (slider->subControls == SC_SliderTickmarks) {
|
||||||
|
* int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider, widget);
|
||||||
|
* int ticks = slider->tickPosition;
|
||||||
|
* int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider, widget);
|
||||||
|
* int len = proxy()->pixelMetric(PM_SliderLength, slider, 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)
|
||||||
|
* interval = 1;
|
||||||
|
* int fudge = len / 2;
|
||||||
|
* int pos;
|
||||||
|
* // Since there is no subrect for tickmarks do a translation here.
|
||||||
|
* QPainterStateSaver pss(p);
|
||||||
|
* p->translate(slider->rect.x(), slider->rect.y());
|
||||||
|
* p->setPen(slider->palette.windowText().color());
|
||||||
|
* int v = slider->minimum;
|
||||||
|
* while (v <= slider->maximum + 1) {
|
||||||
|
* if (v == slider->maximum + 1 && interval == 1)
|
||||||
|
* break;
|
||||||
|
* const int v_ = qMin(v, slider->maximum);
|
||||||
|
* pos = QStyle::sliderPositionFromValue(slider->minimum, slider->maximum,
|
||||||
|
* v_, available) + fudge;
|
||||||
|
**
|
||||||
|
* if (slider->orientation == Qt::Horizontal) {
|
||||||
|
* if (ticks & QSlider::TicksAbove)
|
||||||
|
* p->drawLine(pos, 0, pos, tickOffset - 2);
|
||||||
|
* if (ticks & QSlider::TicksBelow)
|
||||||
|
* p->drawLine(pos, tickOffset + thickness + 1, pos,
|
||||||
|
* slider->rect.height()-1);
|
||||||
|
* } else {
|
||||||
|
* if (ticks & QSlider::TicksAbove)
|
||||||
|
* p->drawLine(0, pos, tickOffset - 2, pos);
|
||||||
|
* if (ticks & QSlider::TicksBelow)
|
||||||
|
* p->drawLine(tickOffset + thickness + 1, pos,
|
||||||
|
* slider->rect.width()-1, pos);
|
||||||
|
* }
|
||||||
|
* // in the case where maximum is max int
|
||||||
|
* int nextInterval = v + interval;
|
||||||
|
* if (nextInterval < v)
|
||||||
|
* break;
|
||||||
|
* v = nextInterval;
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* break;
|
||||||
|
*#endif // QT_CONFIG(slider)
|
||||||
|
*/
|
||||||
|
//}
|
||||||
|
|
@ -46,13 +46,15 @@ void closeDebugFileLog() {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int main (int argc, char* argv[]) {
|
int main (int argc, char* argv[]) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* QStringList styles = QStyleFactory::keys();
|
* QStringList styles = QStyleFactory::keys();
|
||||||
* for(QString a : styles) {
|
* for(QString a : styles) {
|
||||||
* log_debugcpp(a.toStdString());
|
* log_debugcpp(a.toStdString());
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
//QApplication::setStyle("Fusion");
|
|
||||||
|
QApplication::setStyle(new MixerStyle(QStyleFactory::create("windowsvista")));
|
||||||
//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