Non-QObject polymorphic interface with setShortcutsActive(), setShortcutsInactive(), and retranslateUi(). Uses regular multiple inheritance to avoid diamond inheritance with Qt's MOC.
All zone menus, SayMenu, and AbstractCounter implement this interface. PlayerMenu manages them via a managedComponents list with two template helpers (addManagedMenu/registerManagedComponent), replacing individual if-guarded lifecycle calls with a single polymorphic loop.
SayMenu now owns its shortcut and translation lifecycle instead of having PlayerMenu manage its title and shortcuts externally.
Counters are iterated via Player::getCounters() rather than managedComponents to avoid duplicating the authoritative owner's map.
* Sort *every* file into a doxygen group.
Took 7 hours 9 minutes
Took 18 seconds
Took 2 minutes
* Lint some ingroup definitions.
Took 10 minutes
Took 2 seconds
* Just include the groups in the Doxyfile in this commit.
Took 3 minutes
* Update some group comments so they link!
Took 14 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* Refactor player menus into helper classes.
Took 2 hours 6 minutes
Took 11 minutes
* Lint.
Took 6 minutes
Took 22 seconds
* Refactor card and move menu.
Took 1 hour 6 minutes
Took 36 seconds
Took 52 seconds
* Set active shortcuts, move player info stuff to card menu.
Took 25 minutes
Took 18 seconds
* Refactor say and utility menu.
Took 54 minutes
Took 2 minutes
Took 5 minutes
Took 11 minutes
* Rename folder.
Took 24 minutes
Took 6 minutes
* Refactor sideboard menu.
Took 26 minutes
* Remove unused variable in constructor.
Took 42 seconds
* Lint.
Took 11 minutes
* Nullptr check
Took 8 minutes
* Use localOrJudge check
Took 6 minutes
* Fix the build.
Took 7 minutes
Took 35 seconds
* PlayerList things.
Took 16 minutes
* Retranslate and set shortcuts for everything.
Took 10 minutes
* Correctly nullptr out sayMenu if not local
Took 3 minutes
* Don't check playerInfo in sbMenu shortcutsActive
Took 3 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>