diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index fa8e286ef..0b068ad37 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -256,7 +256,7 @@ void TabGame::refreshShortcuts() aResetLayout->setShortcuts(shortcuts.getShortcut("Player/aResetLayout")); } if (aFocusChat) { - aFocusChat->setShortcuts(shortcuts.getShortcut("tab_game/aFocusChat")); + aFocusChat->setShortcuts(shortcuts.getShortcut("Player/aFocusChat")); } if (aReplaySkipForward) { aReplaySkipForward->setShortcuts(shortcuts.getShortcut("Replays/aSkipForward")); diff --git a/cockatrice/src/client/ui/window_main.cpp b/cockatrice/src/client/ui/window_main.cpp index 773af2b37..4de3b3cb3 100644 --- a/cockatrice/src/client/ui/window_main.cpp +++ b/cockatrice/src/client/ui/window_main.cpp @@ -888,6 +888,10 @@ void MainWindow::startupConfigCheck() } else { const auto reloadOk0 = QtConcurrent::run([] { CardDatabaseManager::getInstance()->loadCardDatabases(); }); } + + qDebug() << "[MainWindow] Migrating shortcuts after update detected."; + SettingsCache::instance().shortcuts().migrateShortcuts(); + SettingsCache::instance().setClientVersion(VERSION_STRING); } else { // previous config from this version found diff --git a/cockatrice/src/deck/custom_line_edit.cpp b/cockatrice/src/deck/custom_line_edit.cpp index bbbb544d5..326d0a6c0 100644 --- a/cockatrice/src/deck/custom_line_edit.cpp +++ b/cockatrice/src/deck/custom_line_edit.cpp @@ -35,7 +35,7 @@ bool LineEditUnfocusable::isUnfocusShortcut(QKeyEvent *event) keyNoMod = QKeySequence(event->key()).toString(); QKeySequence key(modifier + keyNoMod); - QList unfocusShortcut = SettingsCache::instance().shortcuts().getShortcut("Textbox/unfocusTextBox"); + QList unfocusShortcut = SettingsCache::instance().shortcuts().getShortcut("Player/unfocusTextBox"); for (const auto &unfocusKey : unfocusShortcut) { if (key.matches(unfocusKey) == QKeySequence::ExactMatch) diff --git a/cockatrice/src/settings/shortcuts_settings.cpp b/cockatrice/src/settings/shortcuts_settings.cpp index 0602128e9..7479b7bb4 100644 --- a/cockatrice/src/settings/shortcuts_settings.cpp +++ b/cockatrice/src/settings/shortcuts_settings.cpp @@ -1,5 +1,6 @@ #include "shortcuts_settings.h" +#include #include #include #include @@ -56,6 +57,34 @@ ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *paren } } +/// PR 5079 changes Textbox/unfocusTextBox to Player/unfocusTextBox and tab_game/aFocusChat to Player/aFocusChat. +/// A migration is necessary to let players keep their already configured shortcuts. +void ShortcutsSettings::migrateShortcuts() +{ + if (QFile(settingsFilePath).exists()) { + QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); + + shortCutsFile.beginGroup(custom); + + if (shortCutsFile.contains("Textbox/unfocusTextBox")) { + qDebug() + << "[ShortcutsSettings] Textbox/unfocusTextBox shortcut found. Migrating to Player/unfocusTextBox."; + QString unfocusTextBox = shortCutsFile.value("Textbox/unfocusTextBox", "").toString(); + this->setShortcuts("Player/unfocusTextBox", unfocusTextBox); + shortCutsFile.remove("Textbox/unfocusTextBox"); + } + + if (shortCutsFile.contains("tab_game/aFocusChat")) { + qDebug() << "[ShortcutsSettings] tab_game/aFocusChat shortcut found. Migrating to Player/aFocusChat."; + QString aFocusChat = shortCutsFile.value("tab_game/aFocusChat", "").toString(); + this->setShortcuts("Player/aFocusChat", aFocusChat); + shortCutsFile.remove("tab_game/aFocusChat"); + } + + shortCutsFile.endGroup(); + } +} + ShortcutKey ShortcutsSettings::getDefaultShortcut(const QString &name) const { return defaultShortCuts.value(name, ShortcutKey()); diff --git a/cockatrice/src/settings/shortcuts_settings.h b/cockatrice/src/settings/shortcuts_settings.h index 57e75f608..d4e40c2b3 100644 --- a/cockatrice/src/settings/shortcuts_settings.h +++ b/cockatrice/src/settings/shortcuts_settings.h @@ -126,6 +126,7 @@ public: void resetAllShortcuts(); void clearAllShortcuts(); + void migrateShortcuts(); signals: void shortCutChanged(); @@ -575,12 +576,12 @@ private: {"Player/aRotateViewCCW", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate View Counterclockwise"), parseSequenceString(""), ShortcutGroup::Gameplay)}, - {"Textbox/unfocusTextBox", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unfocus Text Box"), - parseSequenceString("Esc"), - ShortcutGroup::Chat_room)}, - {"tab_game/aFocusChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Focus Chat"), - parseSequenceString("Shift+Return"), - ShortcutGroup::Chat_room)}, + {"Player/unfocusTextBox", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unfocus Text Box"), + parseSequenceString("Esc"), + ShortcutGroup::Chat_room)}, + {"Player/aFocusChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Focus Chat"), + parseSequenceString("Shift+Return"), + ShortcutGroup::Chat_room)}, {"tab_room/aClearChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear Chat"), parseSequenceString("F12"), ShortcutGroup::Chat_room)},