fixed xekboxes

This commit is contained in:
Hane 2023-09-08 18:48:51 +02:00
commit 60e3178e9a
7 changed files with 74 additions and 54 deletions

View file

@ -4,9 +4,11 @@ EndpointWidgetEvent::EndpointWidgetEvent(QEvent::Type type, int idx) : QEvent(ty
this->idx = idx;
}
bool ExtendedCheckBox::event(QEvent* ev) {
if (ev->type() == QEvent::User) {
void ExtendedCheckBox::customEvent(QEvent* ev) {
QEvent::Type tipo = ev->type();
if (ev->type() == (QEvent::Type)CustomQEvent::EndpointDefaultChange) {
//todo: still prone to bugs; whack-a-mole to come
ev->setAccepted(true);
this->blockSignals(true);
if (this->isEnabled()) {
this->setCheckState(Qt::Checked);
@ -16,10 +18,10 @@ bool ExtendedCheckBox::event(QEvent* ev) {
this->setCheckState(Qt::Unchecked);
}
this->blockSignals(false);
return true;
return;
}
// Make sure the rest of events are handled
return QCheckBox::event(ev);
QCheckBox::customEvent(ev);
}
EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *parent) : QWidget(parent){
@ -29,7 +31,7 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
this->eph->setFrontVisibilityInfo(EndpointState::ENDPOINT_ACTIVE, idx);
layout = new QGridLayout(this);
//this->setLayout(layout);
log_debugcpp("epw main layout parent: "<< layout->parent());
log_debugcpp("epw main layout parent: " + std::to_string((intptr_t)(layout->parent())));
if (parent == nullptr) { log_debugcpp("owo?"); }
defaultRolesCheckBoxes = {
@ -64,7 +66,7 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
muteButton->setText(eph->getMute() ? STRING_UNMUTE : STRING_MUTE);
float volume = eph->getVolume(AudioChannel::CHANNEL_MAIN) * 100;
mainSlider->setValue((int)volume);
log_debugcpp("ENDPOINT SET WITH VOLUME " << volume);
log_debugcpp("ENDPOINT SET WITH VOLUME " + std::to_string(volume));
//tip: would need to be new widget with layout in it
//mainMuteLayout = new QGridLayout();
@ -183,11 +185,12 @@ EndpointWidget::EndpointWidget(uint64_t idx, EndpointHandler* eph, QWidget *pare
void MainWindow::customEvent(QEvent* ev) {
if (ev->type() == CustomQEvent::EndpointWidgetObsolete) {
ev->setAccepted(true);
this->removeEndpointWidget((EndpointWidgetEvent*)ev);
return;
}
// Make sure the rest of events are handled
return QMainWindow::customEvent(ev);
QMainWindow::customEvent(ev);
}
void MainWindow::removeEndpointWidget(EndpointWidgetEvent* ev){
@ -272,6 +275,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
* Registering needed custom events
*/
QEvent::registerEventType(CustomQEvent::EndpointWidgetObsolete);
QEvent::registerEventType(CustomQEvent::EndpointDefaultChange);
widget = new QWidget();
layout = new QGridLayout();
@ -279,9 +283,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
trayIconMenu = new QMenu();
trayIconMenuQuit = new QAction(STRING_QUIT);
changeDefaultCheckboxEnablement = new QEvent(QEvent::User);
changeDefaultCheckboxEnablement->setAccepted(true);
widget->setLayout(layout);
setCentralWidget(widget);
//layout->addWidget(pintas, 0, 0);
@ -317,13 +318,13 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
epw->defaultRolesCheckBoxes.at(role)->blockSignals(true);
epw->getEndpointHandler()->assignRoles(role);
epw->defaultRolesCheckBoxes.at(role)->blockSignals(false);
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(role), changeDefaultCheckboxEnablement);
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(role), new QEvent((QEvent::Type)CustomQEvent::EndpointDefaultChange));
//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);
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(Roles::ROLE_ALL), new QEvent((QEvent::Type)CustomQEvent::EndpointDefaultChange));
}
/*
* Are you the dethroned king?
@ -333,14 +334,14 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
* 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);
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(Roles::ROLE_ALL), new QEvent((QEvent::Type)CustomQEvent::EndpointDefaultChange));
}
epw->defaultRolesCheckBoxes.at(role)->blockSignals(true);
//Same as before. ini-san will come...
epw->getEndpointHandler()->removeRoles(role);
epw->defaultRolesCheckBoxes.at(role)->blockSignals(false);
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(role), changeDefaultCheckboxEnablement);
QCoreApplication::instance()->postEvent(epw->defaultRolesCheckBoxes.at(role), new QEvent((QEvent::Type)CustomQEvent::EndpointDefaultChange));
}
}
@ -348,7 +349,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
osh->setRemoveEndpointWidgetFunction([this](uint64_t index) {
EndpointWidgetEvent* removeObsoleteEndpointWidget = new EndpointWidgetEvent((QEvent::Type)CustomQEvent::EndpointWidgetObsolete, index);
removeObsoleteEndpointWidget->setAccepted(true);
QCoreApplication::instance()->postEvent(this, removeObsoleteEndpointWidget);
});