#include "controllersetup.h" #include "ui_controllersetup.h" #include "logcategories.h" controllerSetup::controllerSetup(QWidget* parent) : QDialog(parent), ui(new Ui::controllerSetup) { ui->setupUi(this); scene = new controllerScene(); connect(scene, SIGNAL(mousePressed(QPoint)), this, SLOT(mousePressed(QPoint))); ui->graphicsView->setScene(scene); textItem = scene->addText("No USB controller found"); textItem->setDefaultTextColor(Qt::gray); this->resize(this->sizeHint()); connect(&onEvent, SIGNAL(currentIndexChanged(int)), this, SLOT(onEventIndexChanged(int))); connect(&offEvent, SIGNAL(currentIndexChanged(int)), this, SLOT(offEventIndexChanged(int))); } controllerSetup::~controllerSetup() { delete textItem; delete scene; delete ui; if (bgImage != Q_NULLPTR) { delete bgImage; } } void controllerSetup::mousePressed(QPoint p) { // Receive mouse event from the scene qDebug() << "Looking for button Point x=" << p.x() << " y=" << p.y(); bool found = false; for (BUTTON& b : *buttons) { if (b.dev == currentDevice && b.pos.contains(p)) { found = true; currentButton = &b; qDebug() << "Button" << currentButton->num << "On Event" << currentButton->onCommand->text << "Off Event" << currentButton->offCommand->text; // Add off event first so it doesn't obscure on event. if (offEventProxy == Q_NULLPTR) { offEventProxy = scene->addWidget(&offEvent); } if (onEventProxy == Q_NULLPTR) { onEventProxy = scene->addWidget(&onEvent); } onEvent.blockSignals(true); onEvent.move(p); onEvent.setCurrentIndex(currentButton->onCommand->index); onEvent.show(); onEvent.blockSignals(false); p.setY(p.y() + 40); offEvent.blockSignals(true); offEvent.move(p); offEvent.setCurrentIndex(currentButton->offCommand->index); offEvent.show(); offEvent.blockSignals(false); } } if (!found) { onEvent.hide(); offEvent.hide(); } } void controllerSetup::onEventIndexChanged(int index) { qDebug() << "On Event for button" << currentButton->num << "Event" << index; if (currentButton != Q_NULLPTR && index < commands->size()) { currentButton->onCommand = &commands->at(index); currentButton->onText->setPlainText(currentButton->onCommand->text); } } void controllerSetup::offEventIndexChanged(int index) { qDebug() << "Off Event for button" << currentButton->num << "Event" << index; if (currentButton != Q_NULLPTR && index < commands->size()) { currentButton->offCommand = &commands->at(index); currentButton->offText->setPlainText(currentButton->offCommand->text); } } void controllerSetup::newDevice(unsigned char devType, QVector