feat(color): allow user to change key shortcut action; add Favorites quick menu (#6753)

Co-authored-by: elecpower <elecpower@users.noreply.github.com>
This commit is contained in:
philmoz
2025-11-19 18:40:23 +10:00
committed by GitHub
co-authored by elecpower
parent 5c96b1e15c
commit 72d290f89f
103 changed files with 2605 additions and 921 deletions
+138
View File
@@ -241,6 +241,8 @@ void GeneralSettings::init()
}
stickDeadZone = (IS_FLYSKY_NV14(board) || IS_FAMILY_PL18(board)) ? 2 : 0;
setDefaultFavorites();
setDefaultKeyShortcuts();
}
void GeneralSettings::setDefaultControlTypes(Board::Type board)
@@ -960,3 +962,139 @@ AbstractStaticItemModel * GeneralSettings::backlightModeItemModel()
mdl->loadItemList();
return mdl;
}
// static
QString GeneralSettings::quickMenuToString(int value, bool keys)
{
switch(value) {
case QM_NONE:
return tr("None");
case QM_OPEN_QUICK_MENU:
return tr("Open Quick Menu");
case QM_MANAGE_MODELS:
return tr("MANAGE MODELS");
// Model menu
case QM_MODEL_SETUP:
return tr("Model Setup - Model Settings");
case QM_MODEL_FLIGHTMODES:
return tr("Model Setup - Flight Modes");
case QM_MODEL_INPUTS:
return tr("Model Setup - Inputs");
case QM_MODEL_MIXES:
return tr("Model Setup - Mixes");
case QM_MODEL_OUTPUTS:
return tr("Model Setup - Outputs");
case QM_MODEL_CURVES:
return tr("Model Setup - Curves");
case QM_MODEL_GVARS:
return tr("Model Setup - Global Variables");
case QM_MODEL_LS:
return tr("Model Setup - Logical Switches");
case QM_MODEL_SF:
return tr("Model Setup - Special Functions");
case QM_MODEL_SCRIPTS:
return tr("Model Setup - Mixer Scripts");
case QM_MODEL_TELEMETRY:
return tr("Model Setup - Telemetry");
case QM_MODEL_NOTES:
return tr("Model Setup - Notes");
// Radio menu
case QM_RADIO_SETUP:
return tr("Radio Setup - Radio Settings");
case QM_RADIO_GF:
return tr("Radio Setup - Global Functions");
case QM_RADIO_TRAINER:
return tr("Radio Setup - Trainer");
case QM_RADIO_HARDWARE:
return tr("Radio Setup - Hardware");
case QM_RADIO_VERSION:
return tr("Radio Setup - About EdgeTX");
// UI menu
case QM_UI_THEMES:
return tr("UI Setup - Themes");
case QM_UI_SETUP:
return tr("UI Setup - Top Bar");
case QM_UI_SCREEN1:
return keys ? tr("UI Setup - Current Screen") : tr("UI Setup - Screen 1");
case QM_UI_SCREEN2:
return tr("UI Setup - Screen 2");
case QM_UI_SCREEN3:
return tr("UI Setup - Screen 3");
case QM_UI_SCREEN4:
return tr("UI Setup - Screen 4");
case QM_UI_SCREEN5:
return tr("UI Setup - Screen 5");
case QM_UI_SCREEN6:
return tr("UI Setup - Screen 6");
case QM_UI_SCREEN7:
return tr("UI Setup - Screen 7");
case QM_UI_SCREEN8:
return tr("UI Setup - Screen 8");
case QM_UI_SCREEN9:
return tr("UI Setup - Screen 9");
case QM_UI_SCREEN10:
return tr("UI Setup - Screen 10");
case QM_UI_ADD_PG:
return tr("UI Setup - Add Screen");
// Tools menu
case QM_TOOLS_APPS:
return tr("Tools - Apps");
case QM_TOOLS_STORAGE:
return tr("Tools - Storage");
case QM_TOOLS_RESET:
return tr("Tools - Flight Reset");
case QM_TOOLS_CHAN_MON:
return tr("Tools - Channel Monitor");
case QM_TOOLS_LS_MON:
return tr("Tools - Logical Switch Monitor");
case QM_TOOLS_STATS:
return tr("Tools - Statistics");
case QM_TOOLS_DEBUG:
return tr("Tools - Debug");
default:
return CPN_STR_UNKNOWN_ITEM;
}
}
// static
bool GeneralSettings::isQuickMenuAvailable(int value, bool keys)
{
if (keys) {
if (value >= QM_UI_SCREEN2 && value <= QM_UI_ADD_PG)
return false;
} else if (value == QM_OPEN_QUICK_MENU)
return false;
return true;
}
// static
AbstractStaticItemModel * GeneralSettings::quickMenuItemModel(bool keys)
{
AbstractStaticItemModel * mdl = new AbstractStaticItemModel();
mdl->setName(AIM_GS_QUICKMENU);
for (int i = 0; i < QM_COUNT; i++) {
if (isQuickMenuAvailable(i, keys))
mdl->appendToItemList(quickMenuToString(i, keys), i);
}
mdl->loadItemList();
return mdl;
}
void GeneralSettings::setDefaultFavorites()
{
for (int i = 0; i < MAX_QMFAVOURITES; i++)
qmFavorites[i] = QM_NONE;
}
void GeneralSettings::setDefaultKeyShortcuts()
{
keyShortcuts[0] = QM_MODEL_SETUP; // MDL short
keyShortcuts[1] = QM_OPEN_QUICK_MENU; // SYS short
keyShortcuts[2] = QM_UI_SCREEN1; // TELE short
keyShortcuts[3] = QM_MANAGE_MODELS; // MDL long
keyShortcuts[4] = QM_TOOLS_APPS; // SYS long
keyShortcuts[5] = QM_TOOLS_CHAN_MON; // TELE long
}