GameControllerMappingDialog::GameControllerMappingDialog(InputDevice *device, QWidget *parent) : QDialog(parent), ui(new Ui::GameControllerMappingDialog) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); this->device = device; device->getActiveSetJoystick()->setIgnoreEventState(true); device->getActiveSetJoystick()->release(); GameController *controller = qobject_cast<GameController*>(device); if (controller) { populateGameControllerBindings(controller); ui->mappingStringPlainTextEdit->document()->setPlainText(generateSDLMappingString()); } QString tempWindowTitle = QString(tr("Game Controller Mapping (%1)")).arg(device->getSDLName()); setWindowTitle(tempWindowTitle); enableDeviceConnections(); ui->buttonMappingTableWidget->setCurrentCell(0, 0); connect(device, SIGNAL(destroyed()), this, SLOT(obliterate())); connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(saveChanges())); connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(discardMapping(QAbstractButton*))); connect(this, SIGNAL(finished(int)), this, SLOT(enableButtonEvents(int))); }
void GameControllerMappingDialog::buttonAssign(int buttonindex) { if (ui->buttonMappingTableWidget->currentRow() > -1 && buttonGrabs == 0) { QTableWidgetItem* item = ui->buttonMappingTableWidget->currentItem(); int column = ui->buttonMappingTableWidget->currentColumn(); int row = ui->buttonMappingTableWidget->currentRow(); if (row < 17) { if (!item) { item = new QTableWidgetItem(QString("Button %1").arg(buttonindex+1)); ui->buttonMappingTableWidget->setItem(row, column, item); } QList<QVariant> templist; templist.append(QVariant(0)); templist.append(QVariant(buttonindex)); QAbstractItemModel *model = ui->buttonMappingTableWidget->model(); QModelIndexList matchlist = model->match(model->index(0,0), Qt::UserRole, templist, 1, Qt::MatchExactly); foreach (const QModelIndex &index, matchlist) { QTableWidgetItem *existingItem = ui->buttonMappingTableWidget->item(index.row(), index.column()); if (existingItem) { existingItem->setText(""); existingItem->setData(Qt::UserRole, QVariant()); } } QList<QVariant> tempvalue; tempvalue.append(QVariant(0)); tempvalue.append(QVariant(buttonindex)); item->setData(Qt::UserRole, tempvalue); item->setText(QString("Button %1").arg(buttonindex+1)); if (row < ui->buttonMappingTableWidget->rowCount()-1) { ui->buttonMappingTableWidget->setCurrentCell(row+1, column); } ui->mappingStringPlainTextEdit->document()->setPlainText(generateSDLMappingString()); }