barritas de canal que funcionan weeeee

This commit is contained in:
Hane 2023-02-15 12:40:43 +01:00
commit 6213f9250d
7 changed files with 52 additions and 18 deletions

View file

@ -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(){

View file

@ -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();

View file

@ -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(){

View file

@ -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:

View file

@ -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;

View file

@ -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");
}

View file

@ -22,6 +22,7 @@ public:
//void setEndpointHandlers(std::vector<EndpointHandler*> *ephs);
private:
EndpointHandler* eph;
QLabel *mainLabel = nullptr, *leftChannelLabel = nullptr, *rightChannelLabel = nullptr;
QSlider *mainSlider = nullptr;
QSlider *leftChannelSlider = nullptr;