From b6debf27ecf35f5957bc23092871ce8fd14110a8 Mon Sep 17 00:00:00 2001 From: bsongis Date: Thu, 22 Nov 2012 11:20:15 +0000 Subject: [PATCH] [stock] Flash saving [X9D] Navigation continued --- src/model_menus.cpp | 94 ++++++++++++++++++++++--------------------- src/translations/en.h | 8 ++-- 2 files changed, 52 insertions(+), 50 deletions(-) diff --git a/src/model_menus.cpp b/src/model_menus.cpp index f5c52df74..20a89b93f 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -1895,21 +1895,16 @@ static uint8_t s_copySrcCh; #define EXPO_LINE_SELECT_POS 18 #endif +#if defined(PCBX9D) +#define KEY_MIX_MOVE_UP KEY_MINUS +#define KEY_MIX_MOVE_DOWN KEY_PLUS +#else +#define KEY_MIX_MOVE_UP KEY_UP +#define KEY_MIX_MOVE_DOWN KEY_DOWN +#endif + void menuModelExpoMix(uint8_t expo, uint8_t event) { - uint8_t key = (event & 0x1f); - - if (s_copyMode && key==KEY_EXIT) - event -= KEY_EXIT; - - TITLE(expo ? STR_MENUDREXPO : STR_MIXER); - lcd_outdezAtt(lcdLastPos+2*FW+FW/2, 0, getExpoMixCount(expo)); - lcd_puts(lcdLastPos, 0, expo ? STR_MAX(MAX_EXPOS) : STR_MAX(MAX_MIXERS)); - SIMPLE_MENU_NOTITLE(menuTabModel, expo ? e_ExposAll : e_MixAll, s_maxLines); - - if (s_copyMode && key==KEY_EXIT) - event += KEY_EXIT; - #if defined(ROTARY_ENCODERS) int8_t sub = m_posVert; #else @@ -1919,6 +1914,8 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) if (s_editMode > 0) s_editMode = 0; + uint8_t chn = (expo ? expoaddress(s_currIdx)->chn+1 : mixaddress(s_currIdx)->destCh+1); + switch(event) { case EVT_ENTRY: @@ -1929,36 +1926,36 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) case EVT_KEY_LONG(KEY_EXIT): if (s_copyMode && s_copyTgtOfs == 0) { deleteExpoMix(expo, s_currIdx); + killEvents(event); + event = 0; } - killEvents(event); // no break case EVT_KEY_BREAK(KEY_EXIT): - if (s_copyTgtOfs) { - // cancel the current copy / move operation - if (s_copyMode == COPY_MODE) { - deleteExpoMix(expo, s_currIdx); + if (s_copyMode) { + if (s_copyTgtOfs) { + // cancel the current copy / move operation + if (s_copyMode == COPY_MODE) { + deleteExpoMix(expo, s_currIdx); + } + else { + do { + swapExpoMix(expo, s_currIdx, s_copyTgtOfs > 0); + s_copyTgtOfs += (s_copyTgtOfs < 0 ? +1 : -1); + } while (s_copyTgtOfs != 0); + STORE_MODELVARS; + } + m_posVert = s_copySrcRow; + s_copyTgtOfs = 0; } - else { - do { - swapExpoMix(expo, s_currIdx, s_copyTgtOfs > 0); - if (s_copyTgtOfs < 0) - s_copyTgtOfs++; - else - s_copyTgtOfs--; - } while (s_copyTgtOfs != 0); - STORE_MODELVARS; - } - sub = m_posVert = s_copySrcRow; + s_copyMode = 0; + event = 0; } - s_copyMode = 0; - s_copyTgtOfs = 0; break; case EVT_KEY_BREAK(KEY_ENTER): - if (sub == 0) break; - if (!s_currCh || (s_copyMode && !s_copyTgtOfs)) { + if (sub != 0 && (!s_currCh || (s_copyMode && !s_copyTgtOfs))) { s_copyMode = (s_copyMode == COPY_MODE ? MOVE_MODE : COPY_MODE); s_copySrcIdx = s_currIdx; - s_copySrcCh = expo ? expoaddress(s_currIdx)->chn+1 : mixaddress(s_currIdx)->destCh+1; + s_copySrcCh = chn; s_copySrcRow = sub; break; } @@ -1971,14 +1968,12 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) // no break #endif case EVT_KEY_LONG(KEY_ENTER): - if (sub == 0) - break; killEvents(event); if (s_copyTgtOfs) { s_copyMode = 0; s_copyTgtOfs = 0; } - else { + else if (sub != 0) { if (s_copyMode) s_currCh = 0; if (s_currCh) { if (reachExpoMixCountLimit(expo)) break; @@ -1993,7 +1988,7 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) case EVT_KEY_LONG(KEY_RIGHT): if (s_copyMode && !s_copyTgtOfs) { if (reachExpoMixCountLimit(expo)) break; - s_currCh = (expo ? expoaddress(s_currIdx)->chn+1 : mixaddress(s_currIdx)->destCh+1); + s_currCh = chn; if (event == EVT_KEY_LONG(KEY_RIGHT)) s_currIdx++; insertExpoMix(expo, s_currIdx); pushMenu(expo ? menuModelExpoOne : menuModelMixOne); @@ -2002,28 +1997,29 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) return; } break; - case EVT_KEY_REPT(KEY_UP): - case EVT_KEY_FIRST(KEY_UP): - case EVT_KEY_REPT(KEY_DOWN): - case EVT_KEY_FIRST(KEY_DOWN): + case EVT_KEY_FIRST(KEY_MIX_MOVE_UP): + case EVT_KEY_REPT(KEY_MIX_MOVE_UP): + case EVT_KEY_FIRST(KEY_MIX_MOVE_DOWN): + case EVT_KEY_REPT(KEY_MIX_MOVE_DOWN): if (s_copyMode) { - uint8_t next_ofs = (key == KEY_UP ? s_copyTgtOfs - 1 : s_copyTgtOfs + 1); + uint8_t key = (event & 0x1f); + uint8_t next_ofs = (key == KEY_MIX_MOVE_UP ? s_copyTgtOfs - 1 : s_copyTgtOfs + 1); if (s_copyTgtOfs==0 && s_copyMode==COPY_MODE) { // insert a mix on the same channel (just above / just below) if (reachExpoMixCountLimit(expo)) break; copyExpoMix(expo, s_currIdx); - if (key==KEY_DOWN) s_currIdx++; + if (key==KEY_MIX_MOVE_DOWN) s_currIdx++; else if (sub-s_pgOfs >= 6) s_pgOfs++; } else if (next_ofs==0 && s_copyMode==COPY_MODE) { // delete the mix deleteExpoMix(expo, s_currIdx); - if (key==KEY_UP) s_currIdx--; + if (key==KEY_MIX_MOVE_UP) s_currIdx--; } else { // only swap the mix with its neighbor - if (!swapExpoMix(expo, s_currIdx, key==KEY_UP)) break; + if (!swapExpoMix(expo, s_currIdx, key==KEY_MIX_MOVE_UP)) break; STORE_MODELVARS; } @@ -2032,6 +2028,12 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) break; } + TITLE(expo ? STR_MENUDREXPO : STR_MIXER); + lcd_outdezAtt(lcdLastPos+2*FW+FW/2, 0, getExpoMixCount(expo)); + lcd_puts(lcdLastPos, 0, expo ? STR_MAX(MAX_EXPOS) : STR_MAX(MAX_MIXERS)); + SIMPLE_MENU_NOTITLE(menuTabModel, expo ? e_ExposAll : e_MixAll, s_maxLines); + + sub = m_posVert; s_currCh = 0; uint8_t cur = 1; uint8_t i = 0; diff --git a/src/translations/en.h b/src/translations/en.h index 14bd3f973..bb4fd2c04 100644 --- a/src/translations/en.h +++ b/src/translations/en.h @@ -356,11 +356,11 @@ #define TR_FP "FP" #define TR_EEPROMLOWMEM "EEPROM low mem" #define TR_ALERT "\016ALERT" -#define TR_PRESSANYKEYTOSKIP "Press any key to skip" -#define TR_THROTTLENOTIDLE "Throttle not idle" -#define TR_ALARMSDISABLED "Alarms Disabled" +#define TR_PRESSANYKEYTOSKIP CENTER"Press any key to skip" +#define TR_THROTTLENOTIDLE CENTER"Throttle not idle" +#define TR_ALARMSDISABLED CENTER"Alarms Disabled" #define TR_PRESSANYKEY "\010Press any Key" -#define TR_BADEEPROMDATA "Bad EEprom Data" +#define TR_BADEEPROMDATA CENTER"Bad EEprom Data" #define TR_EEPROMFORMATTING "Formatting EEPROM" #define TR_EEPROMOVERFLOW "EEPROM overflow" #define TR_MENURADIOSETUP "RADIO SETUP"