From 6213f9250d8aff0e9ade5c7518986f033466278c Mon Sep 17 00:00:00 2001 From: Hane Date: Wed, 15 Feb 2023 12:40:43 +0100 Subject: [PATCH] barritas de canal que funcionan weeeee --- src/back/backlasses.cpp | 22 ++++++++++++++++------ src/back/backlasses.h | 6 ++++-- src/cont/contclasses.cpp | 14 +++++++++----- src/cont/contclasses.h | 6 +++--- src/global.h | 5 +++++ src/qt/qtclasses.cpp | 16 ++++++++++++++-- src/qt/qtclasses.h | 1 + 7 files changed, 52 insertions(+), 18 deletions(-) diff --git a/src/back/backlasses.cpp b/src/back/backlasses.cpp index 933520f..da50727 100644 --- a/src/back/backlasses.cpp +++ b/src/back/backlasses.cpp @@ -15,28 +15,38 @@ LPWSTR Endpoint::getName(){ return friendlyName; } -float Endpoint::getVolume(){ +float Endpoint::getVolume(int channel){ float volume; - if(FAILED(endpointVolume->GetMasterVolumeLevelScalar(&volume))) { log_debugcpp("si");} + if (channel == ENDPOINT_MASTER_VOLUME) { + if(FAILED(endpointVolume->GetMasterVolumeLevelScalar(&volume))) { log_debugcpp("si");} + } else { + if(FAILED(endpointVolume->GetChannelVolumeLevelScalar(channel, &volume))) { log_debugcpp("si");} + } return volume; } + /* * float Endpoint::getLeftChannelVolume(){ * float volume; - * if(FAILED(endpointVolume->GetMasterVolumeLevelScalar(&volume))) { log_debugcpp("si");} + * if(FAILED(endpointVolume-> GetChannelVolumeLevelScalar(0, &volume)) { log_debugcpp("si"); } ); * return volume; * } * * float Endpoint::getRightChannelVolume(){ * float volume; - * if(FAILED(endpointVolume->GetMasterVolumeLevelScalar(&volume))) { log_debugcpp("si");} + * if(FAILED(endpointVolume-> GetChannelVolumeLevelScalar(1, &volume)) { log_debugcpp("si");} * return volume; * } */ -void Endpoint::setVolume(float volume) { - if(FAILED(endpointVolume->SetMasterVolumeLevelScalar(volume, NULL))) { log_debugcpp("si"); }; + +void Endpoint::setVolume(int channel, float volume) { + if (channel == ENDPOINT_MASTER_VOLUME) { + if(FAILED(endpointVolume->SetMasterVolumeLevelScalar(volume, NULL))) { log_debugcpp("si"); }; + } else { + if(FAILED(endpointVolume->SetChannelVolumeLevelScalar(channel, volume, NULL))) { log_debugcpp("si"); }; + } } Endpoint::~Endpoint(){ diff --git a/src/back/backlasses.h b/src/back/backlasses.h index 3a27869..6b36fb6 100644 --- a/src/back/backlasses.h +++ b/src/back/backlasses.h @@ -23,8 +23,10 @@ class Endpoint { public: Endpoint(IMMDevice* endpoint); - void setVolume(float volume); - float getVolume(); + void setVolume(int channel, float volume); + /* float getLeftChannelVolume(); */ + /* float getRightChannelVolume(); */ + float getVolume(int channel); LPWSTR getName(); ~Endpoint(); diff --git a/src/cont/contclasses.cpp b/src/cont/contclasses.cpp index 8b5b752..e8ba796 100644 --- a/src/cont/contclasses.cpp +++ b/src/cont/contclasses.cpp @@ -6,17 +6,21 @@ EndpointHandler::EndpointHandler(Endpoint *ept, QObject *parent) : QObject(paren this->ept = ept; eptName = QString::fromStdWString(ept->getName()); } - -void EndpointHandler::setValue(int value){ - ept->setVolume((float)value / 100); +/* + * -1 for master volume + */ +void EndpointHandler::setValue(int channel, int value){ + if (channel == ENDPOINT_MASTER_VOLUME) + ept->setVolume(channel, (float)value / 100); + else ept->setVolume(channel, (float)value / 100); } QString EndpointHandler::getName(){ return eptName; } -float EndpointHandler::getVolume(){ - return ept->getVolume(); +float EndpointHandler::getVolume(int channel){ + return ept->getVolume(channel); } Overseer* OverseerHandler::getOverseer(){ diff --git a/src/cont/contclasses.h b/src/cont/contclasses.h index 6a3d28e..c496e0c 100644 --- a/src/cont/contclasses.h +++ b/src/cont/contclasses.h @@ -9,15 +9,15 @@ class EndpointHandler : public QObject { public: EndpointHandler(Endpoint *ept, QObject *parent = nullptr); QString getName(); - float getVolume(); - + float getVolume(int channel); + private: Endpoint *ept; QString eptName; //QSlider *slidy; public slots: - void setValue(int value); + void setValue(int channel, int value); //signals: diff --git a/src/global.h b/src/global.h index fff36de..db86521 100644 --- a/src/global.h +++ b/src/global.h @@ -1,6 +1,11 @@ #pragma once +//TODO enum capullo +#define ENDPOINT_MASTER_VOLUME -1 +#define ENDPOINT_LEFT_CHANNEL_VOLUME 0 +#define ENDPOINT_RIGHT_CHANNEL_VOLUME 1 //INIT BACK + class OverseerHandler; extern OverseerHandler *osh; diff --git a/src/qt/qtclasses.cpp b/src/qt/qtclasses.cpp index ba25884..43361ae 100644 --- a/src/qt/qtclasses.cpp +++ b/src/qt/qtclasses.cpp @@ -2,6 +2,7 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget(parent){ + this->eph = eph; layout = new QGridLayout(); this->setLayout(layout); log_debugcpp("olaW"); @@ -27,8 +28,14 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget( rightChannelSlider->setSingleStep(1); rightChannelSlider->setRange(0,100); - float volume = eph->getVolume() * 100; + float volume = eph->getVolume(ENDPOINT_MASTER_VOLUME) * 100; mainSlider->setValue((int)volume); + volume = eph->getVolume(ENDPOINT_LEFT_CHANNEL_VOLUME) * 100; + leftChannelSlider->setValue((int)volume); + leftChannelLabel->setText(QString::number(volume)); + volume = eph->getVolume(ENDPOINT_RIGHT_CHANNEL_VOLUME) * 100; + rightChannelSlider->setValue((int)volume); + rightChannelLabel->setText(QString::number(volume)); log_debugcpp("ENDPOINT SET WITH VOLUME " << volume); layout->addWidget(mainLabel, 0, 0); @@ -40,7 +47,12 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget( layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), 3, 0); layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), 3, 1); - connect(mainSlider, &QSlider::valueChanged, eph, &EndpointHandler::setValue); + /* + * connect(mainSlider, &QSlider::valueChanged, eph, &EndpointHandler::setValue); + */ + connect(mainSlider, &QSlider::valueChanged, [this](int newValue){this->eph->setValue(ENDPOINT_MASTER_VOLUME, newValue); }); + connect(leftChannelSlider, &QSlider::valueChanged, [this](int newValue){ this->eph->setValue(ENDPOINT_LEFT_CHANNEL_VOLUME, newValue); this->leftChannelLabel->setText(QString::number(newValue)); }); + connect(rightChannelSlider, &QSlider::valueChanged, [this](int newValue){ this->eph->setValue(ENDPOINT_RIGHT_CHANNEL_VOLUME, newValue); this->rightChannelLabel->setText(QString::number(newValue)); }); log_debugcpp("ENDPOINT_WIDGETED"); } diff --git a/src/qt/qtclasses.h b/src/qt/qtclasses.h index 6294a4f..1f7beee 100644 --- a/src/qt/qtclasses.h +++ b/src/qt/qtclasses.h @@ -22,6 +22,7 @@ public: //void setEndpointHandlers(std::vector *ephs); private: + EndpointHandler* eph; QLabel *mainLabel = nullptr, *leftChannelLabel = nullptr, *rightChannelLabel = nullptr; QSlider *mainSlider = nullptr; QSlider *leftChannelSlider = nullptr;