endpoint add/remove foundational work
This commit is contained in:
parent
fc63875851
commit
a6a052f348
6 changed files with 103 additions and 96 deletions
|
|
@ -33,10 +33,19 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
|
|||
{Roles::ROLE_MULTIMEDIA, new ExtendedCheckBox()},
|
||||
{Roles::ROLE_COMMUNICATIONS, new ExtendedCheckBox()}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Mute, main slider and label setup
|
||||
*/
|
||||
muteButton = new QCheckBox();
|
||||
mainLabel = new QLabel(QString::fromStdWString(eph->getName()));
|
||||
mainSlider = new QSlider(Qt::Horizontal);
|
||||
|
||||
if (this->eph->getState() != EndpointState::ENDPOINT_ACTIVE) {
|
||||
layout->addWidget(mainLabel, 0, 0);
|
||||
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Minimum), 1, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
//muteButton->setStyleSheet("background-color: #A3C1DA; color: red");
|
||||
mainSlider->setFocusPolicy(Qt::StrongFocus);
|
||||
|
|
@ -44,7 +53,7 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
|
|||
mainSlider->setTickInterval(5);
|
||||
mainSlider->setSingleStep(1);
|
||||
mainSlider->setRange(0,100);
|
||||
|
||||
|
||||
muteButton->setCheckState((eph->getMute() == false ? Qt::Unchecked : Qt::Checked));
|
||||
muteButton->setText(eph->getMute() ? STRING_UNMUTE : STRING_MUTE);
|
||||
float volume = eph->getVolume(AudioChannel::CHANNEL_MAIN) * 100;
|
||||
|
|
@ -63,6 +72,9 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
|
|||
connect<void(QCheckBox::*)(int), void(EndpointWidget::*)(int)>(muteButton, &QCheckBox::stateChanged, this, (&EndpointWidget::updateMute));
|
||||
|
||||
|
||||
/*
|
||||
* Channel sliders setup
|
||||
*/
|
||||
for(uint32_t i = 0; i < eph->getChannelCount(); i++){
|
||||
QSlider* tmp = new QSlider(Qt::Horizontal);
|
||||
QLabel* tmpLb = new QLabel("");
|
||||
|
|
@ -84,6 +96,10 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
|
|||
this->channelLabels.at(i)->setText(QString::number(newValue));
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Role ExtendedCheckBoxes setup
|
||||
*/
|
||||
|
||||
uint8_t assignedRoles = eph->getRoles();
|
||||
defaultRolesCheckBoxes.at(Roles::ROLE_ALL)->setCheckState(assignedRoles == Roles::ROLE_ALL ? Qt::Checked : Qt::Unchecked);
|
||||
|
|
@ -105,29 +121,28 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
|
|||
|
||||
connect(defaultRolesCheckBoxes.at(Roles::ROLE_ALL), &QCheckBox::stateChanged,[this] {
|
||||
this->eph->setRoles(Roles::ROLE_ALL);
|
||||
//todo: bloquiar pto
|
||||
});
|
||||
connect(defaultRolesCheckBoxes.at(Roles::ROLE_CONSOLE), &QCheckBox::stateChanged,[this] {
|
||||
this->eph->setRoles(Roles::ROLE_CONSOLE);
|
||||
//todo: bloquiar pto
|
||||
});
|
||||
connect(defaultRolesCheckBoxes.at(Roles::ROLE_MULTIMEDIA), &QCheckBox::stateChanged,[this] {
|
||||
this->eph->setRoles(Roles::ROLE_MULTIMEDIA);
|
||||
//todo: bloquiar pto
|
||||
});
|
||||
|
||||
connect(defaultRolesCheckBoxes.at(Roles::ROLE_COMMUNICATIONS), &QCheckBox::stateChanged,[this] {
|
||||
this->eph->setRoles(Roles::ROLE_COMMUNICATIONS);
|
||||
//todo: bloquiar pto
|
||||
});
|
||||
|
||||
layout->addWidget(defaultRolesCheckBoxes.at(Roles::ROLE_ALL), 5, 0);
|
||||
layout->addWidget(defaultRolesCheckBoxes.at(Roles::ROLE_CONSOLE), 5, 1);
|
||||
layout->addWidget(defaultRolesCheckBoxes.at(Roles::ROLE_MULTIMEDIA), 5, 2);
|
||||
layout->addWidget(defaultRolesCheckBoxes.at(Roles::ROLE_COMMUNICATIONS), 5, 3);
|
||||
|
||||
/* ----------------------------------------------------------- */
|
||||
|
||||
|
||||
//Polling time
|
||||
/*
|
||||
* EndpointVolume Polling time
|
||||
*/
|
||||
timer = new QTimer();
|
||||
connect(timer, &QTimer::timeout, [this, eph](){
|
||||
//if (memcmp(osh->callbackInfo[idx]->caller, osh->getGuid(), sizeof(NGuid)) == 0) return; CHECK IF THIS PROGRAM GENERATED THE FUNSIES IS NO LONGER IN USE FOR NOW.
|
||||
|
|
@ -151,6 +166,7 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
|
|||
muteButton->blockSignals(false);
|
||||
});
|
||||
timer->start(10);
|
||||
|
||||
//todo parent?
|
||||
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Minimum), 1, 0);
|
||||
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Minimum), 4, 0);
|
||||
|
|
@ -159,20 +175,6 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
|
|||
log_debugcpp("ENDPOINT_WIDGETED");
|
||||
}
|
||||
|
||||
/*
|
||||
* void EndpointWidget::updateMute(bool muted){
|
||||
* //TIP: Blocksignals here to diagnose slider visuals locking when playing DJ with external volume bar. Functionality is restored when mute checkbox is clicked.
|
||||
* //this->blockSignals(true);
|
||||
* this->muteButton->blockSignals(true);
|
||||
*
|
||||
* //this->eph->setMute(osh->getGuid(), muted);
|
||||
* this->muteButton->setChecked(muted);
|
||||
* this->muteButton->setText(this->eph->getMute() ? STRING_UNMUTE : STRING_MUTE);
|
||||
* this->muteButton->blockSignals(false);
|
||||
* //this->blockSignals(false);
|
||||
* }
|
||||
*/
|
||||
|
||||
void EndpointWidget::updateMute(int checked){
|
||||
bool muted = (checked == 2 ? true : false);
|
||||
this->eph->setMute(osh->getGuid(), muted);
|
||||
|
|
@ -180,7 +182,6 @@ void EndpointWidget::updateMute(int checked){
|
|||
}
|
||||
|
||||
void EndpointWidget::updateMainVolume(int newValue){
|
||||
//QObject* obj = sender();
|
||||
this->eph->setVolume(osh->getGuid(), AudioChannel::CHANNEL_MAIN, newValue);
|
||||
}
|
||||
|
||||
|
|
@ -246,7 +247,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
|
|||
|
||||
reloadEndpointWidgets();
|
||||
|
||||
//Tray Icon
|
||||
/*
|
||||
* Tray Icon code
|
||||
*/
|
||||
trayIconMenu->addSeparator();
|
||||
trayIconMenu->addAction(trayIconMenuQuit);
|
||||
connect(trayIconMenuQuit, &QAction::triggered, qApp, &QCoreApplication::quit);
|
||||
|
|
@ -257,14 +260,16 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
|
|||
trayIcon->show();
|
||||
trayIcon->setToolTip(STRING_TITLE);
|
||||
trayIcon->setContextMenu(trayIconMenu);
|
||||
//todo: ayo...
|
||||
QString as = trayIcon->toolTip();
|
||||
connect(trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::trayIconActivated);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Set of function callback definitinos for EndpointSituationCallback
|
||||
*/
|
||||
osh->setChangeFrontDefaultsFunction([this](Roles role, std::wstring endpointId) {
|
||||
|
||||
for (auto epw : this->ews) {
|
||||
/*
|
||||
* Is this the new default endpoint?
|
||||
*/
|
||||
if (epw->getEndpointHandler()->getId() == endpointId) {
|
||||
//not necessary to keep endpointState flags up to date right now, but updating it will allow for later config files / profiles
|
||||
epw->defaultRolesCheckBoxes.at(role)->blockSignals(true);
|
||||
|
|
@ -272,39 +277,32 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
|
|||
epw->defaultRolesCheckBoxes.at(role)->blockSignals(false);
|
||||
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(role), changeDefaultCheckboxEnablement);
|
||||
//epw->defaultRolesCheckBoxes.at(role)->postEnableChange();
|
||||
|
||||
/*
|
||||
* And were you THE default?
|
||||
*/
|
||||
if (epw->getEndpointHandler()->getRoles() == Roles::ROLE_ALL) {
|
||||
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(Roles::ROLE_ALL), changeDefaultCheckboxEnablement);
|
||||
}
|
||||
|
||||
/*
|
||||
* switch (role) {
|
||||
* case Roles::ROLE_CONSOLE:
|
||||
* epw->getEndpointHandler()->assignRoles(role);
|
||||
* break;
|
||||
* case Roles::ROLE_MULTIMEDIA:
|
||||
* break;
|
||||
* case Roles::ROLE_COMMUNICATIONS:
|
||||
* break;
|
||||
*
|
||||
* }
|
||||
*/
|
||||
} else {
|
||||
if (epw->getEndpointHandler()->getRoles() & role) {
|
||||
/*
|
||||
* Are you the dethroned king?
|
||||
*/
|
||||
} else if (epw->getEndpointHandler()->getRoles() & role) {
|
||||
/*
|
||||
* And were you THE default up until now?
|
||||
*/
|
||||
if (epw->getEndpointHandler()->getRoles() == Roles::ROLE_ALL) {
|
||||
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(Roles::ROLE_ALL), changeDefaultCheckboxEnablement);
|
||||
}
|
||||
|
||||
epw->defaultRolesCheckBoxes.at(role)->blockSignals(true);
|
||||
//Same as before. ini-san will come...
|
||||
epw->getEndpointHandler()->removeRoles(role);
|
||||
//epw->defaultRolesCheckBoxes.at(role)->setDisabled(false);
|
||||
epw->defaultRolesCheckBoxes.at(role)->blockSignals(false);
|
||||
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(role), changeDefaultCheckboxEnablement);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void MainWindow::closeEvent(QCloseEvent *event) {
|
||||
|
|
@ -342,16 +340,5 @@ void MainWindow::reloadEndpointWidgets() {
|
|||
}
|
||||
|
||||
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), i, 0);
|
||||
|
||||
/*
|
||||
* osh->setFrontVolumeCallback([this](uint64_t device, uint32_t channel, float value) {
|
||||
* if (device < ews.size())
|
||||
* ews.at(device)->updateVolume(channel, value);
|
||||
* });
|
||||
* osh->setFrontMuteCallback([this](uint64_t device, bool muted) {
|
||||
* if (device < ews.size())
|
||||
* ews.at(device)->updateMute(muted);
|
||||
* });
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue