mirror of https://github.com/mgba-emu/mgba.git
Qt: Add clear button for shortcut editor
This commit is contained in:
parent
3854c7e401
commit
c90d105e34
|
@ -193,8 +193,10 @@ void ShortcutController::updateKey(const QModelIndex& index, const QKeySequence&
|
|||
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);
|
||||
|
@ -216,13 +218,23 @@ void ShortcutController::updateButton(const QModelIndex& index, int button) {
|
|||
if (oldButton >= 0) {
|
||||
m_buttons.take(oldButton);
|
||||
}
|
||||
if (button >= 0) {
|
||||
m_buttons[button] = item;
|
||||
}
|
||||
if (m_config) {
|
||||
m_config->setQtOption(item->name(), button, BUTTON_SECTION);
|
||||
}
|
||||
emit dataChanged(createIndex(index.row(), 0, index.internalPointer()), createIndex(index.row(), 2, index.internalPointer()));
|
||||
}
|
||||
|
||||
void ShortcutController::clearKey(const QModelIndex& index) {
|
||||
updateKey(index, QKeySequence());
|
||||
}
|
||||
|
||||
void ShortcutController::clearButton(const QModelIndex& index) {
|
||||
updateButton(index, -1);
|
||||
}
|
||||
|
||||
bool ShortcutController::eventFilter(QObject*, QEvent* event) {
|
||||
if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
|
||||
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
||||
|
|
|
@ -92,6 +92,9 @@ public:
|
|||
void updateKey(const QModelIndex& index, const QKeySequence& keySequence);
|
||||
void updateButton(const QModelIndex& index, int button);
|
||||
|
||||
void clearKey(const QModelIndex& index);
|
||||
void clearButton(const QModelIndex& index);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject*, QEvent*) override;
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ ShortcutView::ShortcutView(QWidget* parent)
|
|||
connect(m_ui.keySequenceEdit, SIGNAL(editingFinished()), this, SLOT(updateKey()));
|
||||
connect(m_ui.keyEdit, SIGNAL(valueChanged(int)), this, SLOT(updateButton(int)));
|
||||
connect(m_ui.shortcutTable, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(load(const QModelIndex&)));
|
||||
connect(m_ui.clearButton, SIGNAL(clicked()), this, SLOT(clear()));
|
||||
}
|
||||
|
||||
void ShortcutView::setController(ShortcutController* controller) {
|
||||
|
@ -51,9 +52,29 @@ void ShortcutView::load(const QModelIndex& index) {
|
|||
return;
|
||||
}
|
||||
if (m_ui.gamepadButton->isChecked()) {
|
||||
loadButton();
|
||||
m_ui.keyEdit->setFocus();
|
||||
m_ui.keyEdit->setValueButton(-1); // There are no default bindings
|
||||
} else {
|
||||
loadKey(action);
|
||||
m_ui.keySequenceEdit->setFocus();
|
||||
m_ui.keySequenceEdit->setKeySequence(action->shortcut());
|
||||
}
|
||||
}
|
||||
|
||||
void ShortcutView::clear() {
|
||||
if (!m_controller) {
|
||||
return;
|
||||
}
|
||||
QModelIndex index = m_ui.shortcutTable->selectionModel()->currentIndex();
|
||||
const QAction* action = m_controller->actionAt(index);
|
||||
if (!action || m_controller->isMenuAt(index)) {
|
||||
return;
|
||||
}
|
||||
if (m_ui.gamepadButton->isChecked()) {
|
||||
m_controller->clearButton(index);
|
||||
m_ui.keyEdit->setValueButton(-1);
|
||||
} else {
|
||||
m_controller->clearKey(index);
|
||||
m_ui.keySequenceEdit->setKeySequence(QKeySequence());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -69,15 +90,7 @@ void ShortcutView::updateButton(int button) {
|
|||
if (!m_controller || m_controller->isMenuAt(m_ui.shortcutTable->selectionModel()->currentIndex())) {
|
||||
return;
|
||||
}
|
||||
m_ui.keyEdit->clearFocus();
|
||||
m_controller->updateButton(m_ui.shortcutTable->selectionModel()->currentIndex(), button);
|
||||
|
||||
}
|
||||
void ShortcutView::loadKey(const QAction* action) {
|
||||
m_ui.keySequenceEdit->setFocus();
|
||||
m_ui.keySequenceEdit->setKeySequence(action->shortcut());
|
||||
}
|
||||
|
||||
void ShortcutView::loadButton() {
|
||||
m_ui.keyEdit->setFocus();
|
||||
m_ui.keyEdit->setValueButton(-1); // There are no default bindings
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ protected:
|
|||
|
||||
private slots:
|
||||
void load(const QModelIndex&);
|
||||
void clear();
|
||||
void updateKey();
|
||||
void updateButton(int button);
|
||||
|
||||
|
|
|
@ -40,6 +40,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="clearButton">
|
||||
<property name="text">
|
||||
<string>Clear</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
|
@ -61,18 +68,6 @@
|
|||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -83,27 +78,9 @@
|
|||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="visible">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Press button</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
|
Loading…
Reference in New Issue