Cockatrice 2026-10-19-Development-3.1.2-beta.2
A 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 <QByteArray>
12#include <QChar>
13#include <QHash>
14#include <QKeySequence>
15#include <QList>
16#include <QLoggingCategory>
17#include <QObject>
18#include <QString>
19#include <QStringList>
20#include <QtGlobal>
21#include <qtmetamacros.h>
22#include <utility>
23
24inline Q_LOGGING_CATEGORY(ShortcutsSettingsLog, "shortcuts_settings");
25
27{
28public:
52
53 static QString getGroupName(ShortcutGroup::Groups group)
54 {
55 switch (group) {
56 case Main_Window:
57 return QApplication::translate("shortcutsTab", "Main Window");
58 case Deck_Editor:
59 return QApplication::translate("shortcutsTab", "Deck Editor");
60 case Game_Lobby:
61 return QApplication::translate("shortcutsTab", "Game Lobby");
62 case Card_Counters:
63 return QApplication::translate("shortcutsTab", "Card Counters");
64 case Player_Counters:
65 return QApplication::translate("shortcutsTab", "Player Counters");
66 case Power_Toughness:
67 return QApplication::translate("shortcutsTab", "Power and Toughness");
68 case Game_Phases:
69 return QApplication::translate("shortcutsTab", "Game Phases");
70 case Playing_Area:
71 return QApplication::translate("shortcutsTab", "Playing Area");
72 case Move_selected:
73 return QApplication::translate("shortcutsTab", "Move Selected Card");
74 case View:
75 return QApplication::translate("shortcutsTab", "View");
76 case Move_top:
77 return QApplication::translate("shortcutsTab", "Move Top Card");
78 case Move_bottom:
79 return QApplication::translate("shortcutsTab", "Move Bottom Card");
80 case Gameplay:
81 return QApplication::translate("shortcutsTab", "Gameplay");
82 case Drawing:
83 return QApplication::translate("shortcutsTab", "Drawing");
84 case Hand:
85 return QApplication::translate("shortcutsTab", "Hand");
86 case Chat_room:
87 return QApplication::translate("shortcutsTab", "Chat Room");
88 case Game_window:
89 return QApplication::translate("shortcutsTab", "Game Window");
90 case Load_deck:
91 return QApplication::translate("shortcutsTab", "Load Deck from Clipboard");
92 case Replays:
93 return QApplication::translate("shortcutsTab", "Replays");
94 case Tabs:
95 return QApplication::translate("shortcutsTab", "Tabs");
96 }
97
98 return {};
99 }
100};
101
102class ShortcutKey : public QList<QKeySequence>
103{
104public:
105 explicit ShortcutKey(const QString &_name = QString(),
106 QList _sequence = QList(),
108 void setSequence(const QList &_sequence)
109 {
110 QList::operator=(_sequence);
111 }
112 [[nodiscard]] QString getName() const
113 {
114 return QApplication::translate("shortcutsTab", name.toUtf8().data());
115 }
116 [[nodiscard]] QString getGroupName() const
117 {
119 }
120
121private:
122 QString name;
124};
125
126class ShortcutsSettings : public QObject
127{
128 Q_OBJECT
129public:
130 explicit ShortcutsSettings(const QString &settingsFilePath, QObject *parent = nullptr);
131
132 [[nodiscard]] ShortcutKey getDefaultShortcut(const QString &name) const;
133 [[nodiscard]] ShortcutKey getShortcut(const QString &name) const;
134 [[nodiscard]] QKeySequence getSingleShortcut(const QString &name) const;
135 [[nodiscard]] QString getDefaultShortcutString(const QString &name) const;
136 [[nodiscard]] QString getShortcutString(const QString &name) const;
137 [[nodiscard]] QString getShortcutFriendlyName(const QString &shortcutName) const;
138 [[nodiscard]] QList<QString> getAllShortcutKeys() const
139 {
140 return shortCuts.keys();
141 }
142
143 void setShortcuts(const QString &name, const QList<QKeySequence> &Sequence);
144 void setShortcuts(const QString &name, const QKeySequence &Sequence);
145 void setShortcuts(const QString &name, const QString &sequences);
146
147 [[nodiscard]] bool isKeyAllowed(const QString &name, const QString &sequences) const;
148 [[nodiscard]] bool isValid(const QString &name, const QString &sequences) const;
149 [[nodiscard]] QStringList findOverlaps(const QString &name, const QString &sequences) const;
150
151 void resetAllShortcuts();
152 void clearAllShortcuts();
153 void migrateShortcuts();
154
155signals:
157
158private:
159 const QChar sep = ';';
160 const QString custom = "Custom"; // name of custom group in shortCutsFile
163
164 [[nodiscard]] QString stringifySequence(const QList<QKeySequence> &Sequence) const;
165 [[nodiscard]] QList<QKeySequence> parseSequenceString(const QString &stringSequence) const;
166
168 {"MainWindow/aCheckCardUpdates", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Check for Card Updates..."),
171 {"MainWindow/aConnect", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Connect..."),
172 parseSequenceString("Ctrl+L"),
174 {"MainWindow/aDisconnect", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Disconnect"),
177 {"MainWindow/aExit",
178 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exit"), parseSequenceString(""), ShortcutGroup::Main_Window)},
179 {"MainWindow/aFullScreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Full screen"),
180 parseSequenceString("Ctrl+F"),
182 {"MainWindow/aRegister", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Register..."),
185 {"MainWindow/aSettings", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Settings..."),
186 parseSequenceString("Ctrl+Shift+P"),
188 {"MainWindow/aSinglePlayer", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Start a Local Game..."),
189 parseSequenceString("Ctrl+Shift+L"),
191 {"MainWindow/aWatchReplay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Watch Replay..."),
194 {"MainWindow/aStatusBar", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Show Status Bar"),
197 {"TabDeckEditor/aAnalyzeDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Analyze Deck (deckstats.net)"),
200 {"TabDeckEditor/aAnalyzeDeckTappedout",
201 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Analyze Deck (tappedout.net)"),
204 {"TabDeckEditor/aClearFilterAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear All Filters"),
207 {"TabDeckEditor/aClearFilterOne", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear Selected Filter"),
210 {"TabDeckEditor/aClose",
211 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Close"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
212 {"TabDeckEditor/aDecrement", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card"),
215 {"TabDeckEditor/aManageSets", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Manage Sets..."),
218 {"TabDeckEditor/aEditTokens", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Edit Custom Tokens..."),
221 {"TabDeckEditor/aExportDeckDecklist",
222 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Export Deck (decklist.org)"),
225 {"TabDeckEditor/aExportDeckDecklistXyz",
226 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Export Deck (decklist.xyz)"),
229 {"TabDeckEditor/aIncrement", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card"),
232 {"TabDeckEditor/aLoadDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck..."),
233 parseSequenceString("Ctrl+O"),
235 {"TabDeckEditor/aLoadDeckFromWebsite",
236 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load deck from online service..."),
237 parseSequenceString("Ctrl+Shift+O"),
239 {"TabDeckEditor/aLoadDeckFromClipboard",
240 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck from Clipboard..."),
241 parseSequenceString("Ctrl+Shift+V"),
243 {"TabDeckEditor/aEditDeckInClipboard",
244 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Edit Deck in Clipboard, Annotated"),
247 {"TabDeckEditor/aEditDeckInClipboardRaw",
248 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Edit Deck in Clipboard"),
251 {"TabDeckEditor/aNewDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "New Deck"),
252 parseSequenceString("Ctrl+N"),
254 {"TabDeckEditor/aOpenCustomFolder",
255 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Open Custom Pictures Folder"),
258 {"TabDeckEditor/aPrintDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Print Deck..."),
259 parseSequenceString("Ctrl+P"),
261 {"TabDeckEditor/aRemoveCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Delete Card"),
264 {"TabDeckEditor/aResetLayout", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Layout"),
267 {"TabDeckEditor/aSaveDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck"),
268 parseSequenceString("Ctrl+S"),
270 {"TabDeckEditor/aSaveDeckAs", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck as..."),
271 parseSequenceString("Ctrl+Shift+S"),
273 {"TabDeckEditor/aSaveDeckToClipboard",
274 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard, Annotated"),
275 parseSequenceString("Ctrl+Shift+C"),
277 {"TabDeckEditor/aSaveDeckToClipboardNoSetInfo",
278 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard, Annotated (No Set Info)"),
281 {"TabDeckEditor/aSaveDeckToClipboardRaw",
282 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard"),
283 parseSequenceString("Ctrl+Shift+R"),
285 {"TabDeckEditor/aSaveDeckToClipboardRawNoSetInfo",
286 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard (No Set Info)"),
289 {"DeckViewContainer/loadLocalButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Local Deck..."),
290 parseSequenceString("Ctrl+O"),
292 {"DeckViewContainer/loadRemoteButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Remote Deck..."),
293 parseSequenceString("Ctrl+Alt+O"),
295 {"DeckViewContainer/loadFromClipboardButton",
296 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck from Clipboard..."),
297 parseSequenceString("Ctrl+Shift+V"),
299 {"DeckViewContainer/loadFromWebsiteButton",
300 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load from website..."),
301 parseSequenceString("Ctrl+Shift+O"),
303 {"DeckViewContainer/unloadDeckButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unload Deck"),
304 parseSequenceString("Ctrl+Alt+U"),
306 {"DeckViewContainer/readyStartButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Ready to Start"),
307 parseSequenceString("Ctrl+Shift+S"),
309 {"DeckViewContainer/sideboardLockButton",
310 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Sideboard Lock"),
311 parseSequenceString("Ctrl+Shift+B"),
313 {"DeckViewContainer/forceStartGameButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Force Start"),
316 {"Player/aCCMagenta", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (F)"),
319 {"Player/aRCMagenta", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (F)"),
322 {"Player/aSCMagenta", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (F)..."),
325 {"Player/aCCPurple", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (E)"),
328 {"Player/aRCPurple", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (E)"),
331 {"Player/aSCPurple", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (E)..."),
334 {"Player/aCCCyan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter(D)"),
337 {"Player/aRCCyan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (D)"),
340 {"Player/aSCCyan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (D)..."),
343 {"Player/aCCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (C)"),
344 parseSequenceString("Ctrl+>"),
346 {"Player/aRCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (C)"),
347 parseSequenceString("Ctrl+<"),
349 {"Player/aSCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (C)..."),
350 parseSequenceString("Ctrl+?"),
352 {"Player/aCCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (B)"),
353 parseSequenceString("Ctrl+."),
355 {"Player/aRCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (B)"),
356 parseSequenceString("Ctrl+,"),
358 {"Player/aSCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (B)..."),
359 parseSequenceString("Ctrl+/"),
361 {"Player/aCCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card Counter (A)"),
362 parseSequenceString("Alt+."),
364 {"Player/aRCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card Counter (A)"),
365 parseSequenceString("Alt+,"),
367 {"Player/aSCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Card Counters (A)..."),
368 parseSequenceString("Alt+/"),
370 {"Player/aInc", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Life Counter"),
371 parseSequenceString("F12"),
373 {"Player/aDec", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Life Counter"),
374 parseSequenceString("F11"),
376 {"Player/aSet", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Life Counters..."),
377 parseSequenceString("Ctrl+L"),
379 {"Player/aIncCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add White Counter"),
382 {"Player/aDecCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove White Counter"),
385 {"Player/aSetCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set White Counters..."),
388 {"Player/aIncCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Blue Counter"),
391 {"Player/aDecCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Blue Counter"),
394 {"Player/aSetCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Blue Counters..."),
397 {"Player/aIncCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Black Counter"),
400 {"Player/aDecCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Black Counter"),
403 {"Player/aSetCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Black Counters..."),
406 {"Player/aIncCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Red Counter"),
409 {"Player/aDecCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Red Counter"),
412 {"Player/aSetCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Red Counters..."),
415 {"Player/aIncCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Green Counter"),
418 {"Player/aDecCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Green Counter"),
421 {"Player/aSetCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Green Counters..."),
424 {"Player/aIncCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Colorless Counter"),
427 {"Player/aDecCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Colorless Counter"),
430 {"Player/aSetCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Colorless Counters..."),
433 {"Player/aIncCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Other Counter"),
434 parseSequenceString("Ctrl+]"),
436 {"Player/aDecCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Other Counter"),
437 parseSequenceString("Ctrl+["),
439 {"Player/aSetCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Other Counters..."),
440 parseSequenceString("Ctrl+\\"),
442 {"Player/aIncrementAllCardCounters",
443 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Increment all card counters"),
444 parseSequenceString("Ctrl+Shift+A"),
446 {"Player/aIncP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Power (+1/+0)"),
447 parseSequenceString("Ctrl++;Ctrl+="),
449 {"Player/aDecP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Power (-1/-0)"),
450 parseSequenceString("Ctrl+-"),
452 {"Player/aFlowP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Move Toughness to Power (+1/-1)"),
455 {"Player/aIncT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Toughness (+0/+1)"),
456 parseSequenceString("Alt++;Alt+="),
458 {"Player/aDecT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Toughness (-0/-1)"),
459 parseSequenceString("Alt+-"),
461 {"Player/aFlowT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Move Power to Toughness (-1/+1)"),
464 {"Player/aIncPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Power and Toughness (+1/+1)"),
465 parseSequenceString("Ctrl+Alt++;Ctrl+Alt+="),
467 {"Player/aDecPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Power and Toughness (-1/-1)"),
468 parseSequenceString("Ctrl+Alt+-"),
470 {"Player/aSetPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Power and Toughness..."),
471 parseSequenceString("Ctrl+P"),
473 {"Player/aResetPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Power and Toughness"),
474 parseSequenceString("Ctrl+Alt+0"),
476 {"Player/phase0", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Untap"),
479 {"Player/phase1",
480 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Upkeep"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
481 {"Player/phase2",
482 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw"), parseSequenceString("F6"), ShortcutGroup::Game_Phases)},
483 {"Player/phase3", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "First Main Phase"),
486 {"Player/phase4", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Start Combat"),
489 {"Player/phase5",
490 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Attack"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
491 {"Player/phase6",
492 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Block"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
493 {"Player/phase7",
494 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Damage"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
495 {"Player/phase8", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "End Combat"),
498 {"Player/phase9", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Second Main Phase"),
501 {"Player/phase10",
502 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "End"), parseSequenceString("F10"), ShortcutGroup::Game_Phases)},
503 {"Player/aNextPhase", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Phase"),
504 parseSequenceString("Ctrl+Space;Tab"),
506 {"Player/aNextPhaseAction", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Phase Action"),
507 parseSequenceString("Shift+Tab"),
509 {"Player/aNextTurn", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Turn"),
510 parseSequenceString("Ctrl+Return;Ctrl+Enter"),
512 {"Player/aHide", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hide Card in Reveal Window"),
513 parseSequenceString("Alt+H"),
515 {"Player/aTap", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Tap / Untap Card"),
518 {"Player/aUntapAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Untap All"),
519 parseSequenceString("Ctrl+U"),
521 {"Player/aDoesntUntap", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Skip Untapping"),
522 parseSequenceString("Alt+U"),
524 {"Player/aFlip", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Turn Card Over"),
525 parseSequenceString("Alt+F"),
527 {"Player/aPeek", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Peek Card"),
528 parseSequenceString("Alt+L"),
530 {"Player/aPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Play Card"),
533 {"Player/aPlayFacedown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Play Card, Face Down"),
536 {"Player/aAttach", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Attach Card..."),
537 parseSequenceString("Ctrl+Alt+A"),
539 {"Player/aUnattach", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unattach Card"),
540 parseSequenceString("Ctrl+Alt+U"),
542 {"Player/aClone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clone Card"),
543 parseSequenceString("Ctrl+J"),
545 {"Player/aCreateToken", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create Token..."),
546 parseSequenceString("Ctrl+T"),
548 {"Player/aCreateRelatedTokens", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create All Related Tokens"),
549 parseSequenceString("Ctrl+Shift+T"),
551 {"Player/aCreateAnotherToken", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create Another Token"),
552 parseSequenceString("Ctrl+G"),
554 {"Player/aSetAnnotation", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Annotation..."),
555 parseSequenceString("Alt+N"),
557 {"Player/aReduceLifeByPower", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reduce Life by Power"),
558 parseSequenceString("Ctrl+Shift+L"),
560 {"Player/aSelectAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Select All Cards in Zone"),
561 parseSequenceString("Ctrl+A"),
563 {"Player/aSelectRow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Select All Cards in Row"),
564 parseSequenceString("Ctrl+Shift+X"),
566 {"Player/aSelectColumn", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Select All Cards in Column"),
567 parseSequenceString("Ctrl+Shift+C"),
569 {"Player/aRevealToAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Selected Cards to All Players"),
572 {"Player/aMoveToBottomLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"),
573 parseSequenceString("Ctrl+B"),
575 {"Player/aMoveToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"),
578 {"Player/aMoveToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"),
579 parseSequenceString("Ctrl+Del"),
581 {"Player/aMoveToHand",
582 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hand"), parseSequenceString(""), ShortcutGroup::Move_selected)},
583 {"Player/aMoveToTopLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top of Library"),
586 {"Player/aMoveToTable", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield"),
589 {"Player/aViewHand",
590 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hand"), parseSequenceString(""), ShortcutGroup::View)},
591 {"Player/aViewGraveyard",
592 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"), parseSequenceString("F4"), ShortcutGroup::View)},
593 {"Player/aViewLibrary",
594 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Library"), parseSequenceString("F3"), ShortcutGroup::View)},
595 {"Player/aViewRfg",
596 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::View)},
597 {"Player/aViewSideboard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sideboard"),
598 parseSequenceString("Ctrl+F3"),
600 {"Player/aViewTopCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top Cards of Library"),
601 parseSequenceString("Ctrl+W"),
603 {"Player/aViewBottomCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom Cards of Library"),
604 parseSequenceString("Ctrl+Shift+W"),
606 {"Player/aCloseMostRecentZoneView", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Close Recent View"),
607 parseSequenceString("Esc"),
609 {"Player/aMoveTopToPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack"),
610 parseSequenceString("Ctrl+Y"),
612 {"Player/aMoveTopToPlayFaceDown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"),
613 parseSequenceString("Ctrl+Shift+E"),
615 {"Player/aMoveTopCardToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"),
616 parseSequenceString("Alt+Y"),
618 {"Player/aMoveTopCardsToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard (Multiple)"),
619 parseSequenceString("Alt+M"),
621 {"Player/aMoveTopCardsToGraveyardFaceDown",
622 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard (Multiple), Face Down"),
625 {"Player/aMoveTopCardToExile",
626 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::Move_top)},
627 {"Player/aMoveTopCardsToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile (Multiple)"),
630 {"Player/aMoveTopCardsToExileFaceDown",
631 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile (Multiple), Face Down"),
634 {"Player/aMoveTopCardsUntil", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack Until Found"),
635 parseSequenceString("Ctrl+Shift+Y"),
637 {"Player/aMoveTopCardToBottom", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"),
640 {"Player/aMoveBottomToPlay",
641 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack"), parseSequenceString(""), ShortcutGroup::Move_bottom)},
642 {"Player/aMoveBottomToPlayFaceDown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"),
645 {"Player/aMoveBottomCardToGrave", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"),
648 {"Player/aMoveBottomCardsToGrave", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard (Multiple)"),
651 {"Player/aMoveBottomCardsToGraveFaceDown",
652 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard (Multiple), Face Down"),
655 {"Player/aMoveBottomCardToExile",
656 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::Move_bottom)},
657 {"Player/aMoveBottomCardsToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile (Multiple)"),
660 {"Player/aMoveBottomCardsToExileFaceDown",
661 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile (Multiple), Face Down"),
664 {"Player/aMoveBottomCardToTop", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top of Library"),
667 {"Player/aDrawBottomCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Bottom Card"),
670 {"Player/aDrawBottomCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Multiple Cards from Bottom..."),
673 {"Player/aDrawArrow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Arrow..."),
674 parseSequenceString("Alt+A"),
676 {"Player/aRemoveLocalArrows", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Local Arrows"),
677 parseSequenceString("Ctrl+R"),
679 {"Player/aLeaveGame", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Leave Game"),
680 parseSequenceString("Ctrl+Q"),
682 {"Player/aConcede",
683 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Concede"), parseSequenceString("F2"), ShortcutGroup::Gameplay)},
684 {"Player/aRollDie", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Roll Dice..."),
685 parseSequenceString("Ctrl+I"),
687 {"Player/aFlipCoin", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Flip Coin"),
688 parseSequenceString("Ctrl+Shift+I"),
690 {"Player/aShuffle", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle Library"),
691 parseSequenceString("Ctrl+S"),
693 {"Player/aShuffleTopCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle Top Cards of Library"),
696 {"Player/aShuffleBottomCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle Bottom Cards of Library"),
699 {"Player/aMulligan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan"),
700 parseSequenceString("Ctrl+M"),
702 {"Player/aMulliganSame", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan (Same hand size)"),
703 parseSequenceString("Ctrl+Shift+M"),
705 {"Player/aMulliganMinusOne", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan (Hand size - 1)"),
706 parseSequenceString("Ctrl+Shift+Alt+M"),
708 {"Player/aDrawCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw a Card"),
709 parseSequenceString("Ctrl+D"),
711 {"Player/aDrawCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Multiple Cards..."),
712 parseSequenceString("Ctrl+E"),
714 {"Player/aUndoDraw", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Undo Draw"),
715 parseSequenceString("Ctrl+Shift+D"),
717 {"Player/aAlwaysRevealTopCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Always Reveal Top Card"),
718 parseSequenceString("Ctrl+N"),
720 {"Player/aAlwaysLookAtTopCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Always Look At Top Card"),
721 parseSequenceString("Ctrl+Shift+N"),
723 {"Player/aSortHandByName", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sort Hand by Name"),
726 {"Player/aSortHandByType", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sort Hand by Type"),
727 parseSequenceString("Ctrl+Shift+H"),
729 {"Player/aSortHandByManaValue", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sort Hand by Mana Value"),
732 {"Player/aRevealHandToAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Hand to All Players"),
735 {"Player/aRevealRandomHandCardToAll",
736 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Random Card to All Players"),
739 {"Player/aRotateViewCW", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate View Clockwise"),
742 {"Player/aRotateViewCCW", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate View Counterclockwise"),
745 {"Player/unfocusTextBox", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unfocus Text Box"),
746 parseSequenceString("Esc"),
748 {"Player/aFocusChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Focus Chat"),
749 parseSequenceString("Shift+Return"),
751 {"tab_room/aClearChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear Chat"),
752 parseSequenceString("F12"),
754 {"Player/aResetLayout", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Layout"),
757 {"DlgLoadDeckFromClipboard/refreshButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Refresh"),
760 {"Replays/aSkipForward", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Forward"),
761 parseSequenceString("Right"),
763 {"Replays/aSkipBackward", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Backward"),
764 parseSequenceString("Left"),
766 {"Replays/aSkipForwardBig", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Forward by a lot"),
767 parseSequenceString("Ctrl+Right"),
769 {"Replays/aSkipBackwardBig", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Skip Backward by a lot"),
770 parseSequenceString("Ctrl+Left"),
772 {"Replays/playButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Play/Pause"),
773 parseSequenceString("Space"),
775 {"Replays/fastForwardButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Fast Forward"),
776 parseSequenceString("Ctrl+P"),
778 {"Tabs/aTabDeckEditor",
779 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Deck Editor"), parseSequenceString(""), ShortcutGroup::Tabs)},
780 {"Tabs/aTabHome",
781 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Home"), parseSequenceString(""), ShortcutGroup::Tabs)},
782 {"Tabs/aTabVisualDeckStorage", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Visual Deck Storage"),
785 {"Tabs/aTabDeckStorage",
786 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Deck Storage"), parseSequenceString(""), ShortcutGroup::Tabs)},
787 {"Tabs/aTabReplays",
788 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Replays"), parseSequenceString(""), ShortcutGroup::Tabs)},
789 {"Tabs/aTabServer",
790 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Server"), parseSequenceString(""), ShortcutGroup::Tabs)},
791 {"Tabs/aTabAccount",
792 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Account"), parseSequenceString(""), ShortcutGroup::Tabs)},
793 {"Tabs/aTabAdmin", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Administration"),
796 {"Tabs/aTabLogs",
797 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Logs"), parseSequenceString(""), ShortcutGroup::Tabs)},
798 {"Tabs/aTabReport",
799 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Report Queue"), parseSequenceString(""), ShortcutGroup::Tabs)},
800 {"Tabs/aTabModeration",
801 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Moderation"), parseSequenceString(""), ShortcutGroup::Tabs)},
802 };
803};
804
805#endif // SHORTCUTSSETTINGS_H
Definition mana_curve_category_widget.h:11
Definition remote_connection_controller.h:20
Definition shortcuts_settings.h:27
static QString getGroupName(ShortcutGroup::Groups group)
Definition shortcuts_settings.h:53
Groups
Definition shortcuts_settings.h:30
@ Game_Lobby
Definition shortcuts_settings.h:33
@ Tabs
Definition shortcuts_settings.h:50
@ Card_Counters
Definition shortcuts_settings.h:34
@ Gameplay
Definition shortcuts_settings.h:43
@ Player_Counters
Definition shortcuts_settings.h:35
@ Move_selected
Definition shortcuts_settings.h:39
@ View
Definition shortcuts_settings.h:40
@ Move_top
Definition shortcuts_settings.h:41
@ Playing_Area
Definition shortcuts_settings.h:38
@ Hand
Definition shortcuts_settings.h:45
@ Game_window
Definition shortcuts_settings.h:47
@ Deck_Editor
Definition shortcuts_settings.h:32
@ Main_Window
Definition shortcuts_settings.h:31
@ Drawing
Definition shortcuts_settings.h:44
@ Replays
Definition shortcuts_settings.h:49
@ Power_Toughness
Definition shortcuts_settings.h:36
@ Chat_room
Definition shortcuts_settings.h:46
@ Game_Phases
Definition shortcuts_settings.h:37
@ Move_bottom
Definition shortcuts_settings.h:42
@ Load_deck
Definition shortcuts_settings.h:48
Definition shortcuts_settings.h:103
void setSequence(const QList &_sequence)
Definition shortcuts_settings.h:108
QString getGroupName() const
Definition shortcuts_settings.h:116
QString name
Definition shortcuts_settings.h:122
ShortcutKey(const QString &_name=QString(), QList _sequence=QList(), ShortcutGroup::Groups _group=ShortcutGroup::Main_Window)
Definition shortcuts_settings.cpp:13
QString getName() const
Definition shortcuts_settings.h:112
ShortcutGroup::Groups group
Definition shortcuts_settings.h:123
void resetAllShortcuts()
Definition shortcuts_settings.cpp:201
void migrateShortcuts()
Migrates legacy shortcut key names to current naming scheme.
Definition shortcuts_settings.cpp:78
ShortcutKey getDefaultShortcut(const QString &name) const
Definition shortcuts_settings.cpp:113
ShortcutsSettings(const QString &settingsFilePath, QObject *parent=nullptr)
Definition shortcuts_settings.cpp:18
bool isValid(const QString &name, const QString &sequences) const
Definition shortcuts_settings.cpp:243
QString settingsFilePath
Definition shortcuts_settings.h:161
QString getShortcutFriendlyName(const QString &shortcutName) const
Definition shortcuts_settings.cpp:149
bool isKeyAllowed(const QString &name, const QString &sequences) const
Definition shortcuts_settings.cpp:223
QList< QString > getAllShortcutKeys() const
Definition shortcuts_settings.h:138
void clearAllShortcuts()
Definition shortcuts_settings.cpp:211
QKeySequence getSingleShortcut(const QString &name) const
Definition shortcuts_settings.cpp:134
QStringList findOverlaps(const QString &name, const QString &sequences) const
Definition shortcuts_settings.cpp:254
QHash< QString, ShortcutKey > shortCuts
Definition shortcuts_settings.h:162
void setShortcuts(const QString &name, const QList< QKeySequence > &Sequence)
Definition shortcuts_settings.cpp:180
const QString custom
Definition shortcuts_settings.h:160
QString getDefaultShortcutString(const QString &name) const
Definition shortcuts_settings.cpp:139
const QHash< QString, ShortcutKey > defaultShortCuts
Definition shortcuts_settings.h:167
QString getShortcutString(const QString &name) const
Definition shortcuts_settings.cpp:144
ShortcutKey getShortcut(const QString &name) const
Definition shortcuts_settings.cpp:118
QString stringifySequence(const QList< QKeySequence > &Sequence) const
Definition shortcuts_settings.cpp:160
QList< QKeySequence > parseSequenceString(const QString &stringSequence) const
Definition shortcuts_settings.cpp:170
const QChar sep
Definition shortcuts_settings.h:159
Q_LOGGING_CATEGORY(CrashReportLog, "crash_report")