| |
| |
| |
|
|
| #include <QShortcut> |
| #include <QtGlobal> |
| #include "citra_qt/hotkeys.h" |
| #include "citra_qt/uisettings.h" |
|
|
| HotkeyRegistry::HotkeyRegistry() = default; |
|
|
| HotkeyRegistry::~HotkeyRegistry() = default; |
|
|
| void HotkeyRegistry::SaveHotkeys() { |
| UISettings::values.shortcuts.clear(); |
| for (const auto& group : hotkey_groups) { |
| for (const auto& hotkey : group.second) { |
| UISettings::values.shortcuts.push_back( |
| {hotkey.first, group.first, |
| UISettings::ContextualShortcut( |
| {hotkey.second.keyseq.toString(), hotkey.second.context})}); |
| } |
| } |
| } |
|
|
| void HotkeyRegistry::LoadHotkeys() { |
| |
| |
| for (auto shortcut : UISettings::values.shortcuts) { |
| Hotkey& hk = hotkey_groups[shortcut.group][shortcut.name]; |
| if (!shortcut.shortcut.keyseq.isEmpty()) { |
| hk.keyseq = |
| QKeySequence::fromString(shortcut.shortcut.keyseq, QKeySequence::NativeText); |
| hk.context = static_cast<Qt::ShortcutContext>(shortcut.shortcut.context); |
| } |
| if (hk.shortcut) { |
| hk.shortcut->disconnect(); |
| hk.shortcut->setKey(hk.keyseq); |
| } |
| } |
| } |
|
|
| QShortcut* HotkeyRegistry::GetHotkey(const QString& group, const QString& action, QObject* widget) { |
| Hotkey& hk = hotkey_groups[group][action]; |
|
|
| if (!hk.shortcut) { |
| hk.shortcut = new QShortcut(hk.keyseq, widget, nullptr, nullptr, hk.context); |
| } |
|
|
| return hk.shortcut; |
| } |
|
|
| QKeySequence HotkeyRegistry::GetKeySequence(const QString& group, const QString& action) { |
| Hotkey& hk = hotkey_groups[group][action]; |
| return hk.keyseq; |
| } |
|
|
| Qt::ShortcutContext HotkeyRegistry::GetShortcutContext(const QString& group, |
| const QString& action) { |
| Hotkey& hk = hotkey_groups[group][action]; |
| return hk.context; |
| } |
|
|