From 3c40cc4b7df03cdebbd316e3b934fb9785f92b38 Mon Sep 17 00:00:00 2001 From: lumadd <93663941+LumaddT@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:56:42 +0200 Subject: [PATCH] [4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player group (#5079) * [4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player family * [4191] fix: fix formatting * Revert "[4191] fix: fix formatting" This reverts commit 86a4a675f3bc8118d4ba8dd45f408c4e8c348f33. * Revert "[4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player family" This reverts commit 3ec183628df81c48123a8a248d0416c529ee0c8e. * [4191] fix: Textbox and tab_game shortcut groups cannot conflict with Player group * Revert "[4191] fix: Textbox and tab_game shortcut groups cannot conflict with Player group" This reverts commit 36800393339d997df1a932bb798f95d2d387399a. * [4191] fix: Move unfocusTextBox and aFocusChat shortcuts to Player family * [4191] fix: Migrate shortcuts if new version is detected * [4191] fix: formatting * [4191] fix: Maybe fix build issue on Windows7, Debian11, UbuntuBionic and UbuntuFocal --- cockatrice/src/client/tabs/tab_game.cpp | 2 +- cockatrice/src/client/ui/window_main.cpp | 4 +++ cockatrice/src/deck/custom_line_edit.cpp | 2 +- .../src/settings/shortcuts_settings.cpp | 29 +++++++++++++++++++ cockatrice/src/settings/shortcuts_settings.h | 13 +++++---- 5 files changed, 42 insertions(+), 8 deletions(-) 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)},