Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
shortcuts_settings.h
Go to the documentation of this file.
1
6
7#ifndef SHORTCUTSSETTINGS_H
8#define SHORTCUTSSETTINGS_H
9
10#include <QApplication>
11#include <QKeySequence>
12#include <QLoggingCategory>
13#include <QSettings>
14
15inline Q_LOGGING_CATEGORY(ShortcutsSettingsLog, "shortcuts_settings");
16
18{
19public:
43
44 static QString getGroupName(ShortcutGroup::Groups group)
45 {
46 switch (group) {
47 case Main_Window:
48 return QApplication::translate("shortcutsTab", "Main Window");
49 case Deck_Editor:
50 return QApplication::translate("shortcutsTab", "Deck Editor");
51 case Game_Lobby:
52 return QApplication::translate("shortcutsTab", "Game Lobby");
53 case Card_Counters:
54 return QApplication::translate("shortcutsTab", "Card Counters");
55 case Player_Counters:
56 return QApplication::translate("shortcutsTab", "Player Counters");
57 case Power_Toughness:
58 return QApplication::translate("shortcutsTab", "Power and Toughness");
59 case Game_Phases:
60 return QApplication::translate("shortcutsTab", "Game Phases");
61 case Playing_Area:
62 return QApplication::translate("shortcutsTab", "Playing Area");
63 case Move_selected:
64 return QApplication::translate("shortcutsTab", "Move Selected Card");
65 case View:
66 return QApplication::translate("shortcutsTab", "View");
67 case Move_top:
68 return QApplication::translate("shortcutsTab", "Move Top Card");
69 case Move_bottom:
70 return QApplication::translate("shortcutsTab", "Move Bottom Card");
71 case Gameplay:
72 return QApplication::translate("shortcutsTab", "Gameplay");
73 case Drawing:
74 return QApplication::translate("shortcutsTab", "Drawing");
75 case Hand:
76 return QApplication::translate("shortcutsTab", "Hand");
77 case Chat_room:
78 return QApplication::translate("shortcutsTab", "Chat Room");
79 case Game_window:
80 return QApplication::translate("shortcutsTab", "Game Window");
81 case Load_deck:
82 return QApplication::translate("shortcutsTab", "Load Deck from Clipboard");
83 case Replays:
84 return QApplication::translate("shortcutsTab", "Replays");
85 case Tabs:
86 return QApplication::translate("shortcutsTab", "Tabs");
87 }
88
89 return {};
90 }
91};
92
93class ShortcutKey : public QList<QKeySequence>
94{
95public:
96 explicit ShortcutKey(const QString &_name = QString(),
97 QList _sequence = QList(),
99 void setSequence(const QList &_sequence)
100 {
101 QList::operator=(_sequence);
102 }
103 [[nodiscard]] QString getName() const
104 {
105 return QApplication::translate("shortcutsTab", name.toUtf8().data());
106 }
107 [[nodiscard]] QString getGroupName() const
108 {
110 }
111
112private:
113 QString name;
115};
116
117class ShortcutsSettings : public QObject
118{
119 Q_OBJECT
120public:
121 explicit ShortcutsSettings(const QString &settingsFilePath, QObject *parent = nullptr);
122
123 [[nodiscard]] ShortcutKey getDefaultShortcut(const QString &name) const;
124 [[nodiscard]] ShortcutKey getShortcut(const QString &name) const;
125 [[nodiscard]] QKeySequence getSingleShortcut(const QString &name) const;
126 [[nodiscard]] QString getDefaultShortcutString(const QString &name) const;
127 [[nodiscard]] QString getShortcutString(const QString &name) const;
128 [[nodiscard]] QString getShortcutFriendlyName(const QString &shortcutName) const;
129 [[nodiscard]] QList<QString> getAllShortcutKeys() const
130 {
131 return shortCuts.keys();
132 }
133
134 void setShortcuts(const QString &name, const QList<QKeySequence> &Sequence);
135 void setShortcuts(const QString &name, const QKeySequence &Sequence);
136 void setShortcuts(const QString &name, const QString &sequences);
137
138 [[nodiscard]] bool isKeyAllowed(const QString &name, const QString &sequences) const;
139 [[nodiscard]] bool isValid(const QString &name, const QString &sequences) const;
140 [[nodiscard]] QStringList findOverlaps(const QString &name, const QString &sequences) const;
141
142 void resetAllShortcuts();
143 void clearAllShortcuts();
144 void migrateShortcuts();
145
146signals:
148
149private:
150 const QChar sep = ';';
151 const QString custom = "Custom"; // name of custom group in shortCutsFile
153 QHash<QString, ShortcutKey> shortCuts;
154
155 [[nodiscard]] QString stringifySequence(const QList<QKeySequence> &Sequence) const;
156 [[nodiscard]] QList<QKeySequence> parseSequenceString(const QString &stringSequence) const;
157
158 const QHash<QString, ShortcutKey> defaultShortCuts = {
159 {"MainWindow/aCheckCardUpdates", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Check for Card Updates..."),
162 {"MainWindow/aConnect", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Connect..."),
163 parseSequenceString("Ctrl+L"),
165 {"MainWindow/aDisconnect", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Disconnect"),
168 {"MainWindow/aExit",
169 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exit"), parseSequenceString(""), ShortcutGroup::Main_Window)},
170 {"MainWindow/aFullScreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Full screen"),
171 parseSequenceString("Ctrl+F"),
173 {"MainWindow/aRegister", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Register..."),
176 {"MainWindow/aSettings", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Settings..."),
177 parseSequenceString("Ctrl+Shift+P"),
179 {"MainWindow/aSinglePlayer", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Start a Local Game..."),
180 parseSequenceString("Ctrl+Shift+L"),
182 {"MainWindow/aWatchReplay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Watch Replay..."),
185 {"MainWindow/aStatusBar", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Show Status Bar"),
188 {"TabDeckEditor/aAnalyzeDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Analyze Deck (deckstats.net)"),
191 {"TabDeckEditor/aAnalyzeDeckTappedout",
192 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Analyze Deck (tappedout.net)"),
195 {"TabDeckEditor/aClearFilterAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear All Filters"),
198 {"TabDeckEditor/aClearFilterOne", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear Selected Filter"),
201 {"TabDeckEditor/aClose",
202 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Close"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
203 {"TabDeckEditor/aDecrement", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card"),
206 {"TabDeckEditor/aManageSets", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Manage Sets..."),
209 {"TabDeckEditor/aEditTokens", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Edit Custom Tokens..."),
212 {"TabDeckEditor/aExportDeckDecklist",
213 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Export Deck (decklist.org)"),
216 {"TabDeckEditor/aExportDeckDecklistXyz",
217 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Export Deck (decklist.xyz)"),
220 {"TabDeckEditor/aIncrement", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card"),
223 {"TabDeckEditor/aLoadDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck..."),
224 parseSequenceString("Ctrl+O"),
226 {"TabDeckEditor/aLoadDeckFromClipboard",
227 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck from Clipboard..."),
228 parseSequenceString("Ctrl+Shift+V"),
230 {"TabDeckEditor/aEditDeckInClipboard",
231 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Edit Deck in Clipboard, Annotated"),
234 {"TabDeckEditor/aEditDeckInClipboardRaw",
235 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Edit Deck in Clipboard"),
238 {"TabDeckEditor/aNewDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "New Deck"),
239 parseSequenceString("Ctrl+N"),
241 {"TabDeckEditor/aOpenCustomFolder",
242 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Open Custom Pictures Folder"),
245 {"TabDeckEditor/aPrintDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Print Deck..."),
246 parseSequenceString("Ctrl+P"),
248 {"TabDeckEditor/aRemoveCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Delete Card"),
251 {"TabDeckEditor/aResetLayout", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Layout"),
254 {"TabDeckEditor/aSaveDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck"),
255 parseSequenceString("Ctrl+S"),
257 {"TabDeckEditor/aSaveDeckAs", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck as..."),
258 parseSequenceString("Ctrl+Shift+S"),
260 {"TabDeckEditor/aSaveDeckToClipboard",
261 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard, Annotated"),
262 parseSequenceString("Ctrl+Shift+C"),
264 {"TabDeckEditor/aSaveDeckToClipboardNoSetInfo",
265 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard, Annotated (No Set Info)"),
268 {"TabDeckEditor/aSaveDeckToClipboardRaw",
269 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard"),
270 parseSequenceString("Ctrl+Shift+R"),
272 {"TabDeckEditor/aSaveDeckToClipboardRawNoSetInfo",
273 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard (No Set Info)"),
276 {"DeckViewContainer/loadLocalButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Local Deck..."),
277 parseSequenceString("Ctrl+O"),
279 {"DeckViewContainer/loadRemoteButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Remote Deck..."),
280 parseSequenceString("Ctrl+Alt+O"),
282 {"DeckViewContainer/loadFromClipboardButton",
283 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck from Clipboard..."),
284 parseSequenceString("Ctrl+Shift+V"),
286 {"DeckViewContainer/unloadDeckButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unload Deck"),
287 parseSequenceString("Ctrl+Alt+U"),
289 {"DeckViewContainer/readyStartButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Ready to Start"),
290 parseSequenceString("Ctrl+Shift+S"),
292 {"DeckViewContainer/sideboardLockButton",
293 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Sideboard Lock"),
294 parseSequenceString("Ctrl+Shift+B"),
296 {"DeckViewContainer/forceStartGameButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Force Start"),
299 {"Player/aCCMagenta", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (F)"),
302 {"Player/aRCMagenta", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (F)"),
305 {"Player/aSCMagenta", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (F)..."),
308 {"Player/aCCPurple", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (E)"),
311 {"Player/aRCPurple", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (E)"),
314 {"Player/aSCPurple", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (E)..."),
317 {"Player/aCCCyan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter(D)"),
320 {"Player/aRCCyan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (D)"),
323 {"Player/aSCCyan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (D)..."),
326 {"Player/aCCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (C)"),
327 parseSequenceString("Ctrl+>"),
329 {"Player/aRCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (C)"),
330 parseSequenceString("Ctrl+<"),
332 {"Player/aSCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (C)..."),
333 parseSequenceString("Ctrl+?"),
335 {"Player/aCCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (B)"),
336 parseSequenceString("Ctrl+."),
338 {"Player/aRCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (B)"),
339 parseSequenceString("Ctrl+,"),
341 {"Player/aSCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (B)..."),
342 parseSequenceString("Ctrl+/"),
344 {"Player/aCCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (A)"),
345 parseSequenceString("Alt+."),
347 {"Player/aRCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (A)"),
348 parseSequenceString("Alt+,"),
350 {"Player/aSCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (A)..."),
351 parseSequenceString("Alt+/"),
353 {"Player/aInc", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Life Counter"),
354 parseSequenceString("F12"),
356 {"Player/aDec", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Life Counter"),
357 parseSequenceString("F11"),
359 {"Player/aSet", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Life Counters..."),
360 parseSequenceString("Ctrl+L"),
362 {"Player/aIncCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add White Counter"),
365 {"Player/aDecCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove White Counter"),
368 {"Player/aSetCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set White Counters..."),
371 {"Player/aIncCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Blue Counter"),
374 {"Player/aDecCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Blue Counter"),
377 {"Player/aSetCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Blue Counters..."),
380 {"Player/aIncCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Black Counter"),
383 {"Player/aDecCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Black Counter"),
386 {"Player/aSetCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Black Counters..."),
389 {"Player/aIncCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Red Counter"),
392 {"Player/aDecCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Red Counter"),
395 {"Player/aSetCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Red Counters..."),
398 {"Player/aIncCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Green Counter"),
401 {"Player/aDecCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Green Counter"),
404 {"Player/aSetCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Green Counters..."),
407 {"Player/aIncCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Colorless Counter"),
410 {"Player/aDecCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Colorless Counter"),
413 {"Player/aSetCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Colorless Counters..."),
416 {"Player/aIncCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Other Counter"),
417 parseSequenceString("Ctrl+]"),
419 {"Player/aDecCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Other Counter"),
420 parseSequenceString("Ctrl+["),
422 {"Player/aSetCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Other Counters..."),
423 parseSequenceString("Ctrl+\\"),
425 {"Player/aIncrementAllCardCounters",
426 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Increment all card counters"),
427 parseSequenceString("Ctrl+Shift+A"),
429 {"Player/aIncP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Power (+1/+0)"),
430 parseSequenceString("Ctrl++;Ctrl+="),
432 {"Player/aDecP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Power (-1/-0)"),
433 parseSequenceString("Ctrl+-"),
435 {"Player/aFlowP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Move Toughness to Power (+1/-1)"),
438 {"Player/aIncT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Toughness (+0/+1)"),
439 parseSequenceString("Alt++;Alt+="),
441 {"Player/aDecT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Toughness (-0/-1)"),
442 parseSequenceString("Alt+-"),
444 {"Player/aFlowT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Move Power to Toughness (-1/+1)"),
447 {"Player/aIncPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Power and Toughness (+1/+1)"),
448 parseSequenceString("Ctrl+Alt++;Ctrl+Alt+="),
450 {"Player/aDecPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Power and Toughness (-1/-1)"),
451 parseSequenceString("Ctrl+Alt+-"),
453 {"Player/aSetPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Power and Toughness..."),
454 parseSequenceString("Ctrl+P"),
456 {"Player/aResetPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Power and Toughness"),
457 parseSequenceString("Ctrl+Alt+0"),
459 {"Player/phase0", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Untap"),
462 {"Player/phase1",
463 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Upkeep"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
464 {"Player/phase2",
465 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw"), parseSequenceString("F6"), ShortcutGroup::Game_Phases)},
466 {"Player/phase3", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "First Main Phase"),
469 {"Player/phase4", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Start Combat"),
472 {"Player/phase5",
473 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Attack"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
474 {"Player/phase6",
475 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Block"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
476 {"Player/phase7",
477 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Damage"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
478 {"Player/phase8", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "End Combat"),
481 {"Player/phase9", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Second Main Phase"),
484 {"Player/phase10",
485 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "End"), parseSequenceString("F10"), ShortcutGroup::Game_Phases)},
486 {"Player/aNextPhase", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Phase"),
487 parseSequenceString("Ctrl+Space;Tab"),
489 {"Player/aNextPhaseAction", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Phase Action"),
490 parseSequenceString("Shift+Tab"),
492 {"Player/aNextTurn", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Turn"),
493 parseSequenceString("Ctrl+Return;Ctrl+Enter"),
495 {"Player/aHide", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hide Card in Reveal Window"),
496 parseSequenceString("Alt+H"),
498 {"Player/aTap", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Tap / Untap Card"),
501 {"Player/aUntapAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Untap All"),
502 parseSequenceString("Ctrl+U"),
504 {"Player/aDoesntUntap", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Untap"),
505 parseSequenceString("Alt+U"),
507 {"Player/aFlip", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Turn Card Over"),
508 parseSequenceString("Alt+F"),
510 {"Player/aPeek", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Peek Card"),
511 parseSequenceString("Alt+L"),
513 {"Player/aPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Play Card"),
516 {"Player/aAttach", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Attach Card..."),
517 parseSequenceString("Ctrl+Alt+A"),
519 {"Player/aUnattach", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unattach Card"),
520 parseSequenceString("Ctrl+Alt+U"),
522 {"Player/aClone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clone Card"),
523 parseSequenceString("Ctrl+J"),
525 {"Player/aCreateToken", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create Token..."),
526 parseSequenceString("Ctrl+T"),
528 {"Player/aCreateRelatedTokens", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create All Related Tokens"),
529 parseSequenceString("Ctrl+Shift+T"),
531 {"Player/aCreateAnotherToken", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create Another Token"),
532 parseSequenceString("Ctrl+G"),
534 {"Player/aSetAnnotation", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Annotation..."),
535 parseSequenceString("Alt+N"),
537 {"Player/aSelectAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Select All Cards in Zone"),
538 parseSequenceString("Ctrl+A"),
540 {"Player/aSelectRow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Select All Cards in Row"),
541 parseSequenceString("Ctrl+Shift+X"),
543 {"Player/aSelectColumn", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Select All Cards in Column"),
544 parseSequenceString("Ctrl+Shift+C"),
546 {"Player/aRevealToAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Selected Cards to All Players"),
549 {"Player/aMoveToBottomLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"),
550 parseSequenceString("Ctrl+B"),
552 {"Player/aMoveToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"),
555 {"Player/aMoveToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"),
556 parseSequenceString("Ctrl+Del"),
558 {"Player/aMoveToHand",
559 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hand"), parseSequenceString(""), ShortcutGroup::Move_selected)},
560 {"Player/aMoveToTopLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top of Library"),
563 {"Player/aPlayFacedown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"),
566 {"Player/aPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield"),
569 {"Player/aViewHand",
570 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hand"), parseSequenceString(""), ShortcutGroup::View)},
571 {"Player/aViewGraveyard",
572 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"), parseSequenceString("F4"), ShortcutGroup::View)},
573 {"Player/aViewLibrary",
574 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Library"), parseSequenceString("F3"), ShortcutGroup::View)},
575 {"Player/aViewRfg",
576 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::View)},
577 {"Player/aViewSideboard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sideboard"),
578 parseSequenceString("Ctrl+F3"),
580 {"Player/aViewTopCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top Cards of Library"),
581 parseSequenceString("Ctrl+W"),
583 {"Player/aViewBottomCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom Cards of Library"),
584 parseSequenceString("Ctrl+Shift+W"),
586 {"Player/aCloseMostRecentZoneView", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Close Recent View"),
587 parseSequenceString("Esc"),
589 {"Player/aMoveTopToPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack"),
590 parseSequenceString("Ctrl+Y"),
592 {"Player/aMoveTopToPlayFaceDown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"),
593 parseSequenceString("Ctrl+Shift+E"),
595 {"Player/aMoveTopCardToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"),
596 parseSequenceString("Alt+Y"),
598 {"Player/aMoveTopCardsToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard (Multiple)"),
599 parseSequenceString("Alt+M"),
601 {"Player/aMoveTopCardToExile",
602 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::Move_top)},
603 {"Player/aMoveTopCardsToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile (Multiple)"),
606 {"Player/aMoveTopCardsUntil", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack Until Found"),
607 parseSequenceString("Ctrl+Shift+Y"),
609 {"Player/aMoveTopCardToBottom", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"),
612 {"Player/aMoveBottomToPlay",
613 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack"), parseSequenceString(""), ShortcutGroup::Move_bottom)},
614 {"Player/aMoveBottomToPlayFaceDown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"),
617 {"Player/aMoveBottomCardToGrave", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"),
620 {"Player/aMoveBottomCardsToGrave", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard (Multiple)"),
623 {"Player/aMoveBottomCardToExile",
624 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::Move_bottom)},
625 {"Player/aMoveBottomCardsToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile (Multiple)"),
628 {"Player/aMoveBottomCardToTop", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top of Library"),
631 {"Player/aDrawBottomCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Bottom Card"),
634 {"Player/aDrawBottomCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Multiple Cards from Bottom..."),
637 {"Player/aDrawArrow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Arrow..."),
638 parseSequenceString("Alt+A"),
640 {"Player/aRemoveLocalArrows", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Local Arrows"),
641 parseSequenceString("Ctrl+R"),
643 {"Player/aLeaveGame", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Leave Game"),
644 parseSequenceString("Ctrl+Q"),
646 {"Player/aConcede",
647 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Concede"), parseSequenceString("F2"), ShortcutGroup::Gameplay)},
648 {"Player/aRollDie", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Roll Dice..."),
649 parseSequenceString("Ctrl+I"),
651 {"Player/aShuffle", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle Library"),
652 parseSequenceString("Ctrl+S"),
654 {"Player/aShuffleTopCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle Top Cards of Library"),
657 {"Player/aShuffleBottomCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle Bottom Cards of Library"),
660 {"Player/aMulligan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan"),
661 parseSequenceString("Ctrl+M"),
663 {"Player/aDrawCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw a Card"),
664 parseSequenceString("Ctrl+D"),
666 {"Player/aDrawCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Multiple Cards..."),
667 parseSequenceString("Ctrl+E"),
669 {"Player/aUndoDraw", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Undo Draw"),
670 parseSequenceString("Ctrl+Shift+D"),
672 {"Player/aAlwaysRevealTopCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Always Reveal Top Card"),
673 parseSequenceString("Ctrl+N"),
675 {"Player/aAlwaysLookAtTopCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Always Look At Top Card"),
676 parseSequenceString("Ctrl+Shift+N"),
678 {"Player/aSortHandByName", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sort Hand by Name"),
681 {"Player/aSortHandByType", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sort Hand by Type"),
682 parseSequenceString("Ctrl+Shift+H"),
684 {"Player/aSortHandByManaValue", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sort Hand by Mana Value"),
687 {"Player/aRevealHandToAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Hand to All Players"),
690 {"Player/aRevealRandomHandCardToAll",
691 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Random Card to All Players"),
694 {"Player/aRotateViewCW", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate View Clockwise"),
697 {"Player/aRotateViewCCW", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate View Counterclockwise"),
700 {"Player/unfocusTextBox", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unfocus Text Box"),
701 parseSequenceString("Esc"),
703 {"Player/aFocusChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Focus Chat"),
704 parseSequenceString("Shift+Return"),
706 {"tab_room/aClearChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear Chat"),
707 parseSequenceString("F12"),
709 {"Player/aResetLayout", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Layout"),
712 {"DlgLoadDeckFromClipboard/refreshButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Refresh"),
715 {"Replays/aSkipForward", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Forward"),
716 parseSequenceString("Right"),
718 {"Replays/aSkipBackward", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Backward"),
719 parseSequenceString("Left"),
721 {"Replays/aSkipForwardBig", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Forward by a lot"),
722 parseSequenceString("Ctrl+Right"),
724 {"Replays/aSkipBackwardBig", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Backward by a lot"),
725 parseSequenceString("Ctrl+Left"),
727 {"Replays/playButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Play/Pause"),
728 parseSequenceString("Space"),
730 {"Replays/fastForwardButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Fast Forward"),
731 parseSequenceString("Ctrl+P"),
733 {"Tabs/aTabDeckEditor",
734 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Deck Editor"), parseSequenceString(""), ShortcutGroup::Tabs)},
735 {"Tabs/aTabHome",
736 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Home"), parseSequenceString(""), ShortcutGroup::Tabs)},
737 {"Tabs/aTabVisualDeckStorage", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Visual Deck Storage"),
740 {"Tabs/aTabDeckStorage",
741 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Deck Storage"), parseSequenceString(""), ShortcutGroup::Tabs)},
742 {"Tabs/aTabReplays",
743 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Replays"), parseSequenceString(""), ShortcutGroup::Tabs)},
744 {"Tabs/aTabServer",
745 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Server"), parseSequenceString(""), ShortcutGroup::Tabs)},
746 {"Tabs/aTabAccount",
747 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Account"), parseSequenceString(""), ShortcutGroup::Tabs)},
748 {"Tabs/aTabAdmin", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Administration"),
751 {"Tabs/aTabLogs",
752 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Logs"), parseSequenceString(""), ShortcutGroup::Tabs)},
753 };
754};
755
756#endif // SHORTCUTSSETTINGS_H
Definition shortcuts_settings.h:18
static QString getGroupName(ShortcutGroup::Groups group)
Definition shortcuts_settings.h:44
Groups
Definition shortcuts_settings.h:21
@ Game_Lobby
Definition shortcuts_settings.h:24
@ Tabs
Definition shortcuts_settings.h:41
@ Card_Counters
Definition shortcuts_settings.h:25
@ Gameplay
Definition shortcuts_settings.h:34
@ Player_Counters
Definition shortcuts_settings.h:26
@ Move_selected
Definition shortcuts_settings.h:30
@ View
Definition shortcuts_settings.h:31
@ Move_top
Definition shortcuts_settings.h:32
@ Playing_Area
Definition shortcuts_settings.h:29
@ Hand
Definition shortcuts_settings.h:36
@ Game_window
Definition shortcuts_settings.h:38
@ Deck_Editor
Definition shortcuts_settings.h:23
@ Main_Window
Definition shortcuts_settings.h:22
@ Drawing
Definition shortcuts_settings.h:35
@ Replays
Definition shortcuts_settings.h:40
@ Power_Toughness
Definition shortcuts_settings.h:27
@ Chat_room
Definition shortcuts_settings.h:37
@ Game_Phases
Definition shortcuts_settings.h:28
@ Move_bottom
Definition shortcuts_settings.h:33
@ Load_deck
Definition shortcuts_settings.h:39
Definition shortcuts_settings.h:94
void setSequence(const QList &_sequence)
Definition shortcuts_settings.h:99
QString getGroupName() const
Definition shortcuts_settings.h:107
QString name
Definition shortcuts_settings.h:113
ShortcutKey(const QString &_name=QString(), QList _sequence=QList(), ShortcutGroup::Groups _group=ShortcutGroup::Main_Window)
Definition shortcuts_settings.cpp:9
QString getName() const
Definition shortcuts_settings.h:103
ShortcutGroup::Groups group
Definition shortcuts_settings.h:114
void resetAllShortcuts()
Definition shortcuts_settings.cpp:192
void migrateShortcuts()
Definition shortcuts_settings.cpp:69
ShortcutKey getDefaultShortcut(const QString &name) const
Definition shortcuts_settings.cpp:104
ShortcutsSettings(const QString &settingsFilePath, QObject *parent=nullptr)
Definition shortcuts_settings.cpp:14
bool isValid(const QString &name, const QString &sequences) const
Definition shortcuts_settings.cpp:234
QString settingsFilePath
Definition shortcuts_settings.h:152
QString getShortcutFriendlyName(const QString &shortcutName) const
Definition shortcuts_settings.cpp:140
bool isKeyAllowed(const QString &name, const QString &sequences) const
Definition shortcuts_settings.cpp:214
QList< QString > getAllShortcutKeys() const
Definition shortcuts_settings.h:129
void clearAllShortcuts()
Definition shortcuts_settings.cpp:202
QKeySequence getSingleShortcut(const QString &name) const
Definition shortcuts_settings.cpp:125
QStringList findOverlaps(const QString &name, const QString &sequences) const
Definition shortcuts_settings.cpp:247
QHash< QString, ShortcutKey > shortCuts
Definition shortcuts_settings.h:153
void setShortcuts(const QString &name, const QList< QKeySequence > &Sequence)
Definition shortcuts_settings.cpp:171
const QString custom
Definition shortcuts_settings.h:151
QString getDefaultShortcutString(const QString &name) const
Definition shortcuts_settings.cpp:130
const QHash< QString, ShortcutKey > defaultShortCuts
Definition shortcuts_settings.h:158
QString getShortcutString(const QString &name) const
Definition shortcuts_settings.cpp:135
ShortcutKey getShortcut(const QString &name) const
Definition shortcuts_settings.cpp:109
QString stringifySequence(const QList< QKeySequence > &Sequence) const
Definition shortcuts_settings.cpp:151
QList< QKeySequence > parseSequenceString(const QString &stringSequence) const
Definition shortcuts_settings.cpp:161
const QChar sep
Definition shortcuts_settings.h:150
Q_LOGGING_CATEGORY(ShortcutsSettingsLog, "shortcuts_settings")