mirror of
https://github.com/opentx/opentx.git
synced 2025-07-15 20:35:17 +03:00
122 lines
No EOL
3.5 KiB
C++
122 lines
No EOL
3.5 KiB
C++
/*
|
|
* Copyright (C) OpenTX
|
|
*
|
|
* Based on code named
|
|
* th9x - http://code.google.com/p/th9x
|
|
* er9x - http://code.google.com/p/er9x
|
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
|
*
|
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include "opentx.h"
|
|
|
|
#if defined(AUTOSWITCH)
|
|
swsrc_t checkIncDecMovedSwitch(swsrc_t val)
|
|
{
|
|
if (s_editMode>0) {
|
|
swsrc_t swtch = getMovedSwitch();
|
|
if (swtch) {
|
|
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
|
div_t info = switchInfo(swtch);
|
|
if (IS_CONFIG_TOGGLE(info.quot)) {
|
|
if (info.rem != 0) {
|
|
val = (val == swtch ? swtch-2 : swtch);
|
|
}
|
|
}
|
|
else {
|
|
val = swtch;
|
|
}
|
|
#else
|
|
if (IS_CONFIG_TOGGLE(swtch) && swtch==val) {
|
|
val = -val;
|
|
}
|
|
else {
|
|
val = swtch;
|
|
}
|
|
#endif
|
|
}
|
|
}
|
|
return val;
|
|
}
|
|
#endif
|
|
|
|
int checkIncDecSelection = 0;
|
|
|
|
void repeatLastCursorMove(event_t event)
|
|
{
|
|
if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) {
|
|
putEvent(event);
|
|
}
|
|
else {
|
|
menuHorizontalPosition = 0;
|
|
}
|
|
}
|
|
|
|
void onSourceLongEnterPress(const char * result)
|
|
{
|
|
if (result == STR_MENU_INPUTS)
|
|
checkIncDecSelection = getFirstAvailable(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable)+1;
|
|
#if defined(LUA_MODEL_SCRIPTS)
|
|
else if (result == STR_MENU_LUA)
|
|
checkIncDecSelection = getFirstAvailable(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable);
|
|
#endif
|
|
else if (result == STR_MENU_STICKS)
|
|
checkIncDecSelection = MIXSRC_FIRST_STICK;
|
|
else if (result == STR_MENU_POTS)
|
|
checkIncDecSelection = MIXSRC_FIRST_POT;
|
|
else if (result == STR_MENU_MAX)
|
|
checkIncDecSelection = MIXSRC_MAX;
|
|
else if (result == STR_MENU_HELI)
|
|
checkIncDecSelection = MIXSRC_FIRST_HELI;
|
|
else if (result == STR_MENU_TRIMS)
|
|
checkIncDecSelection = MIXSRC_FIRST_TRIM;
|
|
else if (result == STR_MENU_SWITCHES)
|
|
checkIncDecSelection = MIXSRC_FIRST_SWITCH;
|
|
else if (result == STR_MENU_TRAINER)
|
|
checkIncDecSelection = MIXSRC_FIRST_TRAINER;
|
|
else if (result == STR_MENU_CHANNELS)
|
|
checkIncDecSelection = getFirstAvailable(MIXSRC_FIRST_CH, MIXSRC_LAST_CH, isSourceAvailable);
|
|
else if (result == STR_MENU_GVARS)
|
|
checkIncDecSelection = MIXSRC_FIRST_GVAR;
|
|
else if (result == STR_MENU_TELEMETRY) {
|
|
for (int i = 0; i < MAX_TELEMETRY_SENSORS; i++) {
|
|
TelemetrySensor * sensor = & g_model.telemetrySensors[i];
|
|
if (sensor->isAvailable()) {
|
|
checkIncDecSelection = MIXSRC_FIRST_TELEM + 3*i;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(NAVIGATION_HORUS)
|
|
bool check_simple(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, int rowcount)
|
|
{
|
|
return check(event, curr, menuTab, menuTabSize, nullptr, 0, rowcount);
|
|
}
|
|
|
|
bool check_submenu_simple(event_t event, uint8_t rowcount)
|
|
{
|
|
return check_simple(event, 0, nullptr, 0, rowcount);
|
|
}
|
|
#else
|
|
void check_simple(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, vertpos_t rowcount)
|
|
{
|
|
check(event, curr, menuTab, menuTabSize, nullptr, 0, rowcount);
|
|
}
|
|
|
|
void check_submenu_simple(event_t event, uint8_t rowcount)
|
|
{
|
|
check_simple(event, 0, nullptr, 0, rowcount);
|
|
}
|
|
#endif |