1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-24 00:35:18 +03:00

POPUP title

This commit is contained in:
Bertrand Songis 2019-03-07 13:45:15 +01:00
parent c7258fd4f8
commit 111b209a75
4 changed files with 25 additions and 7 deletions

View file

@ -1326,12 +1326,10 @@ void menuModelSetup(event_t event)
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
uint8_t receiverSlot = g_model.moduleData[moduleIdx].pxx2.getReceiverSlot(receiverIdx) - 1;
if (zexist(g_model.receiverData[receiverSlot].name, PXX2_LEN_RX_NAME)) {
if (g_model.receiverData[receiverSlot].name[0] != '\0')
lcdDrawSizedText(INDENT_WIDTH * 2, y, g_model.receiverData[receiverSlot].name, PXX2_LEN_RX_NAME);
}
else {
else
lcdDrawTextAlignedLeft(y, INDENT INDENT "---");
}
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_BIND, menuHorizontalPosition==0 ? attr : 0);
lcdDrawText(lcdLastRightPos + FW/2, y, BUTTON("Share"), menuHorizontalPosition==1 ? attr : 0);
@ -1351,6 +1349,7 @@ void menuModelSetup(event_t event)
for (uint8_t i=0; i<popupMenuItemsCount; i++) {
popupMenuItems[i] = reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[i];
}
popupMenuTitle = "Select RX...";
POPUP_MENU_START(onPXX2BindMenu);
}
}

View file

@ -84,6 +84,7 @@ extern uint8_t warningInfoFlags;
extern uint16_t popupMenuItemsCount;
const char * runPopupMenu(event_t event);
extern void (*popupMenuHandler)(const char * result);
extern const char * popupMenuTitle;
#endif
#endif // _POPUPS_H_

View file

@ -28,7 +28,8 @@ const char * popupMenuItems[POPUP_MENU_MAX_LINES];
uint8_t s_menu_item = 0;
uint16_t popupMenuItemsCount = 0;
uint16_t popupMenuOffset = 0;
void (*popupMenuHandler)(const char * result);
void (* popupMenuHandler)(const char * result);
const char * popupMenuTitle = nullptr;
const char * runPopupMenu(event_t event)
{
@ -36,14 +37,29 @@ const char * runPopupMenu(event_t event)
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);
if (popupMenuTitle) {
y += FH / 2;
}
// white background
lcdDrawFilledRect(MENU_X - 1, popupMenuTitle ? y - FH - 3 : y, MENU_W + 2, display_count * (FH + 1) + (popupMenuTitle ? FH + 6 : 3), SOLID, ERASE);
// title
if (popupMenuTitle) {
lcdDrawText(MENU_X + 2, y - FH, popupMenuTitle, BOLD);
lcdDrawRect(MENU_X, y - FH - 2, lcdLastRightPos - MENU_X + 3, FH + 3);
}
// border
lcdDrawRect(MENU_X, y, MENU_W, display_count * (FH + 1) + 2, SOLID, FORCE);
// items
for (uint8_t i=0; i<display_count; i++) {
lcdDrawText(MENU_X+6, i*(FH+1) + y + 2, popupMenuItems[i+(popupMenuOffsetType == MENU_OFFSET_INTERNAL ? popupMenuOffset : 0)], 0);
if (i == s_menu_item) lcdDrawSolidFilledRect(MENU_X+1, i*(FH+1) + y + 1, MENU_W-2, 9);
}
// scrollbar
if (popupMenuItemsCount > display_count) {
drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuItemsCount, display_count);
}
@ -116,6 +132,7 @@ const char * runPopupMenu(event_t event)
popupMenuItemsCount = 0;
s_menu_item = 0;
popupMenuOffset = 0;
popupMenuTitle = nullptr;
break;
}

View file

@ -132,6 +132,7 @@ void processBindFrame(uint8_t module, uint8_t * frame)
}
else if (frame[3] == 0x01) {
if (memcmp(&reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex], &frame[4], PXX2_LEN_RX_NAME) == 0) {
memcpy(&g_model.receiverData[reusableBuffer.moduleSetup.pxx2.bindReceiverSlot].name, &frame[4], PXX2_LEN_RX_NAME);
reusableBuffer.moduleSetup.pxx2.bindStep = BIND_WAIT;
reusableBuffer.moduleSetup.pxx2.bindWaitTimeout = get_tmr10ms() + 30;
}