1 #ifndef SHORTCUTSSETTINGS_H 2 #define SHORTCUTSSETTINGS_H 3 4 #include <QApplication> 5 #include <QHash> 6 #include <QKeySequence> 7 #include <QObject> 8 #include <QSettings> 9 10 class ShortcutGroup 11 { 12 public: 13 enum Groups 14 { 15 Main_Window, 16 Deck_Editor, 17 Game_Lobby, 18 Card_Counters, 19 Player_Counters, 20 Power_Toughness, 21 Game_Phases, 22 Playing_Area, 23 Move_selected, 24 View, 25 Move_top, 26 Move_bottom, 27 Gameplay, 28 Drawing, 29 Chat_room, 30 Game_window, 31 Load_deck 32 }; 33 getGroupName(ShortcutGroup::Groups group)34 static QString getGroupName(ShortcutGroup::Groups group) 35 { 36 switch (group) { 37 case Main_Window: 38 return QApplication::translate("shortcutsTab", "Main Window"); 39 case Deck_Editor: 40 return QApplication::translate("shortcutsTab", "Deck Editor"); 41 case Game_Lobby: 42 return QApplication::translate("shortcutsTab", "Game Lobby"); 43 case Card_Counters: 44 return QApplication::translate("shortcutsTab", "Card Counters"); 45 case Player_Counters: 46 return QApplication::translate("shortcutsTab", "Player Counters"); 47 case Power_Toughness: 48 return QApplication::translate("shortcutsTab", "Power and Toughness"); 49 case Game_Phases: 50 return QApplication::translate("shortcutsTab", "Game Phases"); 51 case Playing_Area: 52 return QApplication::translate("shortcutsTab", "Playing Area"); 53 case Move_selected: 54 return QApplication::translate("shortcutsTab", "Move Selected Card"); 55 case View: 56 return QApplication::translate("shortcutsTab", "View"); 57 case Move_top: 58 return QApplication::translate("shortcutsTab", "Move Top Card"); 59 case Move_bottom: 60 return QApplication::translate("shortcutsTab", "Move Bottom Card"); 61 case Gameplay: 62 return QApplication::translate("shortcutsTab", "Gameplay"); 63 case Drawing: 64 return QApplication::translate("shortcutsTab", "Drawing"); 65 case Chat_room: 66 return QApplication::translate("shortcutsTab", "Chat Room"); 67 case Game_window: 68 return QApplication::translate("shortcutsTab", "Game Window"); 69 case Load_deck: 70 return QApplication::translate("shortcutsTab", "Load Deck from Clipboard"); 71 } 72 73 return {}; 74 } 75 }; 76 77 class ShortcutKey : public QList<QKeySequence> 78 { 79 public: 80 ShortcutKey(const QString &_name = QString(), 81 QList<QKeySequence> _sequence = QList<QKeySequence>(), 82 ShortcutGroup::Groups _group = ShortcutGroup::Main_Window); setSequence(QList<QKeySequence> _sequence)83 void setSequence(QList<QKeySequence> _sequence) 84 { 85 QList<QKeySequence>::operator=(_sequence); 86 }; getName()87 const QString getName() const 88 { 89 return QApplication::translate("shortcutsTab", name.toUtf8().data()); 90 }; getGroupName()91 const QString getGroupName() const 92 { 93 return ShortcutGroup::getGroupName(group); 94 }; 95 96 private: 97 QString name; 98 ShortcutGroup::Groups group; 99 }; 100 101 class ShortcutsSettings : public QObject 102 { 103 Q_OBJECT 104 public: 105 ShortcutsSettings(const QString &settingsFilePath, QObject *parent = nullptr); 106 107 ShortcutKey getDefaultShortcut(const QString &name) const; 108 ShortcutKey getShortcut(const QString &name) const; 109 QKeySequence getSingleShortcut(const QString &name) const; 110 QString getDefaultShortcutString(const QString &name) const; 111 QString getShortcutString(const QString &name) const; getAllShortcutKeys()112 QList<QString> getAllShortcutKeys() const 113 { 114 return shortCuts.keys(); 115 }; 116 117 void setShortcuts(const QString &name, const QList<QKeySequence> &Sequence); 118 void setShortcuts(const QString &name, const QKeySequence &Sequence); 119 void setShortcuts(const QString &name, const QString &Sequences); 120 121 bool isKeyAllowed(const QString &name, const QString &Sequences) const; 122 bool isValid(const QString &name, const QString &Sequences) const; 123 124 void resetAllShortcuts(); 125 void clearAllShortcuts(); 126 127 signals: 128 void shortCutChanged(); 129 130 private: 131 const QChar sep = ';'; 132 const QString custom = "Custom"; // name of custom group in shortCutsFile 133 QString settingsFilePath; 134 QHash<QString, ShortcutKey> shortCuts; 135 136 QString stringifySequence(const QList<QKeySequence> &Sequence) const; 137 QList<QKeySequence> parseSequenceString(const QString &stringSequence) const; 138 139 const QHash<QString, ShortcutKey> defaultShortCuts = { 140 {"MainWindow/aCheckCardUpdates", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Check for Card Updates..."), 141 parseSequenceString(""), 142 ShortcutGroup::Main_Window)}, 143 {"MainWindow/aConnect", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Connect..."), 144 parseSequenceString("Ctrl+L"), 145 ShortcutGroup::Main_Window)}, 146 {"MainWindow/aDeckEditor", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Deck Editor"), 147 parseSequenceString(""), 148 ShortcutGroup::Main_Window)}, 149 {"MainWindow/aDisconnect", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Disconnect"), 150 parseSequenceString(""), 151 ShortcutGroup::Main_Window)}, 152 {"MainWindow/aExit", 153 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exit"), parseSequenceString(""), ShortcutGroup::Main_Window)}, 154 {"MainWindow/aFullScreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Full screen"), 155 parseSequenceString("Ctrl+F"), 156 ShortcutGroup::Main_Window)}, 157 {"MainWindow/aRegister", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Register..."), 158 parseSequenceString(""), 159 ShortcutGroup::Main_Window)}, 160 {"MainWindow/aSettings", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Settings..."), 161 parseSequenceString(""), 162 ShortcutGroup::Main_Window)}, 163 {"MainWindow/aSinglePlayer", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Start a Local Game..."), 164 parseSequenceString(""), 165 ShortcutGroup::Main_Window)}, 166 {"MainWindow/aWatchReplay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Watch Replay..."), 167 parseSequenceString(""), 168 ShortcutGroup::Main_Window)}, 169 {"TabDeckEditor/aAnalyzeDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Analyze Deck"), 170 parseSequenceString(""), 171 ShortcutGroup::Deck_Editor)}, 172 {"TabDeckEditor/aClearFilterAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear All Filters"), 173 parseSequenceString(""), 174 ShortcutGroup::Deck_Editor)}, 175 {"TabDeckEditor/aClearFilterOne", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear Selected Filter"), 176 parseSequenceString(""), 177 ShortcutGroup::Deck_Editor)}, 178 {"TabDeckEditor/aClose", 179 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Close"), parseSequenceString(""), ShortcutGroup::Deck_Editor)}, 180 {"TabDeckEditor/aDecrement", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Card"), 181 parseSequenceString("-"), 182 ShortcutGroup::Deck_Editor)}, 183 {"TabDeckEditor/aManageSets", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Manage Sets..."), 184 parseSequenceString(""), 185 ShortcutGroup::Deck_Editor)}, 186 {"TabDeckEditor/aEditTokens", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Edit Custom Tokens..."), 187 parseSequenceString(""), 188 ShortcutGroup::Deck_Editor)}, 189 {"TabDeckEditor/aExportDeckDecklist", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Export Deck"), 190 parseSequenceString(""), 191 ShortcutGroup::Deck_Editor)}, 192 {"TabDeckEditor/aIncrement", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Card"), 193 parseSequenceString("+"), 194 ShortcutGroup::Deck_Editor)}, 195 {"TabDeckEditor/aLoadDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck..."), 196 parseSequenceString("Ctrl+O"), 197 ShortcutGroup::Deck_Editor)}, 198 {"TabDeckEditor/aLoadDeckFromClipboard", 199 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Deck from Clipboard..."), 200 parseSequenceString("Ctrl+Shift+V"), 201 ShortcutGroup::Deck_Editor)}, 202 {"TabDeckEditor/aNewDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "New Deck"), 203 parseSequenceString("Ctrl+N"), 204 ShortcutGroup::Deck_Editor)}, 205 {"TabDeckEditor/aOpenCustomFolder", 206 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Open Custom Pictures Folder"), 207 parseSequenceString(""), 208 ShortcutGroup::Deck_Editor)}, 209 {"TabDeckEditor/aPrintDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Print Deck..."), 210 parseSequenceString("Ctrl+P"), 211 ShortcutGroup::Deck_Editor)}, 212 {"TabDeckEditor/aRemoveCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Delete Card"), 213 parseSequenceString(""), 214 ShortcutGroup::Deck_Editor)}, 215 {"TabDeckEditor/aResetLayout", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Layout"), 216 parseSequenceString(""), 217 ShortcutGroup::Deck_Editor)}, 218 {"TabDeckEditor/aSaveDeck", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck"), 219 parseSequenceString("Ctrl+S"), 220 ShortcutGroup::Deck_Editor)}, 221 {"TabDeckEditor/aSaveDeckAs", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck as..."), 222 parseSequenceString("Ctrl+Shift+S"), 223 ShortcutGroup::Deck_Editor)}, 224 {"TabDeckEditor/aSaveDeckToClipboard", 225 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard, Annotated"), 226 parseSequenceString("Ctrl+Shift+C"), 227 ShortcutGroup::Deck_Editor)}, 228 {"TabDeckEditor/aSaveDeckToClipboardRaw", 229 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Save Deck to Clipboard"), 230 parseSequenceString("Ctrl+Shift+R"), 231 ShortcutGroup::Deck_Editor)}, 232 {"DeckViewContainer/loadLocalButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Local Deck..."), 233 parseSequenceString("Ctrl+O"), 234 ShortcutGroup::Game_Lobby)}, 235 {"DeckViewContainer/loadRemoteButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Load Remote Deck..."), 236 parseSequenceString("Ctrl+Alt+O"), 237 ShortcutGroup::Game_Lobby)}, 238 {"DeckViewContainer/readyStartButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Ready to Start"), 239 parseSequenceString("Ctrl+Shift+S"), 240 ShortcutGroup::Game_Lobby)}, 241 {"DeckViewContainer/sideboardLockButton", 242 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Sideboard Lock"), 243 parseSequenceString("Ctrl+B"), 244 ShortcutGroup::Game_Lobby)}, 245 {"Player/aCCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Green Counter"), 246 parseSequenceString(""), 247 ShortcutGroup::Card_Counters)}, 248 {"Player/aRCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Green Counter"), 249 parseSequenceString(""), 250 ShortcutGroup::Card_Counters)}, 251 {"Player/aSCGreen", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Green Counters..."), 252 parseSequenceString(""), 253 ShortcutGroup::Card_Counters)}, 254 {"Player/aCCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Yellow Counter"), 255 parseSequenceString(""), 256 ShortcutGroup::Card_Counters)}, 257 {"Player/aRCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Yellow Counter"), 258 parseSequenceString(""), 259 ShortcutGroup::Card_Counters)}, 260 {"Player/aSCYellow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Yellow Counters..."), 261 parseSequenceString(""), 262 ShortcutGroup::Card_Counters)}, 263 {"Player/aCCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Red Counter"), 264 parseSequenceString(""), 265 ShortcutGroup::Card_Counters)}, 266 {"Player/aRCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Red Counter"), 267 parseSequenceString(""), 268 ShortcutGroup::Card_Counters)}, 269 {"Player/aSCRed", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Red Counters..."), 270 parseSequenceString(""), 271 ShortcutGroup::Card_Counters)}, 272 {"Player/aInc", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Life Counter"), 273 parseSequenceString("F12"), 274 ShortcutGroup::Player_Counters)}, 275 {"Player/aDec", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Life Counter"), 276 parseSequenceString("F11"), 277 ShortcutGroup::Player_Counters)}, 278 {"Player/aSet", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Life Counters..."), 279 parseSequenceString("Ctrl+L"), 280 ShortcutGroup::Player_Counters)}, 281 {"Player/aIncCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add White Counter"), 282 parseSequenceString(""), 283 ShortcutGroup::Player_Counters)}, 284 {"Player/aDecCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove White Counter"), 285 parseSequenceString(""), 286 ShortcutGroup::Player_Counters)}, 287 {"Player/aSetCounter_w", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set White Counters..."), 288 parseSequenceString(""), 289 ShortcutGroup::Player_Counters)}, 290 {"Player/aIncCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Blue Counter"), 291 parseSequenceString(""), 292 ShortcutGroup::Player_Counters)}, 293 {"Player/aDecCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Blue Counter"), 294 parseSequenceString(""), 295 ShortcutGroup::Player_Counters)}, 296 {"Player/aSetCounter_u", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Blue Counters..."), 297 parseSequenceString(""), 298 ShortcutGroup::Player_Counters)}, 299 {"Player/aIncCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Black Counter"), 300 parseSequenceString(""), 301 ShortcutGroup::Player_Counters)}, 302 {"Player/aDecCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Black Counter"), 303 parseSequenceString(""), 304 ShortcutGroup::Player_Counters)}, 305 {"Player/aSetCounter_b", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Black Counters..."), 306 parseSequenceString(""), 307 ShortcutGroup::Player_Counters)}, 308 {"Player/aIncCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Red Counter"), 309 parseSequenceString(""), 310 ShortcutGroup::Player_Counters)}, 311 {"Player/aDecCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Red Counter"), 312 parseSequenceString(""), 313 ShortcutGroup::Player_Counters)}, 314 {"Player/aSetCounter_r", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Red Counters..."), 315 parseSequenceString(""), 316 ShortcutGroup::Player_Counters)}, 317 {"Player/aIncCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Green Counter"), 318 parseSequenceString(""), 319 ShortcutGroup::Player_Counters)}, 320 {"Player/aDecCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Green Counter"), 321 parseSequenceString(""), 322 ShortcutGroup::Player_Counters)}, 323 {"Player/aSetCounter_g", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Green Counters..."), 324 parseSequenceString(""), 325 ShortcutGroup::Player_Counters)}, 326 {"Player/aIncCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Colorless Counter"), 327 parseSequenceString(""), 328 ShortcutGroup::Player_Counters)}, 329 {"Player/aDecCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Colorless Counter"), 330 parseSequenceString(""), 331 ShortcutGroup::Player_Counters)}, 332 {"Player/aSetCounter_x", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Colorless Counters..."), 333 parseSequenceString(""), 334 ShortcutGroup::Player_Counters)}, 335 {"Player/aIncCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Other Counter"), 336 parseSequenceString(""), 337 ShortcutGroup::Player_Counters)}, 338 {"Player/aDecCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Other Counter"), 339 parseSequenceString(""), 340 ShortcutGroup::Player_Counters)}, 341 {"Player/aSetCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Other Counters..."), 342 parseSequenceString(""), 343 ShortcutGroup::Player_Counters)}, 344 {"Player/aIncP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Power (+1/+0)"), 345 parseSequenceString("Ctrl++"), 346 ShortcutGroup::Power_Toughness)}, 347 {"Player/aDecP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Power (-1/-0)"), 348 parseSequenceString("Ctrl+-"), 349 ShortcutGroup::Power_Toughness)}, 350 {"Player/aFlowP", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Move Toughness to Power (+1/-1)"), 351 parseSequenceString(""), 352 ShortcutGroup::Power_Toughness)}, 353 {"Player/aIncT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Toughness (+0/+1)"), 354 parseSequenceString("Alt++"), 355 ShortcutGroup::Power_Toughness)}, 356 {"Player/aDecT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Toughness (-0/-1)"), 357 parseSequenceString("Alt+-"), 358 ShortcutGroup::Power_Toughness)}, 359 {"Player/aFlowT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Move Power to Toughness (-1/+1)"), 360 parseSequenceString(""), 361 ShortcutGroup::Power_Toughness)}, 362 {"Player/aIncPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Power and Toughness (+1/+1)"), 363 parseSequenceString("Ctrl+Alt++"), 364 ShortcutGroup::Power_Toughness)}, 365 {"Player/aDecPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Power and Toughness (-1/-1)"), 366 parseSequenceString("Ctrl+Alt+-"), 367 ShortcutGroup::Power_Toughness)}, 368 {"Player/aSetPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Power and Toughness..."), 369 parseSequenceString("Ctrl+P"), 370 ShortcutGroup::Power_Toughness)}, 371 {"Player/aResetPT", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Power and Toughness"), 372 parseSequenceString("Ctrl+Alt+0"), 373 ShortcutGroup::Power_Toughness)}, 374 {"Player/phase0", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Untap"), 375 parseSequenceString("F5"), 376 ShortcutGroup::Game_Phases)}, 377 {"Player/phase1", 378 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Upkeep"), parseSequenceString(""), ShortcutGroup::Game_Phases)}, 379 {"Player/phase2", 380 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw"), parseSequenceString("F6"), ShortcutGroup::Game_Phases)}, 381 {"Player/phase3", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "First Main Phase"), 382 parseSequenceString("F7"), 383 ShortcutGroup::Game_Phases)}, 384 {"Player/phase4", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Start Combat"), 385 parseSequenceString("F8"), 386 ShortcutGroup::Game_Phases)}, 387 {"Player/phase5", 388 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Attack"), parseSequenceString(""), ShortcutGroup::Game_Phases)}, 389 {"Player/phase6", 390 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Block"), parseSequenceString(""), ShortcutGroup::Game_Phases)}, 391 {"Player/phase7", 392 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Damage"), parseSequenceString(""), ShortcutGroup::Game_Phases)}, 393 {"Player/phase8", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "End Combat"), 394 parseSequenceString(""), 395 ShortcutGroup::Game_Phases)}, 396 {"Player/phase9", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Second Main Phase"), 397 parseSequenceString("F9"), 398 ShortcutGroup::Game_Phases)}, 399 {"Player/phase10", 400 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "End"), parseSequenceString("F10"), ShortcutGroup::Game_Phases)}, 401 {"Player/aNextPhase", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Phase"), 402 parseSequenceString("Ctrl+Space;Tab"), 403 ShortcutGroup::Game_Phases)}, 404 {"Player/aNextPhaseAction", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Phase Action"), 405 parseSequenceString("Shift+Tab"), 406 ShortcutGroup::Game_Phases)}, 407 {"Player/aNextTurn", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Next Turn"), 408 parseSequenceString("Ctrl+Return;Ctrl+Enter"), 409 ShortcutGroup::Game_Phases)}, 410 {"Player/aTap", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Tap / Untap Card"), 411 parseSequenceString(""), 412 ShortcutGroup::Playing_Area)}, 413 {"Player/aUntapAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Untap All"), 414 parseSequenceString("Ctrl+U"), 415 ShortcutGroup::Playing_Area)}, 416 {"Player/aDoesntUntap", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Untap"), 417 parseSequenceString(""), 418 ShortcutGroup::Playing_Area)}, 419 {"Player/aFlip", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Turn Card Over"), 420 parseSequenceString(""), 421 ShortcutGroup::Playing_Area)}, 422 {"Player/aPeek", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Peek Card"), 423 parseSequenceString(""), 424 ShortcutGroup::Playing_Area)}, 425 {"Player/aPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Play Card"), 426 parseSequenceString(""), 427 ShortcutGroup::Playing_Area)}, 428 {"Player/aAttach", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Attach Card..."), 429 parseSequenceString("Ctrl+Alt+A"), 430 ShortcutGroup::Playing_Area)}, 431 {"Player/aUnattach", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unattach Card"), 432 parseSequenceString(""), 433 ShortcutGroup::Playing_Area)}, 434 {"Player/aClone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clone Card"), 435 parseSequenceString("Ctrl+J"), 436 ShortcutGroup::Playing_Area)}, 437 {"Player/aCreateToken", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create Token..."), 438 parseSequenceString("Ctrl+T"), 439 ShortcutGroup::Playing_Area)}, 440 {"Player/aCreateRelatedTokens", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create All Related Tokens"), 441 parseSequenceString("Ctrl+Shift+T"), 442 ShortcutGroup::Playing_Area)}, 443 {"Player/aCreateAnotherToken", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Create Another Token"), 444 parseSequenceString("Ctrl+G"), 445 ShortcutGroup::Playing_Area)}, 446 {"Player/aSetAnnotation", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Annotation..."), 447 parseSequenceString(""), 448 ShortcutGroup::Playing_Area)}, 449 {"Player/aMoveToBottomLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"), 450 parseSequenceString(""), 451 ShortcutGroup::Move_selected)}, 452 {"Player/aMoveToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), 453 parseSequenceString(""), 454 ShortcutGroup::Move_selected)}, 455 {"Player/aMoveToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"), 456 parseSequenceString("Ctrl+Del"), 457 ShortcutGroup::Move_selected)}, 458 {"Player/aMoveToHand", 459 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hand"), parseSequenceString(""), ShortcutGroup::Move_selected)}, 460 {"Player/aMoveToTopLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top of Library"), 461 parseSequenceString(""), 462 ShortcutGroup::Move_selected)}, 463 {"Player/aPlayFacedown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"), 464 parseSequenceString(""), 465 ShortcutGroup::Move_selected)}, 466 {"Player/aPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield"), 467 parseSequenceString(""), 468 ShortcutGroup::Move_selected)}, 469 {"Player/aViewHand", 470 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Hand"), parseSequenceString(""), ShortcutGroup::View)}, 471 {"Player/aViewGraveyard", 472 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"), parseSequenceString("F4"), ShortcutGroup::View)}, 473 {"Player/aViewLibrary", 474 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Library"), parseSequenceString("F3"), ShortcutGroup::View)}, 475 {"Player/aViewRfg", 476 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::View)}, 477 {"Player/aViewSideboard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Sideboard"), 478 parseSequenceString("Ctrl+F3"), 479 ShortcutGroup::View)}, 480 {"Player/aViewTopCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top Cards of Library"), 481 parseSequenceString("Ctrl+W"), 482 ShortcutGroup::View)}, 483 {"Player/aCloseMostRecentZoneView", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Close Recent View"), 484 parseSequenceString("Esc"), 485 ShortcutGroup::View)}, 486 {"Player/aMoveTopToPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack"), 487 parseSequenceString("Ctrl+Y"), 488 ShortcutGroup::Move_top)}, 489 {"Player/aMoveTopToPlayFaceDown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"), 490 parseSequenceString("Ctrl+Shift+E"), 491 ShortcutGroup::Move_top)}, 492 {"Player/aMoveTopCardToGraveyard", 493 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"), parseSequenceString(""), ShortcutGroup::Move_top)}, 494 {"Player/aMoveTopCardsToGraveyard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard (Multiple)"), 495 parseSequenceString("Ctrl+Shift+M"), 496 ShortcutGroup::Move_top)}, 497 {"Player/aMoveTopCardToExile", 498 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::Move_top)}, 499 {"Player/aMoveTopCardsToExile", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Exile (Multiple)"), 500 parseSequenceString(""), 501 ShortcutGroup::Move_top)}, 502 {"Player/aMoveTopCardToBottom", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"), 503 parseSequenceString(""), 504 ShortcutGroup::Move_top)}, 505 {"Player/aMoveBottomCardToGrave", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"), 506 parseSequenceString(""), 507 ShortcutGroup::Move_bottom)}, 508 {"Player/aDrawArrow", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Arrow..."), 509 parseSequenceString(""), 510 ShortcutGroup::Gameplay)}, 511 {"Player/aRemoveLocalArrows", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Local Arrows"), 512 parseSequenceString("Ctrl+R"), 513 ShortcutGroup::Gameplay)}, 514 {"Player/aLeaveGame", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Leave Game"), 515 parseSequenceString("Ctrl+Q"), 516 ShortcutGroup::Gameplay)}, 517 {"Player/aConcede", 518 ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Concede"), parseSequenceString("F2"), ShortcutGroup::Gameplay)}, 519 {"Player/aRollDie", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Roll Dice..."), 520 parseSequenceString("Ctrl+I"), 521 ShortcutGroup::Gameplay)}, 522 {"Player/aShuffle", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle Library"), 523 parseSequenceString("Ctrl+S"), 524 ShortcutGroup::Gameplay)}, 525 {"Player/aMulligan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan"), 526 parseSequenceString("Ctrl+M"), 527 ShortcutGroup::Drawing)}, 528 {"Player/aDrawCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw a Card"), 529 parseSequenceString("Ctrl+D"), 530 ShortcutGroup::Drawing)}, 531 {"Player/aDrawCards", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw Multiple Cards..."), 532 parseSequenceString("Ctrl+E"), 533 ShortcutGroup::Drawing)}, 534 {"Player/aUndoDraw", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Undo Draw"), 535 parseSequenceString("Ctrl+Shift+D"), 536 ShortcutGroup::Drawing)}, 537 {"Player/aAlwaysRevealTopCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Always Reveal Top Card"), 538 parseSequenceString("Ctrl+N"), 539 ShortcutGroup::Drawing)}, 540 {"Player/aRotateViewCW", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate View Clockwise"), 541 parseSequenceString(""), 542 ShortcutGroup::Gameplay)}, 543 {"Player/aRotateViewCCW", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate View Counterclockwise"), 544 parseSequenceString(""), 545 ShortcutGroup::Gameplay)}, 546 {"Textbox/unfocusTextBox", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Unfocus Text Box"), 547 parseSequenceString("Esc"), 548 ShortcutGroup::Chat_room)}, 549 {"tab_game/aFocusChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Focus Chat"), 550 parseSequenceString("Shift+Return"), 551 ShortcutGroup::Chat_room)}, 552 {"tab_room/aClearChat", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Clear Chat"), 553 parseSequenceString("F12"), 554 ShortcutGroup::Chat_room)}, 555 {"Player/aResetLayout", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Layout"), 556 parseSequenceString(""), 557 ShortcutGroup::Game_window)}, 558 {"DlgLoadDeckFromClipboard/refreshButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Refresh"), 559 parseSequenceString("F5"), 560 ShortcutGroup::Load_deck)}}; 561 }; 562 563 #endif // SHORTCUTSSETTINGS_H 564