void PAGE_ChangeByID(enum PageID id, s8 menuPage) { if ( modal || GUI_IsModal()) return; PAGE_SaveCurrentPos(); page_scrollable = NULL; PAGE_Exit(); GUI_SelectionNotify(NULL); cur_page = id; BUTTON_InterruptLongPress(); //Make sure button press is not passed to the new page if (pages[cur_page].init == PAGE_MainInit) quick_page_enabled = 1; else if (pages[cur_page].init == PAGE_MenuInit) quick_page_enabled = 0; PAGE_RemoveAllObjects(); if (HAS_TOUCH) { GUI_ChangeSelectionOnTouch(1); } ActionCB = default_button_action_cb; pages[cur_page].init(menuPage); if (page_scrollable) { guiObject_t *obj = GUI_ShowScrollableRowOffset(page_scrollable, *current_selected); if(! HAS_TOUCH || ! GUI_InTouch()) GUI_SetSelected(obj); } }
void PAGE_VideoSetupInit(int page) { (void)page; show_titlerow(_tr("Video")); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, 4, row4_cb, NULL, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
void PAGE_LanguageInit(int page) { int num_lang = count_num_languages(); PAGE_ShowHeader(_tr("Press ENT to change")); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, num_lang, row_cb, NULL, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, Transmitter.language)); }
static void _show_page() { PAGE_ShowHeader(_tr("Timers")); // using the same name as related menu item to reduce language strings PAGE_SetActionCB(_action_cb); GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LCD_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, LCD_HEIGHT - ITEM_HEIGHT, NUM_TIMERS, row_cb, getobj_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, current_selected)); }
void PAGE_TrimEditInit(int page) { struct Trim *trim = MIXER_GetAllTrims(); tp->index = page; tp->trim = trim[tp->index]; GUI_CreateLabelBox(&guit->header, 0, 0, LABEL2_WIDTH, HEADER_HEIGHT, &TITLE_FONT, GUI_Localize, NULL, _tr_noop("Edit")); GUI_CreateButtonPlateText(&guit->save, BUTTON2_X, BUTTON2_Y, BUTTON2_WIDTH, LINE_HEIGHT, &BUTTON_FONT, GUI_Localize, okcancel_cb, _tr_noop("Save")); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, ITEM_LAST, row2_cb, getobj2_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
void PAGE_SwitchAssignInit(int page) { (void)page; PAGE_SetActionCB(_action_cb); PAGE_SetModal(0); PAGE_RemoveAllObjects(); refresh_switches(); PAGE_ShowHeader(_tr("Press ENT to change")); GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LCD_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, ITEM_SPACE, SWITCHFUNC_LAST, row_cb, getobj_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
void PAGE_TrainConfigInit(int page) { (void)page; int mode = PPMin_Mode(); show_titlerow(mode == PPM_IN_TRAIN1 ? _tr("Trainer Cfg (Channel)") : mode == PPM_IN_TRAIN2 ? _tr("Trainer Cfg (Stick)") : _tr("PPMIn Cfg (Extend)")); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, PPMin_Mode() == PPM_IN_SOURCE ? 3 : 3 + MAX_PPM_IN_CHANNELS, row3_cb, NULL, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
void PAGE_TxConfigureInit(int page) { (void)page; cp->enable = CALIB_NONE; PAGE_SetActionCB(_action_cb); PAGE_SetModal(0); PAGE_RemoveAllObjects(); PAGE_ShowHeader(_tr("Configure")); cp->total_items = 0; GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, ITEM_LAST, row_cb, getobj_cb, size_cb, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, current_selected)); }
static void _show_page() { PAGE_SetActionCB(_action_cb); //PAGE_ShowHeader(_tr("Trim")); // no title for devo10 PAGE_ShowHeader(_tr("Input")); GUI_CreateLabelBox(&gui->steplbl, 40, 0, 30, ITEM_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr("Step")); // no enought space in Devo10, so just display trim + in the 1st page //GUI_CreateLabelBox(w + 40, 0, 0, ITEM_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr("Trim -")); GUI_CreateLabelBox(&gui->trimposlbl, 80, 0, 30, ITEM_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr("Trim +")); GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LCD_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, ITEM_SPACE, NUM_TRIMS, row_cb, getobj_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, current_selected)); }
void PAGE_ModelConfigInit(int page) { (void)page; switch (Model.type) { case MODELTYPE_HELI: show_titlerow(_tr("Helicopter")); break; case MODELTYPE_PLANE: show_titlerow(_tr("Airplane")); break; case MODELTYPE_MULTI: show_titlerow(_tr("Multirotor")); break; } if (Model.type == MODELTYPE_HELI) { GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, ITEM_LAST, row_cb, NULL, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); } }
static void _edit_cb(guiObject_t *obj, const void *data) { (void)obj; PAGE_SetActionCB(_sub_action_cb); struct Trim *trim = MIXER_GetAllTrims(); PAGE_SetModal(1); tp->index = (long)data; tp->trim = trim[tp->index]; PAGE_RemoveAllObjects(); PAGE_ShowHeader(""); // to draw a line only u8 w = 50; GUI_CreateButtonPlateText(&guit->save, LCD_WIDTH - w -1, 0, w, ITEM_HEIGHT, &DEFAULT_FONT, NULL, 0x0000, okcancel_cb, (void *)_tr("Save")); GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LCD_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, ITEM_SPACE, ITEM_LAST, row2_cb, getobj2_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
void PAGE_TelemconfigInit(int page) { (void)label_cb; if (page < 0) page = current_selected; PAGE_SetModal(0); PAGE_RemoveAllObjects(); PAGE_SetActionCB(_action_cb); if (telem_state_check() == 0) { GUI_CreateLabelBox(&gui->msg, 20, 10, 0, 0, &DEFAULT_FONT, NULL, NULL, tp.str); OBJ_SET_USED(&gui->value, 0); // A indication not allow to scroll up/down return; } PAGE_ShowHeader(_tr("Telemetry config")); // using the same name as related menu item to reduce language strings GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LCD_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, ITEM_SPACE, TELEM_NUM_ALARMS, row_cb, getobj_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, current_selected)); }
void PAGE_TravelAdjInit(int page) { (void)page; //if (page < 0 && current_selected > 0) // enter this page from childen page , so we need to get its previous mp->current_selected item // page = current_selected; PAGE_SetActionCB(_action_cb); PAGE_SetModal(0); PAGE_RemoveAllObjects(); PAGE_ShowHeader(("")); // draw a underline only u8 w = 35; u8 x = 50; GUI_CreateLabelBox(&gui->dnlbl, x+2, 0, w, LINE_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr("Down")); GUI_CreateLabelBox(&gui->uplbl, x + w +5, 0, w, LINE_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr("Up")); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, Model.num_channels, row_cb, getobj_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, current_selected)); }
void PAGE_ModelProtoInit(int page) { (void) page; show_titlerow(ProtocolNames[Model.protocol]); proto_strs = PROTOCOL_GetOptions(); int idx = 0; int pos = 0; while(idx < NUM_PROTO_OPTS) { if(proto_strs[pos] == NULL) break; while(proto_strs[++pos]) ; pos++; idx++; } GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, idx, row2_cb, NULL, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
static void _show_complex(int page_change) { GUI_SelectionNotify(NULL); mp->max_scroll = 2; int selection = 0; if (page_change) { selection = GUI_ScrollableGetObjRowOffset(&gui->scrollable, GUI_GetSelected()); } mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, 2 * ITEM_SPACE, COMPLEX_LAST - COMMON_LAST, complex_row_cb, simple_getobj_cb, complex_size_cb, NULL); // The following items are not draw in the logical view; GUI_CreateBarGraph(&gui->bar, LEFT_VIEW_WIDTH +10, LCD_HEIGHT - RIGHT_VIEW_HEIGHT -1, 5, RIGHT_VIEW_HEIGHT, CHAN_MIN_VALUE, CHAN_MAX_VALUE, BAR_VERTICAL, eval_chan_cb, NULL); GUI_CreateXYGraph(&gui->graph, 77, LCD_HEIGHT - RIGHT_VIEW_HEIGHT -1, RIGHT_VIEW_HEIGHT, RIGHT_VIEW_HEIGHT, CHAN_MIN_VALUE, CHAN_MIN_VALUE * 5 / 4, CHAN_MAX_VALUE, CHAN_MAX_VALUE * 5 / 4, 0, 0, eval_mixer_cb, curpos_cb, touch_cb, mp->cur_mixer); if (page_change) { GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, selection)); } else { GUI_Select1stSelectableObj(); // bug fix: muset reset to 1st selectable item, otherwise ,the focus will be wrong } }