void PAGE_TelemconfigInit(int page) { (void)page; enum { COL1 = (10 + ((LCD_WIDTH - 320) / 2)), COL2 = (COL1 + 55), COL3 = (COL1 + 156), COL4 = (COL1 + 225), ROW1 = (70 + ((LCD_HEIGHT - 240) / 2)), }; const u8 row_height = 25; PAGE_SetModal(0); #if HAS_STANDARD_GUI if (Model.mixer_mode == MIXER_STANDARD) PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_TELEMCFG), MODELMENU_Show); else #endif PAGE_ShowHeader(PAGE_GetName(PAGEID_TELEMCFG)); if (telem_state_check() == 0) { GUI_CreateLabelBox(&gui->msg, 20, 80, 280, 100, &NARROW_FONT, NULL, NULL, tempstring); return; } for (long i = 0; i < TELEM_NUM_ALARMS; i++) { GUI_CreateLabelBox(&gui->name[i], COL1, ROW1 + row_height * i, 55, 16, &DEFAULT_FONT, label_cb, NULL, (void *)i); GUI_CreateTextSelect(&gui->type[i], COL2, ROW1 + row_height * i, TEXTSELECT_96, NULL, telem_name_cb, (void *)i); GUI_CreateTextSelect(&gui->gtlt[i], COL3, ROW1 + row_height * i, TEXTSELECT_64, NULL, gtlt_cb, (void *)i); GUI_CreateTextSelect(&gui->value[i], COL4, ROW1 + row_height * i, TEXTSELECT_64, NULL, limit_cb, (void *)i); } }
static const char *_mixermode_cb(guiObject_t *obj, int dir, void *data) { const char *ret = mixermode_cb(obj, dir, data); if(Model.mixer_mode != mp->last_mixermode) { mp->last_mixermode = Model.mixer_mode; PAGE_RemoveHeader(); if (Model.mixer_mode == MIXER_STANDARD) PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_MODEL), MODELMENU_Show); else PAGE_ShowHeader(PAGE_GetName(PAGEID_MODEL)); } return ret; }
static int row_cb(int absrow, int relrow, int y, void *data) { int row_count = (long)data; struct LabelDesc listbox = { .font = DEFAULT_FONT.font, .style = LABEL_LISTBOX, .font_color = DEFAULT_FONT.font_color, .fill_color = DEFAULT_FONT.fill_color, .outline_color = DEFAULT_FONT.outline_color }; if (absrow >= row_count) { GUI_CreateLabelBox(&gui->label[relrow], LCD_WIDTH/2-100, y, 200 - ARROW_WIDTH, LINE_HEIGHT, &listbox, NULL, NULL, ""); } else { GUI_CreateLabelBox(&gui->label[relrow], LCD_WIDTH/2-100, y, 200 - ARROW_WIDTH, LINE_HEIGHT, &listbox, string_cb, press_cb, (void *)(long)absrow); } return 1; } void PAGE_LanguageInit(int page) { (void)page; int num_lang = count_num_languages(); PAGE_ShowHeader(_tr(PAGE_GetName(PAGEID_LANGUAGE))); int min_rows = num_lang >= LISTBOX_ITEMS ? num_lang : LISTBOX_ITEMS; GUI_CreateScrollable(&gui->scrollable, LCD_WIDTH/2-100, 40, 200, LISTBOX_ITEMS * LINE_HEIGHT, LINE_HEIGHT, min_rows, row_cb, NULL, NULL, (void *)(long)num_lang); GUI_SetSelected(GUI_ShowScrollableRowCol(&gui->scrollable, Transmitter.language, 0)); }
void PAGE_InputtestInit(int page) { (void)page; PAGE_ShowHeader(PAGE_GetName(PAGEID_INPUTMON)); cp->type = MONITOR_RAWINPUT; _show_bar_page(); }
void PAGE_ButtontestInit(int page) { (void)page; PAGE_ShowHeader(PAGE_GetName(PAGEID_BTNMON)); cp->type = MONITOR_BUTTONTEST; show_button_page(); }
void PAGE_ChantestInit(int page) { (void)page; PAGE_ShowHeader(PAGE_GetName(PAGEID_CHANMON)); cp->type = MONITOR_MIXEROUTPUT; _show_bar_page(); }
void PAGE_RTCInit(int page) { (void)page; PAGE_SetModal(1); PAGE_RemoveAllObjects(); PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_RTC), okcancel_cb); u32 time = RTC_GetValue(); u32 timevalue = RTC_GetTimeValue(time); Rtc.value[HOUR] = (u16)(timevalue / 3600); Rtc.value[MINUTE] = (u16)(timevalue % 3600) / 60; Rtc.value[SECOND] = (u16)(timevalue % 60); RTC_GetDateStringLong(tempstring,time); int idx = (tempstring[1] == '.' ? 1 : 2); tempstring[idx] = 0; tempstring[idx+3] = 0; Rtc.value[DAY] = atoi(tempstring); Rtc.value[MONTH] = atoi(tempstring + idx + 1); Rtc.value[YEAR] = atoi(tempstring + idx + 4); min[SECOND] = 0; max[SECOND] = 59; min[MINUTE] = 0; max[MINUTE] = 59; min[HOUR] = 0; max[HOUR] = 23; min[DAY] = 1; max[DAY] = daysInMonth[Rtc.value[MONTH] - 1] + (((Rtc.value[YEAR] % 4) == 0) && (Rtc.value[MONTH] == 2) ? 1 : 0); min[MONTH] = 1; max[MONTH] = 12; min[YEAR] = RTC_STARTYEAR; max[YEAR] = RTC_STARTYEAR + 67; _show_page(); }
static void _draw_page(u8 enable) { (void)enable; PAGE_ShowHeader(PAGE_GetName(PAGEID_SCANNER)); GUI_CreateButtonPlateText(&gui->enable, 0, HEADER_HEIGHT, 40, LINE_HEIGHT, &BUTTON_FONT, enablestr_cb, press_enable_cb, NULL); GUI_CreateTextSelectPlate(&gui->averaging, LCD_WIDTH/2 - 23, HEADER_HEIGHT, 46, LINE_HEIGHT, &TEXTSEL_FONT, mode_cb, average_cb, NULL); GUI_CreateTextSelectPlate(&gui->attenuator, LCD_WIDTH - 40, HEADER_HEIGHT, 40, LINE_HEIGHT, &TEXTSEL_FONT, NULL, attenuator_cb, NULL); }
const char *title_cb(guiObject_t *obj, const void *data) { (void)obj; (void)data; sprintf(tempstring, "%s - ", PAGE_GetName(PAGEID_GYROSENSE)); INPUT_SourceNameAbbrevSwitch(tempstring+strlen(tempstring), mapped_std_channels.switches[SWITCHFUNC_GYROSENSE]); return tempstring; }
static void _show_page() { #if HAS_STANDARD_GUI if (Model.mixer_mode == MIXER_STANDARD) PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_TRIM), MODELMENU_Show); else #endif PAGE_ShowHeader(PAGE_GetName(PAGEID_TRIM)); GUI_CreateLabelBox(&gui->inplbl, PCOL1, PROW1, 64, 15, &NARROW_FONT, NULL, NULL, _tr("Input")); GUI_CreateLabelBox(&gui->neglbl, PCOL2, PROW1, 64, 15, &NARROW_FONT, NULL, NULL, _tr("Trim -")); GUI_CreateLabelBox(&gui->poslbl, PCOL3, PROW1, 64, 15, &NARROW_FONT, NULL, NULL, _tr("Trim +")); GUI_CreateLabelBox(&gui->steplbl, PCOL4, PROW1, 108, 15, &NARROW_FONT, NULL, NULL, _tr("Trim Step")); GUI_CreateScrollable(&gui->scrollable, PCOL1, PROW2, LCD_WIDTH - 2 * PCOL1, NUM_TRIM_ROWS * 24 - 8, 24, NUM_TRIMS, row_cb, getobj_cb, NULL, NULL); }
const char *STDMIX_TitleString(guiObject_t *obj, const void *data) { (void)obj; int pageid = ((unsigned long)data) & 0xFFFF; int sw = (((unsigned long)data) >> 16) & 0xFFFF; sprintf(tempstring, "%s - ", PAGE_GetName(pageid)); INPUT_SourceNameAbbrevSwitch(tempstring+strlen(tempstring), mapped_std_channels.switches[sw]); return tempstring; }
void PAGE_TxConfigureInit(int page) { (void)page; cp->enable = CALIB_NONE; PAGE_SetModal(0); PAGE_ShowHeader(PAGE_GetName(PAGEID_TXCFG)); GUI_CreateScrollable(&gui->scrollable, 0, 32, LCD_WIDTH, LCD_HEIGHT-32, LCD_HEIGHT-32, MAX_PAGE+1, row_cb, NULL, NULL, NULL); }
void PAGE_DrExpInit(int page) { (void)page; enum { COL3 = (4 + ((LCD_WIDTH - 320) / 2)), COL4 = (112 + ((LCD_WIDTH - 320) / 2)), COL5 = (216 + ((LCD_WIDTH - 320) / 2)), COL1 = COL4, COL2 = (COL1 + 32), ROW1 = (36 + ((LCD_HEIGHT - 240) / 2)), ROW2 = (ROW1 + 20), ROW3 = (ROW1 + 40), ROW4 = (ROW1 + 60), ROW5 = (ROW1 + 80), }; PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_DREXP), MODELMENU_Show); PAGE_ShowHeader_ExitOnly(NULL, MODELMENU_Show); PAGE_ShowHeader_SetLabel(STDMIX_TitleString, SET_TITLE_DATA(PAGEID_DREXP, SWITCHFUNC_DREXP_AIL+drexp_type)); memset(mp, 0, sizeof(*mp)); int count = get_mixers(); int expected = INPUT_NumSwitchPos(mapped_std_channels.switches[SWITCHFUNC_DREXP_AIL+drexp_type]); if (count != expected) { GUI_CreateLabelBox(&gui->msg, 0, 120, 240, 16, &NARROW_FONT, NULL, NULL, "Invalid model ini!");// must be invalid model ini return; } /* Row 1 */ GUI_CreateLabelBox(&gui->srclbl, COL1, ROW1, 96, 16, &DEFAULT_FONT, NULL, NULL, _tr("Src")); GUI_CreateTextSelect(&gui->src, COL2, ROW1, TEXTSELECT_64, NULL, set_type_cb, NULL); /* Row 2 */ GUI_CreateLabelBox(&gui->mode[0], COL3, ROW2, 96, 16, &DEFAULT_FONT, NULL, NULL, STDMIX_ModeName(PITTHROMODE_NORMAL)); GUI_CreateLabelBox(&gui->mode[1], COL4, ROW2, 96, 16, &DEFAULT_FONT, NULL, NULL, STDMIX_ModeName(PITTHROMODE_IDLE1)); GUI_CreateLabelBox(&gui->mode[2], COL5, ROW2, 96, 16, &DEFAULT_FONT, NULL, NULL, STDMIX_ModeName(PITTHROMODE_IDLE2)); /* Row 3 */ GUI_CreateTextSelect(&gui->dr[0], COL3, ROW3, TEXTSELECT_96, NULL, set_dr_cb, ((void *)(long)PITTHROMODE_NORMAL)); GUI_CreateTextSelect(&gui->dr[1], COL4, ROW3, TEXTSELECT_96, NULL, set_dr_cb, ((void *)(long)PITTHROMODE_IDLE1)); GUI_CreateTextSelect(&gui->dr[2], COL5, ROW3, TEXTSELECT_96, NULL, set_dr_cb, ((void *)(long)PITTHROMODE_IDLE2)); /* Row 4 */ GUI_CreateTextSelect(&gui->exp[0], COL3, ROW4, TEXTSELECT_96, NULL, set_exp_cb, ((void *)(long)PITTHROMODE_NORMAL)); GUI_CreateTextSelect(&gui->exp[1], COL4, ROW4, TEXTSELECT_96, NULL, set_exp_cb, ((void *)(long)PITTHROMODE_IDLE1)); GUI_CreateTextSelect(&gui->exp[2], COL5, ROW4, TEXTSELECT_96, NULL, set_exp_cb, ((void *)(long)PITTHROMODE_IDLE2)); /* Row 5 */ u16 ymax = CHAN_MAX_VALUE/100 * MAX_SCALAR; s16 ymin = -ymax; GUI_CreateXYGraph(&gui->graph[0], COL3, ROW5, 96, 120, CHAN_MIN_VALUE, ymin, CHAN_MAX_VALUE, ymax, 0, 0, show_curve_cb, curpos_cb, NULL, (void *)(PITTHROMODE_NORMAL+1L)); GUI_CreateXYGraph(&gui->graph[1], COL4, ROW5, 96, 120, CHAN_MIN_VALUE, ymin, CHAN_MAX_VALUE, ymax, 0, 0, show_curve_cb, curpos_cb, NULL, (void *)(PITTHROMODE_IDLE1+1L)); GUI_CreateXYGraph(&gui->graph[2], COL5, ROW5, 96, 120, CHAN_MIN_VALUE, ymin, CHAN_MAX_VALUE, ymax, 0, 0, show_curve_cb, curpos_cb, NULL, (void *)(PITTHROMODE_IDLE2+1L)); _refresh_page(); }
static void _show_page(int page) { (void)page; PAGE_ShowHeader(_tr(PAGE_GetName(PAGEID_TIMER))); // using the same name as related menu item to reduce language strings GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LCD_HEIGHT - HEADER_HEIGHT, NUM_TIMERS, row_cb, NULL, NULL, NULL); PAGE_SetScrollable(&gui->scrollable, ¤t_selected); }
void PAGE_TouchEvent(void) { if (cp->state == 0 || cp->state == 3) { if (GUI_ObjectNeedsRedraw((guiObject_t *)&guic->msg)) return; draw_target(cp->state ? LCD_WIDTH - XCOORD : XCOORD , cp->state ? LCD_HEIGHT - YCOORD : YCOORD + 32); cp->state++; } else if (cp->state == 1 || cp->state == 4) { if (SPITouch_IRQ()) { cp->coords = SPITouch_GetCoords(); cp->state++; } } else if (cp->state == 2) { if (! SPITouch_IRQ()) { cp->coords1 = cp->coords; GUI_RemoveObj((guiObject_t *)&guic->msg); GUI_CreateLabelBox(&guic->msg, LCD_WIDTH - XCOORD - 5, LCD_HEIGHT - YCOORD - 5, 11, 11, &SMALLBOX_FONT, NULL, NULL, ""); GUI_Redraw(&guic->msg1); cp->state = 3; } else { cp->coords = SPITouch_GetCoords(); } } else if (cp->state == 5) { if (! SPITouch_IRQ()) { s32 xscale, yscale; s32 xoff, yoff; printf("T1:(%d, %d)\n", cp->coords1.x, cp->coords1.y); printf("T2:(%d, %d)\n", cp->coords.x, cp->coords.y); xscale = cp->coords.x - cp->coords1.x; xscale = (LCD_WIDTH - 2 * XCOORD) * 0x10000 / xscale; yscale = cp->coords.y - cp->coords1.y; yscale = (LCD_HEIGHT - 32 - 2 * YCOORD) * 0x10000 / yscale; xoff = XCOORD - cp->coords1.x * xscale / 0x10000; yoff = YCOORD + 32 - cp->coords1.y * yscale / 0x10000; printf("Debug: scale(%d, %d) offset(%d, %d)\n", (int)xscale, (int)yscale, (int)xoff, (int)yoff); SPITouch_Calibrate(xscale, yscale, xoff, yoff); PAGE_RemoveAllObjects(); PAGE_ShowHeader(PAGE_GetName(PAGEID_TOUCH)); GUI_CreateLabelBox(&guic->msg, (LCD_WIDTH - 150) / 2, (LCD_HEIGHT - 25) / 2, 150, 25, &SMALLBOX_FONT, coords_cb, NULL, NULL); memset(&cp->coords, 0, sizeof(cp->coords)); cp->state = 6; } else { cp->coords = SPITouch_GetCoords(); } } else if(cp->state == 6) { struct touch t; if (SPITouch_IRQ()) { t = SPITouch_GetCoords(); if (memcmp(&t, &cp->coords, sizeof(t)) != 0) { cp->coords = t; GUI_Redraw(&guic->msg); } } } }
static const char *_mixermode_cb(guiObject_t *obj, int dir, void *data) { const char *ret = mixermode_cb(obj, dir, data); if(Model.mixer_mode != mp->last_mixermode) { mp->last_mixermode = Model.mixer_mode; PAGE_RemoveHeader(); PAGE_ShowHeader(PAGE_GetName(PAGEID_MODEL)); } return ret; }
void PAGE_LanguageInit(int page) { (void)page; int num_lang = count_num_languages(); PAGE_ShowHeader(PAGE_GetName(PAGEID_LANGUAGE)); int min_rows = num_lang >= LISTBOX_ITEMS ? num_lang : LISTBOX_ITEMS; GUI_CreateScrollable(&gui->scrollable, LCD_WIDTH/2-100, 40, 200, LISTBOX_ITEMS * LINE_HEIGHT, LINE_HEIGHT, min_rows, row_cb, NULL, NULL, (void *)(long)num_lang); GUI_SetSelected(GUI_ShowScrollableRowCol(&gui->scrollable, Transmitter.language, 0)); }
void PAGE_DebuglogInit(int page) { (void)page; PAGE_ShowHeader(PAGE_GetName(PAGEID_DEBUGLOG)); PAGE_SetModal(0); find_line_ends(); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, NUM_ROWS, row_cb, NULL, NULL, NULL); }
static void _show_title(int page) { mp->max_scroll = Model.num_channels + NUM_VIRT_CHANNELS > ENTRIES_PER_PAGE ? Model.num_channels + NUM_VIRT_CHANNELS - ENTRIES_PER_PAGE : Model.num_channels + NUM_VIRT_CHANNELS; PAGE_ShowHeader(PAGE_GetName(PAGEID_MIXER)); GUI_CreateIcon(&gui->testico, LCD_WIDTH-128, 0, &icons[ICON_CHANTEST], show_chantest_cb, NULL); GUI_CreateIcon(&gui->reorderico, LCD_WIDTH-96, 0, &icons[ICON_ORDER], reorder_cb, NULL); GUI_CreateScrollbar(&gui->scroll, LCD_WIDTH-16, 32, LCD_HEIGHT-32, mp->max_scroll+1, NULL, scroll_cb, NULL); GUI_SetScrollbar(&gui->scroll, page); }
void PAGE_ReverseInit(int page) { struct mixer_page * mp = &pagemem.u.mixer_page; PAGE_ShowHeader(PAGE_GetName(PAGEID_REVERSE)); mp->max_scroll = Model.num_channels > ENTRIES_PER_PAGE ? Model.num_channels - ENTRIES_PER_PAGE : 0; mp->firstObj = NULL; GUI_CreateScrollbar(&gui->scrollbar, LCD_WIDTH-16, 32, LCD_HEIGHT-32, mp->max_scroll+1, NULL, STDMIX_ScrollCB, show_page); show_page(page); }
static void _show_page(int page) { (void) page; int init_y = 40; PAGE_ShowHeader(PAGE_GetName(PAGEID_TIMER)); GUI_CreateScrollable(&gui->scrollable, 0, init_y, LCD_WIDTH, 200, 100, NUM_TIMERS / TIMERCOLUMNS, row_cb, NULL, NULL, NULL); PAGE_SetScrollable(&gui->scrollable, ¤t_selected); }
void PAGE_TxConfigureInit(int page) { (void)page; cp->enable = CALIB_NONE; PAGE_SetModal(0); PAGE_RemoveAllObjects(); PAGE_ShowHeader(PAGE_GetName(PAGEID_TXCFG)); GUI_CreateScrollbar(&gui->scrollbar, LCD_WIDTH-16, 32, LCD_HEIGHT-32, MAX_PAGE+1, NULL, scroll_cb, NULL); firstObj = NULL; page_num = 0; _show_page(); }
void PAGE_AboutInit(int page) { (void)page; PAGE_RemoveAllObjects(); PAGE_ShowHeader(PAGE_GetName(PAGEID_ABOUT)); PAGE_SetActionCB(_action_cb); strcpy(up->tmpstr, (const char *) _tr("Deviation FW version:")); GUI_CreateLabelBox(&gui->label[0], 0, 15, LCD_WIDTH, ITEM_HEIGHT, &DEFAULT_FONT, NULL, NULL, "www.deviationtx.com"); GUI_CreateLabelBox(&gui->label[1], 0, 30, LCD_WIDTH, ITEM_HEIGHT, &DEFAULT_FONT, NULL, NULL, up->tmpstr); GUI_CreateLabelBox(&gui->label[2], 0, 45, LCD_WIDTH, ITEM_HEIGHT, &MICRO_FONT, NULL, NULL, _tr_noop(DeviationVersion)); }
void PAGE_MainLayoutInit(int page) { (void)page; #if HAS_LAYOUT_EDITOR PAGE_ShowHeader(_tr_noop("Layout: Long-Press ENT")); PAGE_SetActionCB(_action_cb); #else PAGE_ShowHeader(PAGE_GetName(PAGEID_MAINCFG)); #endif memset(gui, 0, sizeof(*gui)); memset(lp, 0, sizeof(*lp)); show_config(); }
static void _show_page() { PAGE_ShowHeader(PAGE_GetName(PAGEID_TRIM)); GUI_CreateLabelBox(&gui->inplbl, PCOL1, PROW1, 64, 15, &NARROW_FONT, NULL, NULL, _tr("Input")); GUI_CreateLabelBox(&gui->neglbl, PCOL2, PROW1, 64, 15, &NARROW_FONT, NULL, NULL, _tr("Trim -")); GUI_CreateLabelBox(&gui->poslbl, PCOL3, PROW1, 64, 15, &NARROW_FONT, NULL, NULL, _tr("Trim +")); GUI_CreateLabelBox(&gui->steplbl, PCOL4, PROW1, 108, 15, &NARROW_FONT, NULL, NULL, _tr("Trim Step")); GUI_CreateScrollable(&gui->scrollable, PCOL1, PROW2, LCD_WIDTH - 2 * PCOL1, NUM_TRIM_ROWS * 24 - 8, 24, NUM_TRIMS, row_cb, getobj_cb, NULL, NULL); PAGE_SetScrollable(&gui->scrollable, ¤t_selected); }
void PAGE_TravelAdjInit(int page) { (void)page; struct mixer_page * mp = &pagemem.u.mixer_page; PAGE_ShowHeader(PAGE_GetName(PAGEID_TRAVELADJ)); mp->max_scroll = Model.num_channels > ENTRIES_PER_PAGE ? Model.num_channels - ENTRIES_PER_PAGE : 0; mp->firstObj = NULL; GUI_CreateScrollbar(&gui->scrollbar, LCD_WIDTH - 16, 32, LCD_HEIGHT-32, mp->max_scroll+1, NULL, STDMIX_ScrollCB, show_page); GUI_CreateLabelBox(&gui->dnlbl, 90 + ((LCD_WIDTH - 320) / 2), 36 + ((LCD_HEIGHT - 240) / 2), 96, 16, &NARROW_FONT, NULL, NULL, _tr("Down")); GUI_CreateLabelBox(&gui->uplbl, 196 + ((LCD_WIDTH - 320) / 2), 36 + ((LCD_HEIGHT - 240) / 2), 96, 16, &NARROW_FONT, NULL, NULL, _tr("Up")); show_page(page); }
void PAGE_ModelMenuInit(int page) { (void) page; long pos = 0; PAGE_SetModal(0); PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_MODELMENU), goto_mainpage); u8 count = sizeof(menus) / sizeof(struct menu_s); for(int j = 0; j < 4; j++) { int y = 40 + j * (LCD_HEIGHT == 240 ? 50 : 59); for(int i = 0; i < 5; i++,pos++) { if (pos >= count) break; int x = (LCD_WIDTH == 320 ? 12 : 92) + i*60; GUI_CreateIcon(&gui->icon[pos], x, y, &menus[pos].icon, ico_select_cb, (void *)pos); } } }
const char *menusel_cb(guiObject_t *obj, int dir, void *data) { (void) obj; (void) dir; int i = (long)data; int max_pages = PAGE_GetNumPages(); int start_page = PAGE_GetStartPage(); int page = GUI_TextSelectHelper(pc.quickpage[i], start_page, max_pages -1, dir, 1, 1, NULL); if (page != pc.quickpage[i]) { int increment = (page > pc.quickpage[i]) ? 1 : -1; while (page >= start_page && page != max_pages && ! PAGE_IsValid(page)) { page = (page + increment); } if (page >= start_page && page != max_pages) pc.quickpage[i] = page; } return PAGE_GetName(pc.quickpage[i]); }
void PAGE_RTCInit(int page) { (void)page; PAGE_SetModal(1); PAGE_RemoveAllObjects(); PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_RTC), okcancel_cb); u32 time = RTC_GetValue(); u32 timevalue = RTC_GetTimeValue(time); Rtc.value[2] = (u16)(timevalue / 3600); Rtc.value[1] = (u16)(timevalue % 3600) / 60; Rtc.value[0] = (u16)(timevalue % 60); RTC_GetDateStringLong(rp->tmpstr,time); int idx = (rp->tmpstr[1] == '.' ? 1 : 2); rp->tmpstr[idx] = 0; rp->tmpstr[idx+3] = 0; Rtc.value[3] = atoi(rp->tmpstr); Rtc.value[4] = atoi(rp->tmpstr + idx + 1); Rtc.value[5] = atoi(rp->tmpstr + idx + 4); _show_page(); }
void PAGE_ModelInit(int page) { (void)page; u8 row; mp->last_mixermode = Model.mixer_mode; mp->last_txpower = Model.tx_power; mp->file_state = 0; PAGE_SetModal(0); PAGE_ShowHeader(PAGE_GetName(PAGEID_MODEL)); enum { COL1 = (8 + ((LCD_WIDTH - 320) / 2)), COL2 = (COL1 + 128), COL3 = (COL1 + 228), ROW1 = (44 + ((LCD_HEIGHT - 240) / 2)), LABEL_WIDTH = (COL2 - COL1), }; row = ROW1; GUI_CreateLabelBox(&gui->filelbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("File")); GUI_CreateTextSelect(&gui->file, COL2, row, TEXTSELECT_96, file_press_cb, file_val_cb, NULL); #if HAS_STANDARD_GUI row+= 20; GUI_CreateLabelBox(&gui->guilbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Mixer GUI")); GUI_CreateTextSelect(&gui->guits, COL2, row, TEXTSELECT_96, NULL, _mixermode_cb, NULL); #endif row += 20; GUI_CreateLabelBox(&gui->namelbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Model name")); // use the same naming convention for devo8 and devo10 GUI_CreateButton(&gui->name, COL2, row, BUTTON_96x16, show_text_cb, _changename_cb, Model.name); GUI_CreateButton(&gui->icon, COL3, row, BUTTON_64x16, show_text_cb, changeicon_cb, _tr("Icon")); row += 20; GUI_CreateLabelBox(&gui->typelbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Model type")); GUI_CreateTextSelect(&gui->type, COL2, row, TEXTSELECT_96, type_press_cb, type_val_cb, NULL); row += 24; GUI_CreateLabelBox(&gui->ppmlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("PPM In")); GUI_CreateTextSelect(&gui->ppm, COL2, row, TEXTSELECT_96, ppmin_press_cb, ppmin_select_cb, NULL); row += 20; GUI_CreateLabelBox(&gui->protolbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Protocol")); GUI_CreateTextSelect(&gui->proto, COL2, row, TEXTSELECT_96, proto_press_cb, protoselect_cb, NULL); row += 20; GUI_CreateLabelBox(&gui->numchlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("# Channels")); GUI_CreateTextSelect(&gui->numch, COL2, row, TEXTSELECT_96, NULL, numchanselect_cb, NULL); row += 24; GUI_CreateLabelBox(&gui->pwrlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Tx power")); GUI_CreateTextSelect(&gui->pwr, COL2, row, TEXTSELECT_96, NULL, powerselect_cb, NULL); row += 20; if(Model.fixed_id == 0) strlcpy(mp->fixed_id, _tr("None"), sizeof(mp->fixed_id)); else sprintf(mp->fixed_id, "%d", (int)Model.fixed_id); GUI_CreateLabelBox(&gui->fixedidlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Fixed ID")); GUI_CreateButton(&gui->fixedid, COL2, row, BUTTON_96x16, show_text_cb, fixedid_cb, mp->fixed_id); GUI_CreateButton(&gui->bind, COL3, row, BUTTON_64x16, show_bindtext_cb, bind_cb, NULL); configure_bind_button(); }