fixed xekboxes
This commit is contained in:
parent
6744a64fce
commit
60e3178e9a
7 changed files with 74 additions and 54 deletions
|
|
@ -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);
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue