first callback implemented; overload not working
This commit is contained in:
parent
f21619aa1f
commit
ad53af655b
6 changed files with 92 additions and 29 deletions
|
|
@ -43,10 +43,11 @@ HRESULT EndpointCallback::OnNotify(PAUDIO_VOLUME_NOTIFICATION_DATA pNotify) {
|
||||||
NGuid* guid = osh->getGuid();
|
NGuid* guid = osh->getGuid();
|
||||||
|
|
||||||
if (memcmp(guid, &eventData, sizeof(*guid)) == 0) {
|
if (memcmp(guid, &eventData, sizeof(*guid)) == 0) {
|
||||||
log_debugcpp("perlitas");
|
log_debugcpp("Onnanokotify says You Shall Not Update Thy Interface.");
|
||||||
} else {
|
} else {
|
||||||
log_debugcpp("Onnanokotify says Stored: " << guid->data1);
|
log_debugcpp("Onnanokotify says Stored: " << guid->data1);
|
||||||
log_debugcpp("Onnanokotify says Grace of God: " << eventData.guidEventContext.Data1);
|
log_debugcpp("Onnanokotify says Grace of God: " << eventData.guidEventContext.Data1);
|
||||||
|
osh->updateMuteCallback(this->ep->getIndex(), eventData.bMuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
@ -123,14 +124,14 @@ void Endpoint::setVolume(int channel, float volume) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Endpoint::setMute(NGuid* guid) {
|
void Endpoint::setMute(NGuid* guid, bool muted) {
|
||||||
BOOL mut;
|
//BOOL mut;
|
||||||
//log_debugcpp("bool mute arrives as " << mut);
|
//log_debugcpp("bool mute arrives as " << mut);
|
||||||
if(FAILED(endpointVolume->GetMute(&mut))) { log_debugcpp("si"); }
|
//if(FAILED(endpointVolume->GetMute(&mut))) { log_debugcpp("si"); }
|
||||||
log_debugcpp("translate to BOOL as " << mut);
|
//log_debugcpp("translate to BOOL as " << mut);
|
||||||
//TODO: use new funcs
|
//TODO: use new funcs
|
||||||
GUID tempMsGuid = NGuidToGUID(guid);
|
GUID tempMsGuid = NGuidToGUID(guid);
|
||||||
if(FAILED(endpointVolume->SetMute((mut == false ? 1 : 0), &tempMsGuid))) { log_debugcpp("si"); };
|
if(FAILED(endpointVolume->SetMute(muted, &tempMsGuid))) { log_debugcpp("si"); };
|
||||||
}
|
}
|
||||||
|
|
||||||
void Endpoint::setCallback(EndpointCallback *epc){
|
void Endpoint::setCallback(EndpointCallback *epc){
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ class Endpoint {
|
||||||
/* float getLeftChannelVolume(); */
|
/* float getLeftChannelVolume(); */
|
||||||
/* float getRightChannelVolume(); */
|
/* float getRightChannelVolume(); */
|
||||||
float getVolume(int channel);
|
float getVolume(int channel);
|
||||||
void setMute(NGuid* guid);
|
void setMute(NGuid* guid, bool muted);
|
||||||
bool getMute();
|
bool getMute();
|
||||||
std::wstring getName();
|
std::wstring getName();
|
||||||
void setCallback(EndpointCallback *epc);
|
void setCallback(EndpointCallback *epc);
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ void EndpointHandler::setValue(int channel, int value){
|
||||||
else ep->setVolume(channel, (float)value / 100);
|
else ep->setVolume(channel, (float)value / 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EndpointHandler::setMute(NGuid* guid){
|
void EndpointHandler::setMute(NGuid* guid, bool muted){
|
||||||
//Qt momento, de ahi el param?
|
//Qt momento, de ahi el param?
|
||||||
log_debugcpp("kinda handling the muting tbh");
|
log_debugcpp("kinda handling the muting tbh");
|
||||||
ep->setMute(guid);
|
ep->setMute(guid, muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring EndpointHandler::getName(){
|
std::wstring EndpointHandler::getName(){
|
||||||
|
|
@ -105,9 +105,12 @@ void OverseerHandler::setEndpointHandlers(std::vector<EndpointHandler*> ephs){
|
||||||
this->endpointHandlers = ephs;
|
this->endpointHandlers = ephs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* void OverseerHandler::setEndpointWidgets(std::vector<EndpointWidget*> ews){
|
|
||||||
* this->endpointWidgets = ews;
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
void OverseerHandler::setEndpointWidgets(std::vector<EndpointWidget*> ews){
|
||||||
|
this->endpointWidgets = ews;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OverseerHandler::updateMuteCallback(uint64_t idx, bool muted){
|
||||||
|
epwMuteFunc f = &EndpointWidget::updateMuteC;
|
||||||
|
std::invoke(f, endpointWidgets.at(idx), muted);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* class QMainWindow{}; */
|
/* class QMainWindow{}; */
|
||||||
/* #endif */
|
/* #endif */
|
||||||
|
|
||||||
/* class EndpointWidget; */
|
class EndpointWidget;
|
||||||
|
|
||||||
class Endpoint;
|
class Endpoint;
|
||||||
class EndpointCallback;
|
class EndpointCallback;
|
||||||
|
|
@ -37,7 +37,7 @@ public:
|
||||||
bool getMute();
|
bool getMute();
|
||||||
|
|
||||||
void setValue(int channel, int value);
|
void setValue(int channel, int value);
|
||||||
void setMute(NGuid* guid);
|
void setMute(NGuid* guid, bool muted);
|
||||||
~EndpointHandler();
|
~EndpointHandler();
|
||||||
private:
|
private:
|
||||||
uint64_t idx;
|
uint64_t idx;
|
||||||
|
|
@ -54,12 +54,13 @@ class OverseerHandler {
|
||||||
public:
|
public:
|
||||||
//OverseerHandler();
|
//OverseerHandler();
|
||||||
void setEndpointHandlers(std::vector<EndpointHandler*> ephs);
|
void setEndpointHandlers(std::vector<EndpointHandler*> ephs);
|
||||||
/* void setEndpointWidgets(std::vector<EndpointWidget*> ews); */
|
void setEndpointWidgets(std::vector<EndpointWidget*> ews);
|
||||||
std::vector<EndpointHandler*> getEndpointHandlers();
|
std::vector<EndpointHandler*> getEndpointHandlers();
|
||||||
std::vector<Endpoint*> getPlaybackEndpoints();
|
std::vector<Endpoint*> getPlaybackEndpoints();
|
||||||
uint64_t getPlaybackEndpointsCount();
|
uint64_t getPlaybackEndpointsCount();
|
||||||
void reloadEndpointHandlers();
|
void reloadEndpointHandlers();
|
||||||
NGuid* getGuid();
|
NGuid* getGuid();
|
||||||
|
void updateMuteCallback(uint64_t idx, bool muted);
|
||||||
|
|
||||||
//void parseExternalEndpointCallback(EndpointCallback *epc, PAUDIO_VOLUME_NOTIFICATION_DATA pNotify);
|
//void parseExternalEndpointCallback(EndpointCallback *epc, PAUDIO_VOLUME_NOTIFICATION_DATA pNotify);
|
||||||
//static Overseer* getOverseer();
|
//static Overseer* getOverseer();
|
||||||
|
|
@ -67,5 +68,5 @@ public:
|
||||||
private:
|
private:
|
||||||
static Overseer os;
|
static Overseer os;
|
||||||
std::vector<EndpointHandler*> endpointHandlers;
|
std::vector<EndpointHandler*> endpointHandlers;
|
||||||
/* std::vector<EndpointWidget*> endpointWidgets; */
|
std::vector<EndpointWidget*> endpointWidgets;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,21 @@
|
||||||
#include "qtclasses.h"
|
#include "qtclasses.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ToggleButton::ToggleButton(QWidget *parent) : QAbstractButton(parent) {
|
||||||
|
* this->setCheckable(true);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* ToggleButton::~ToggleButton(){
|
||||||
|
*
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* void ToggleButton::checkStateSet(){ }
|
||||||
|
*
|
||||||
|
* bool hitButton(const QPoint &pos) {
|
||||||
|
*
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget(parent){
|
EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget(parent){
|
||||||
this->eph = eph;
|
this->eph = eph;
|
||||||
layout = new QGridLayout();
|
layout = new QGridLayout();
|
||||||
|
|
@ -7,7 +23,7 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget(
|
||||||
log_debugcpp("olaW");
|
log_debugcpp("olaW");
|
||||||
if (parent == nullptr) { log_debugcpp("owo?"); }
|
if (parent == nullptr) { log_debugcpp("owo?"); }
|
||||||
|
|
||||||
muteButton = new QPushButton();
|
muteButton = new QCheckBox();
|
||||||
mainLabel = new QLabel(QString::fromStdWString(eph->getName()));
|
mainLabel = new QLabel(QString::fromStdWString(eph->getName()));
|
||||||
leftChannelLabel = new QLabel("88");
|
leftChannelLabel = new QLabel("88");
|
||||||
rightChannelLabel = new QLabel("77");
|
rightChannelLabel = new QLabel("77");
|
||||||
|
|
@ -15,7 +31,7 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget(
|
||||||
leftChannelSlider = new QSlider(Qt::Horizontal);
|
leftChannelSlider = new QSlider(Qt::Horizontal);
|
||||||
rightChannelSlider = new QSlider(Qt::Horizontal);
|
rightChannelSlider = new QSlider(Qt::Horizontal);
|
||||||
|
|
||||||
muteButton->setStyleSheet("background-color: #A3C1DA; color: red");
|
//muteButton->setStyleSheet("background-color: #A3C1DA; color: red");
|
||||||
mainSlider->setFocusPolicy(Qt::StrongFocus);
|
mainSlider->setFocusPolicy(Qt::StrongFocus);
|
||||||
mainSlider->setTickPosition(QSlider::TicksBothSides);
|
mainSlider->setTickPosition(QSlider::TicksBothSides);
|
||||||
mainSlider->setTickInterval(5);
|
mainSlider->setTickInterval(5);
|
||||||
|
|
@ -28,6 +44,7 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget(
|
||||||
rightChannelSlider->setSingleStep(1);
|
rightChannelSlider->setSingleStep(1);
|
||||||
rightChannelSlider->setRange(0,100);
|
rightChannelSlider->setRange(0,100);
|
||||||
|
|
||||||
|
muteButton->setCheckState((eph->getMute() == false ? Qt::Unchecked : Qt::Checked));
|
||||||
muteButton->setText(eph->getMute() ? STRING_UNMUTE : STRING_MUTE);
|
muteButton->setText(eph->getMute() ? STRING_UNMUTE : STRING_MUTE);
|
||||||
float volume = eph->getVolume(ENDPOINT_MASTER_VOLUME) * 100;
|
float volume = eph->getVolume(ENDPOINT_MASTER_VOLUME) * 100;
|
||||||
mainSlider->setValue((int)volume);
|
mainSlider->setValue((int)volume);
|
||||||
|
|
@ -51,16 +68,31 @@ 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, 0);
|
||||||
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), 3, 1);
|
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), 3, 1);
|
||||||
|
|
||||||
/*
|
|
||||||
* connect(mainSlider, &QSlider::valueChanged, eph, &EndpointHandler::setValue);
|
|
||||||
*/
|
|
||||||
connect(mainSlider, &QSlider::valueChanged, [this](int newValue){this->eph->setValue(ENDPOINT_MASTER_VOLUME, newValue); });
|
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(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)); });
|
connect(rightChannelSlider, &QSlider::valueChanged, [this](int newValue){ this->eph->setValue(ENDPOINT_RIGHT_CHANNEL_VOLUME, newValue); this->rightChannelLabel->setText(QString::number(newValue)); });
|
||||||
connect(muteButton, &QPushButton::clicked, [this](bool clicked){ log_debugcpp("cliqui" << clicked << "cloqui"); this->eph->setMute(osh->getGuid()); this->muteButton->setText(this->eph->getMute() ? STRING_UNMUTE : STRING_MUTE); });
|
connect(muteButton, &QCheckBox::stateChanged, this, &EndpointWidget::updateMute);
|
||||||
|
/*
|
||||||
|
* connect(muteButton, &QPushButton::clicked, [this](bool clicked){ log_debugcpp("cliqui" << clicked << "cloqui"); this->eph->setMute(osh->getGuid()); this->muteButton->setText(this->eph->getMute() ? STRING_UNMUTE : STRING_MUTE); });
|
||||||
|
*/
|
||||||
log_debugcpp("ENDPOINT_WIDGETED");
|
log_debugcpp("ENDPOINT_WIDGETED");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EndpointWidget::updateMuteC(bool muted){
|
||||||
|
log_debugcpp("cliqui callboqui cloqui");
|
||||||
|
this->eph->setMute(osh->getGuid(), muted);
|
||||||
|
this->muteButton->setChecked(eph->getMute() ? true : false);
|
||||||
|
this->muteButton->setText(this->eph->getMute() ? STRING_UNMUTE : STRING_MUTE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EndpointWidget::updateMute(int checked){
|
||||||
|
log_debugcpp("cliqui slOtty cloqui");
|
||||||
|
bool muted = (checked == 2 ? true : false);
|
||||||
|
log_debugcpp("int: " << checked << " bool: " << muted);
|
||||||
|
this->eph->setMute(osh->getGuid(), muted);
|
||||||
|
//this->muteButton->setCheckState();
|
||||||
|
this->muteButton->setText(this->eph->getMute() ? STRING_UNMUTE : STRING_MUTE);
|
||||||
|
}
|
||||||
|
|
||||||
void EndpointWidget::setIndex(uint64_t idx){
|
void EndpointWidget::setIndex(uint64_t idx){
|
||||||
this->idx = idx;
|
this->idx = idx;
|
||||||
|
|
@ -93,7 +125,7 @@ void MainWindow::reloadEndpointWidgets() {
|
||||||
ews.push_back(epw);
|
ews.push_back(epw);
|
||||||
layout->addWidget(epw, i, 0);
|
layout->addWidget(epw, i, 0);
|
||||||
}
|
}
|
||||||
//osh->setEndpointWidgets(ews);
|
osh->setEndpointWidgets(ews);
|
||||||
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), i, 0);
|
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), i, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include <QSlider>
|
#include <QSlider>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QCheckBox>
|
||||||
/*
|
/*
|
||||||
* #else
|
* #else
|
||||||
* class QSlider;
|
* class QSlider;
|
||||||
|
|
@ -25,6 +25,30 @@
|
||||||
#include "contclasses.h"
|
#include "contclasses.h"
|
||||||
//class EndpointHandler;
|
//class EndpointHandler;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* class ToggleButton : public QAbstractButton {
|
||||||
|
* Q_OBJECT
|
||||||
|
*
|
||||||
|
* public:
|
||||||
|
* ToggleButton(QWidget *parent = nullptr);
|
||||||
|
* void checkStateSet();
|
||||||
|
* bool hitButton(const QPoint &pos) const;
|
||||||
|
* void nextCheckState();
|
||||||
|
* void changeEvent(QEvent *e) override;
|
||||||
|
* bool event(QEvent *e) override;
|
||||||
|
* void focusInEvent(QFocusEvent *e) override;
|
||||||
|
* void focusOutEvent(QFocusEvent *e) override;
|
||||||
|
* void keyPressEvent(QKeyEvent *e) override;
|
||||||
|
* void keyReleaseEvent(QKeyEvent *e) override;
|
||||||
|
* void mouseMoveEvent(QMouseEvent *e) override;
|
||||||
|
* void mousePressEvent(QMouseEvent *e) override;
|
||||||
|
* void mouseReleaseEvent(QMouseEvent *e) override;
|
||||||
|
* void paintEvent(QPaintEvent *e) override = 0;
|
||||||
|
* void timerEvent(QTimerEvent *e) override;
|
||||||
|
* ToggleButton(QWidget *parent = nullptr);
|
||||||
|
* };
|
||||||
|
*/
|
||||||
|
|
||||||
class EndpointWidget : public QWidget {
|
class EndpointWidget : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
@ -37,29 +61,31 @@ public:
|
||||||
|
|
||||||
void setVolume(int channel, float volume);
|
void setVolume(int channel, float volume);
|
||||||
|
|
||||||
QPushButton *muteButton = nullptr;
|
QCheckBox *muteButton = nullptr;
|
||||||
QLabel *mainLabel = nullptr, *leftChannelLabel = nullptr, *rightChannelLabel = nullptr;
|
QLabel *mainLabel = nullptr, *leftChannelLabel = nullptr, *rightChannelLabel = nullptr;
|
||||||
QSlider *mainSlider = nullptr;
|
QSlider *mainSlider = nullptr;
|
||||||
QSlider *leftChannelSlider = nullptr;
|
QSlider *leftChannelSlider = nullptr;
|
||||||
QSlider *rightChannelSlider = nullptr;
|
QSlider *rightChannelSlider = nullptr;
|
||||||
QGridLayout *layout = nullptr;
|
QGridLayout *layout = nullptr;
|
||||||
QGridLayout *mainMuteLayout = nullptr;
|
QGridLayout *mainMuteLayout = nullptr;
|
||||||
|
void updateMuteC(bool muted);
|
||||||
//void populateEndpointWidget(EndpointHandler *eph);
|
//void populateEndpointWidget(EndpointHandler *eph);
|
||||||
//void setEndpointHandlers(std::vector<EndpointHandler*> *ephs);
|
//void setEndpointHandlers(std::vector<EndpointHandler*> *ephs);
|
||||||
|
public slots:
|
||||||
|
void updateMute(int checked);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint64_t idx;
|
uint64_t idx;
|
||||||
//std::vector<EndpointHandler*> *ephs;
|
//std::vector<EndpointHandler*> *ephs;
|
||||||
//std::vector<QSlider> *sliders;
|
//std::vector<QSlider> *sliders;
|
||||||
|
|
||||||
//public slots:
|
|
||||||
// void setEndpointHandlers(std::vector<EndpointHandler*> *ephs);
|
|
||||||
|
|
||||||
//signals:
|
//signals:
|
||||||
//void valueChanged(int value);
|
//void valueChanged(int value);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef void (EndpointWidget::*epwMuteFunc)(bool muted);
|
||||||
|
|
||||||
class MainWindow : public QMainWindow {
|
class MainWindow : public QMainWindow {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue