Rewrite ListItem context menu and add card profile selection
This moves the menu logic into C++ to make
ListItemBase less messy.
More importantly, it adds card profile selection so that you can, for instance,
quickly switch Bluetooth devices between A2DP and HFP profiles.
It also now uses radio buttons to denote mutually excusive options.
BUG: 372562 FIXED-IN: 5.22.0
Overall the menu should behave exactly the same as before with the addition of card profiles.
I've replicated all of the logic from the old menu but there might be something I overlooked, so please test, especially things I didn't test:
- Port selection
- HDMI stuff when plugged to a TV
- and please check some of the TODO/FIXME comments in the code :)
If there's 10 or less profiles (or no other options in the menu), they are shown in the menu directly, otherwise they're put into a "Profiles" submenu. The "off" profile is not offered here as to not let the user remove a device with no obvious way to get it back.