void ShortcutController::updateButton(const QModelIndex& index, int button) { if (!index.isValid()) { return; } const QModelIndex& parent = index.parent(); if (!parent.isValid()) { return; } ShortcutItem* item = itemAt(index); int oldButton = item->button(); if (oldButton >= 0) { m_buttons.take(oldButton); } updateAxis(index, -1, GamepadAxisEvent::NEUTRAL); item->setButton(button); if (button >= 0) { m_buttons[button] = item; } if (m_config) { m_config->setQtOption(item->name(), button, BUTTON_SECTION); if (!m_profileName.isNull()) { m_config->setQtOption(item->name(), button, BUTTON_PROFILE_SECTION + m_profileName); } } emit dataChanged(createIndex(index.row(), 0, index.internalPointer()), createIndex(index.row(), 2, index.internalPointer())); }
void ShortcutController::updateAxis(const QModelIndex& index, int axis, GamepadAxisEvent::Direction direction) { if (!index.isValid()) { return; } const QModelIndex& parent = index.parent(); if (!parent.isValid()) { return; } ShortcutItem* item = itemAt(index); int oldAxis = item->axis(); GamepadAxisEvent::Direction oldDirection = item->direction(); if (oldAxis >= 0) { m_axes.take(qMakePair(oldAxis, oldDirection)); } if (axis >= 0 && direction != GamepadAxisEvent::NEUTRAL) { updateButton(index, -1); m_axes[qMakePair(axis, direction)] = item; } item->setAxis(axis, direction); if (m_config) { char d = '\0'; if (direction == GamepadAxisEvent::POSITIVE) { d = '+'; } if (direction == GamepadAxisEvent::NEGATIVE) { d = '-'; } m_config->setQtOption(item->name(), QString("%1%2").arg(d).arg(axis), AXIS_SECTION); if (!m_profileName.isNull()) { m_config->setQtOption(item->name(), QString("%1%2").arg(d).arg(axis), AXIS_PROFILE_SECTION + m_profileName); } } emit dataChanged(createIndex(index.row(), 0, index.internalPointer()), createIndex(index.row(), 2, index.internalPointer())); }
void ShortcutController::updateKey(const QModelIndex& index, int keySequence) { if (!index.isValid()) { return; } const QModelIndex& parent = index.parent(); if (!parent.isValid()) { return; } ShortcutItem* item = itemAt(index); updateKey(item, keySequence); if (m_config) { m_config->setQtOption(item->name(), QKeySequence(keySequence).toString(), KEY_SECTION); } emit dataChanged(createIndex(index.row(), 0, index.internalPointer()), createIndex(index.row(), 2, index.internalPointer())); }
void ShortcutController::updateKey(const QModelIndex& index, const QKeySequence& keySequence) { if (!index.isValid()) { return; } const QModelIndex& parent = index.parent(); if (!parent.isValid()) { return; } ShortcutItem* item = itemAt(index); if (item->functions().first) { QKeySequence oldShortcut = item->shortcut(); if (!oldShortcut.isEmpty()) { m_heldKeys.take(oldShortcut); } if (!keySequence.isEmpty()) { m_heldKeys[keySequence] = item; } } item->setShortcut(keySequence); if (m_config) { m_config->setQtOption(item->name(), keySequence.toString(), KEY_SECTION); } emit dataChanged(createIndex(index.row(), 0, index.internalPointer()), createIndex(index.row(), 2, index.internalPointer())); }