BIND menu added (still not tested)
This commit is contained in:
@@ -1115,12 +1115,19 @@ void menuModelSetup(event_t event)
|
||||
if (attr) {
|
||||
if (menuHorizontalPosition == 0) {
|
||||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND;
|
||||
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_START;
|
||||
reusableBuffer.modelsetup.pxx2_bind_receiver_index = receiverIdx;
|
||||
reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count = 0;
|
||||
moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND;
|
||||
}
|
||||
if (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_BIND) {
|
||||
s_editMode = 1;
|
||||
// TODO the menu here
|
||||
if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == BIND_RX_ID_RECEIVED) {
|
||||
for (uint8_t i=0; i<min(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count, (uint8_t)MENU_MAX_DISPLAY_LINES); i++) {
|
||||
popupMenuItems[i] = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers[i];
|
||||
}
|
||||
popupMenuItemsCount = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count;
|
||||
}
|
||||
}
|
||||
else {
|
||||
s_editMode = 0;
|
||||
@@ -1265,7 +1272,7 @@ void menuModelSetup(event_t event)
|
||||
newFlag = MODULE_MODE_BIND;
|
||||
}
|
||||
else {
|
||||
if (!popupMenuNoItems) {
|
||||
if (!popupMenuItemsCount) {
|
||||
s_editMode = 0; // this is when popup is exited before a choice is made
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#ifndef _POPUPS_H_
|
||||
#define _POPUPS_H_
|
||||
|
||||
#include <keys.h>
|
||||
|
||||
#define MENU_X 10
|
||||
#define MENU_Y 16
|
||||
#define MENU_W LCD_W-(2*MENU_X)
|
||||
@@ -63,8 +65,8 @@ extern uint8_t warningInfoFlags;
|
||||
#endif
|
||||
|
||||
#define NAVIGATION_MENUS
|
||||
#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0)
|
||||
#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuNoItems ? s : popupMenuNoItems) : 0)
|
||||
#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuItemsCount++] = s; } while (0)
|
||||
#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuItemsCount ? s : popupMenuItemsCount) : 0)
|
||||
#define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while (0)
|
||||
#define POPUP_MENU_MAX_LINES 12
|
||||
#define MENU_MAX_DISPLAY_LINES 6
|
||||
@@ -81,7 +83,7 @@ extern uint8_t warningInfoFlags;
|
||||
#if defined(NAVIGATION_MENUS)
|
||||
extern uint16_t popupMenuOffset;
|
||||
extern const char * popupMenuItems[POPUP_MENU_MAX_LINES];
|
||||
extern uint16_t popupMenuNoItems;
|
||||
extern uint16_t popupMenuItemsCount;
|
||||
const char * runPopupMenu(event_t event);
|
||||
extern void (*popupMenuHandler)(const char * result);
|
||||
#endif
|
||||
|
||||
@@ -1065,7 +1065,7 @@ void menuModelSetup(event_t event)
|
||||
newFlag = MODULE_BIND;
|
||||
}
|
||||
else {
|
||||
if (!popupMenuNoItems) {
|
||||
if (!popupMenuItemsCount) {
|
||||
s_editMode = 0; // this is when popup is exited before a choice is made
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,8 +47,8 @@ extern uint8_t warningInfoFlags;
|
||||
#define SET_WARNING_INFO(info, len, flags) (warningInfoText = info, warningInfoLength = len, warningInfoFlags = flags)
|
||||
|
||||
#define NAVIGATION_MENUS
|
||||
#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0)
|
||||
#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuNoItems ? s : popupMenuNoItems) : 0)
|
||||
#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuItemsCount++] = s; } while (0)
|
||||
#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuItemsCount ? s : popupMenuItemsCount) : 0)
|
||||
#define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while (0)
|
||||
#define POPUP_MENU_MAX_LINES 12
|
||||
#define MENU_MAX_DISPLAY_LINES 6
|
||||
@@ -56,7 +56,7 @@ extern uint8_t warningInfoFlags;
|
||||
#define MENU_LINE_LENGTH (LEN_MODEL_NAME+12)
|
||||
#define POPUP_MENU_SET_BSS_FLAG()
|
||||
extern const char * popupMenuItems[POPUP_MENU_MAX_LINES];
|
||||
extern uint16_t popupMenuNoItems;
|
||||
extern uint16_t popupMenuItemsCount;
|
||||
extern uint16_t popupMenuOffset;
|
||||
enum {
|
||||
MENU_OFFSET_INTERNAL,
|
||||
|
||||
@@ -482,15 +482,15 @@ extern uint8_t warningInfoFlags;
|
||||
#define SET_WARNING_INFO(info, len, flags) (warningInfoText = info, warningInfoLength = len, warningInfoFlags = flags)
|
||||
|
||||
#define NAVIGATION_MENUS
|
||||
#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0)
|
||||
#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuNoItems ? s : popupMenuNoItems) : 0)
|
||||
#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuItemsCount++] = s; } while (0)
|
||||
#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuItemsCount ? s : popupMenuItemsCount) : 0)
|
||||
#define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while(0)
|
||||
#define POPUP_MENU_MAX_LINES 12
|
||||
#define MENU_MAX_DISPLAY_LINES 9
|
||||
#define MENU_LINE_LENGTH (LEN_MODEL_NAME+12)
|
||||
#define POPUP_MENU_SET_BSS_FLAG()
|
||||
extern const char * popupMenuItems[POPUP_MENU_MAX_LINES];
|
||||
extern uint16_t popupMenuNoItems;
|
||||
extern uint16_t popupMenuItemsCount;
|
||||
extern uint16_t popupMenuOffset;
|
||||
enum {
|
||||
MENU_OFFSET_INTERNAL,
|
||||
|
||||
@@ -986,7 +986,7 @@ bool menuModelSetup(event_t event)
|
||||
newFlag = MODULE_MODE_BIND;
|
||||
}
|
||||
else {
|
||||
if (!popupMenuNoItems) {
|
||||
if (!popupMenuItemsCount) {
|
||||
s_editMode = 0; // this is when popup is exited before a choice is made
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ int16_t warningInputValueMax;
|
||||
void (*popupFunc)(event_t event) = NULL;
|
||||
const char *popupMenuItems[POPUP_MENU_MAX_LINES];
|
||||
uint8_t s_menu_item = 0;
|
||||
uint16_t popupMenuNoItems = 0;
|
||||
uint16_t popupMenuItemsCount = 0;
|
||||
uint16_t popupMenuOffset = 0;
|
||||
uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL;
|
||||
void (*popupMenuHandler)(const char * result);
|
||||
@@ -105,7 +105,7 @@ const char * runPopupMenu(event_t event)
|
||||
{
|
||||
const char * result = NULL;
|
||||
|
||||
uint8_t display_count = min<unsigned int>(popupMenuNoItems, MENU_MAX_DISPLAY_LINES);
|
||||
uint8_t display_count = min<unsigned int>(popupMenuItemsCount, MENU_MAX_DISPLAY_LINES);
|
||||
|
||||
switch (event) {
|
||||
case EVT_ROTARY_LEFT:
|
||||
@@ -118,18 +118,18 @@ const char * runPopupMenu(event_t event)
|
||||
}
|
||||
else {
|
||||
s_menu_item = min<uint8_t>(display_count, MENU_MAX_DISPLAY_LINES) - 1;
|
||||
if (popupMenuNoItems > MENU_MAX_DISPLAY_LINES) {
|
||||
popupMenuOffset = popupMenuNoItems - MENU_MAX_DISPLAY_LINES;
|
||||
if (popupMenuItemsCount > MENU_MAX_DISPLAY_LINES) {
|
||||
popupMenuOffset = popupMenuItemsCount - MENU_MAX_DISPLAY_LINES;
|
||||
result = STR_UPDATE_LIST;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case EVT_ROTARY_RIGHT:
|
||||
if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuNoItems) {
|
||||
if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuItemsCount) {
|
||||
s_menu_item++;
|
||||
}
|
||||
else if (popupMenuNoItems > popupMenuOffset + display_count) {
|
||||
else if (popupMenuItemsCount > popupMenuOffset + display_count) {
|
||||
popupMenuOffset++;
|
||||
result = STR_UPDATE_LIST;
|
||||
}
|
||||
@@ -147,7 +147,7 @@ const char * runPopupMenu(event_t event)
|
||||
// no break
|
||||
|
||||
case EVT_KEY_BREAK(KEY_EXIT):
|
||||
popupMenuNoItems = 0;
|
||||
popupMenuItemsCount = 0;
|
||||
s_menu_item = 0;
|
||||
popupMenuOffset = 0;
|
||||
break;
|
||||
@@ -168,8 +168,8 @@ const char * runPopupMenu(event_t event)
|
||||
}
|
||||
}
|
||||
|
||||
if (popupMenuNoItems > display_count) {
|
||||
drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, MENU_MAX_DISPLAY_LINES);
|
||||
if (popupMenuItemsCount > display_count) {
|
||||
drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuItemsCount, MENU_MAX_DISPLAY_LINES);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -26,7 +26,7 @@ void (*popupFunc)(event_t event) = NULL;
|
||||
#if defined(NAVIGATION_MENUS)
|
||||
const char * popupMenuItems[POPUP_MENU_MAX_LINES];
|
||||
uint8_t s_menu_item = 0;
|
||||
uint16_t popupMenuNoItems = 0;
|
||||
uint16_t popupMenuItemsCount = 0;
|
||||
uint16_t popupMenuOffset = 0;
|
||||
void (*popupMenuHandler)(const char * result);
|
||||
|
||||
@@ -34,7 +34,7 @@ const char * runPopupMenu(event_t event)
|
||||
{
|
||||
const char * result = NULL;
|
||||
|
||||
uint8_t display_count = min<uint8_t>(popupMenuNoItems, MENU_MAX_DISPLAY_LINES);
|
||||
uint8_t display_count = min<uint8_t>(popupMenuItemsCount, MENU_MAX_DISPLAY_LINES);
|
||||
uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y);
|
||||
lcdDrawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE);
|
||||
lcdDrawRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2);
|
||||
@@ -44,8 +44,8 @@ const char * runPopupMenu(event_t event)
|
||||
if (i == s_menu_item) lcdDrawSolidFilledRect(MENU_X+1, i*(FH+1) + y + 1, MENU_W-2, 9);
|
||||
}
|
||||
|
||||
if (popupMenuNoItems > display_count) {
|
||||
drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, display_count);
|
||||
if (popupMenuItemsCount > display_count) {
|
||||
drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuItemsCount, display_count);
|
||||
}
|
||||
|
||||
switch (event) {
|
||||
@@ -66,8 +66,8 @@ const char * runPopupMenu(event_t event)
|
||||
else {
|
||||
s_menu_item = min<uint8_t>(display_count, MENU_MAX_DISPLAY_LINES) - 1;
|
||||
#if defined(SDCARD)
|
||||
if (popupMenuNoItems > MENU_MAX_DISPLAY_LINES) {
|
||||
popupMenuOffset = popupMenuNoItems - display_count;
|
||||
if (popupMenuItemsCount > MENU_MAX_DISPLAY_LINES) {
|
||||
popupMenuOffset = popupMenuItemsCount - display_count;
|
||||
result = STR_UPDATE_LIST;
|
||||
}
|
||||
#endif
|
||||
@@ -79,11 +79,11 @@ const char * runPopupMenu(event_t event)
|
||||
#endif
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
case EVT_KEY_REPT(KEY_DOWN):
|
||||
if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuNoItems) {
|
||||
if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuItemsCount) {
|
||||
s_menu_item++;
|
||||
}
|
||||
#if defined(SDCARD)
|
||||
else if (popupMenuNoItems > popupMenuOffset + display_count) {
|
||||
else if (popupMenuItemsCount > popupMenuOffset + display_count) {
|
||||
popupMenuOffset++;
|
||||
result = STR_UPDATE_LIST;
|
||||
}
|
||||
@@ -113,7 +113,7 @@ const char * runPopupMenu(event_t event)
|
||||
#endif
|
||||
|
||||
case EVT_KEY_BREAK(KEY_EXIT):
|
||||
popupMenuNoItems = 0;
|
||||
popupMenuItemsCount = 0;
|
||||
s_menu_item = 0;
|
||||
popupMenuOffset = 0;
|
||||
break;
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
#ifndef _KEYS_H_
|
||||
#define _KEYS_H_
|
||||
|
||||
#include <inttypes.h>
|
||||
#include "board.h"
|
||||
|
||||
#define EVT_KEY_MASK(e) ((e) & 0x1f)
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
|
||||
+6
-6
@@ -50,7 +50,7 @@ void handleUsbConnection()
|
||||
}
|
||||
}
|
||||
if (!usbStarted() && usbPlugged() && getSelectedUsbMode() == USB_UNSELECTED_MODE) {
|
||||
if((g_eeGeneral.USBMode == USB_UNSELECTED_MODE) && (popupMenuNoItems == 0)) {
|
||||
if((g_eeGeneral.USBMode == USB_UNSELECTED_MODE) && (popupMenuItemsCount == 0)) {
|
||||
POPUP_MENU_ADD_ITEM(STR_USB_JOYSTICK);
|
||||
POPUP_MENU_ADD_ITEM(STR_USB_MASS_STORAGE);
|
||||
#if defined(DEBUG)
|
||||
@@ -135,14 +135,14 @@ void handleJackConnection()
|
||||
jackState = TRAINER_ACTIVE;
|
||||
enableTrainer();
|
||||
}
|
||||
else if (popupMenuNoItems == 0) {
|
||||
else if (popupMenuItemsCount == 0) {
|
||||
POPUP_MENU_ADD_ITEM(STR_JACK_HEADPHONE);
|
||||
POPUP_MENU_ADD_ITEM(STR_JACK_TRAINER);
|
||||
POPUP_MENU_START(onJackConnectMenu);
|
||||
}
|
||||
}
|
||||
else if (jackState == SPEAKER_ACTIVE && !isJackPlugged() && popupMenuNoItems > 0 && popupMenuHandler == onJackConnectMenu) {
|
||||
popupMenuNoItems = 0;
|
||||
else if (jackState == SPEAKER_ACTIVE && !isJackPlugged() && popupMenuItemsCount > 0 && popupMenuHandler == onJackConnectMenu) {
|
||||
popupMenuItemsCount = 0;
|
||||
}
|
||||
else if (jackState != SPEAKER_ACTIVE && !isJackPlugged()) {
|
||||
jackState = SPEAKER_ACTIVE;
|
||||
@@ -304,7 +304,7 @@ void guiMain(event_t evt)
|
||||
while (1) {
|
||||
// normal GUI from menus
|
||||
const char * warn = warningText;
|
||||
uint8_t menu = popupMenuNoItems;
|
||||
uint8_t menu = popupMenuItemsCount;
|
||||
|
||||
static bool popupDisplayed = false;
|
||||
if (warn || menu) {
|
||||
@@ -450,7 +450,7 @@ void guiMain(event_t evt)
|
||||
handleGui(0); // suppress events, they are handled by the warning
|
||||
DISPLAY_WARNING(evt);
|
||||
}
|
||||
else if (popupMenuNoItems > 0) {
|
||||
else if (popupMenuItemsCount > 0) {
|
||||
// popup menu is active display it on top of normal menus
|
||||
handleGui(0); // suppress events, they are handled by the popup
|
||||
if (!inPopupMenu) {
|
||||
|
||||
@@ -275,7 +275,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen
|
||||
lastpopupMenuOffset = 0;
|
||||
memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss));
|
||||
}
|
||||
else if (popupMenuOffset == popupMenuNoItems - MENU_MAX_DISPLAY_LINES) {
|
||||
else if (popupMenuOffset == popupMenuItemsCount - MENU_MAX_DISPLAY_LINES) {
|
||||
lastpopupMenuOffset = 0xffff;
|
||||
memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss));
|
||||
}
|
||||
@@ -292,14 +292,14 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen
|
||||
memset(reusableBuffer.modelsel.menu_bss[0], 0, MENU_LINE_LENGTH);
|
||||
}
|
||||
|
||||
popupMenuNoItems = 0;
|
||||
popupMenuItemsCount = 0;
|
||||
POPUP_MENU_SET_BSS_FLAG();
|
||||
|
||||
FRESULT res = f_opendir(&dir, path);
|
||||
if (res == FR_OK) {
|
||||
|
||||
if (flags & LIST_NONE_SD_FILE) {
|
||||
popupMenuNoItems++;
|
||||
popupMenuItemsCount++;
|
||||
if (selection) {
|
||||
lastpopupMenuOffset++;
|
||||
}
|
||||
@@ -338,7 +338,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen
|
||||
continue;
|
||||
}
|
||||
|
||||
popupMenuNoItems++;
|
||||
popupMenuItemsCount++;
|
||||
|
||||
if (!(flags & LIST_SD_FILE_EXT)) {
|
||||
fno.fname[fnLen] = '\0'; // strip extension
|
||||
@@ -359,10 +359,9 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen
|
||||
}
|
||||
}
|
||||
}
|
||||
for (uint8_t i=0; i<min(popupMenuNoItems, (uint16_t)MENU_MAX_DISPLAY_LINES); i++) {
|
||||
for (uint8_t i=0; i<min(popupMenuItemsCount, (uint16_t)MENU_MAX_DISPLAY_LINES); i++) {
|
||||
popupMenuItems[i] = reusableBuffer.modelsel.menu_bss[i];
|
||||
}
|
||||
|
||||
}
|
||||
else if (lastpopupMenuOffset == 0xffff) {
|
||||
for (int i=MENU_MAX_DISPLAY_LINES-1; i>=0; i--) {
|
||||
@@ -374,7 +373,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (uint8_t i=0; i<min(popupMenuNoItems, (uint16_t)MENU_MAX_DISPLAY_LINES); i++) {
|
||||
for (uint8_t i=0; i<min(popupMenuItemsCount, (uint16_t)MENU_MAX_DISPLAY_LINES); i++) {
|
||||
popupMenuItems[i] = reusableBuffer.modelsel.menu_bss[i];
|
||||
}
|
||||
}
|
||||
@@ -399,7 +398,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen
|
||||
else
|
||||
popupMenuOffset = lastpopupMenuOffset;
|
||||
|
||||
return popupMenuNoItems;
|
||||
return popupMenuItemsCount;
|
||||
}
|
||||
|
||||
// returns true if current working dir is at the root level
|
||||
|
||||
Reference in New Issue
Block a user