void PAGE_LoadSaveInit(int page) { const char *name; int num_models; int selected; int width = LCD_WIDTH; mp->menu_type = page; OBJ_SET_USED(&gui->image, 0); if (page == SAVE_MODEL) { name = _tr("Press ENT to copy to"); } else { name = _tr("Press ENT to load"); } if (page == LOAD_ICON) { width = 75; GUI_CreateImage(&gui->image, 75, 20, 52, 36, mp->iconstr); GUI_SelectionNotify(icon_notify_cb); } selected = get_scroll_count(page); num_models = mp->total_items; /* set by get_scroll_page */ PAGE_ShowHeader(name); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, width, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, num_models, row_cb, NULL, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowCol(&gui->scrollable, selected, 0)); }
void connect_object(struct guiObject *obj) { if (objHEAD == NULL) { objHEAD = obj; } else { struct guiObject *ptr = objHEAD; while(ptr->next) ptr = ptr->next; ptr->next = obj; } OBJ_SET_USED(obj, 1); OBJ_SET_DIRTY(obj, 1); obj->next = NULL; }
static void _show_simple() { GUI_SelectionNotify(NULL); GUI_Select1stSelectableObj(); // bug fix: muset reset to 1st selectable item, otherwise ,the focus will be wrong mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, 2 * ITEM_SPACE, SIMPLE_LAST, simple_row_cb, simple_getobj_cb, NULL, NULL); // The following items are not draw in the logical view; 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->mixer[0]); OBJ_SET_USED(&gui->bar, 0); }
static void _show_list(int loadsave,u8 num_models) { if (loadsave == LOAD_ICON) { mp->modeltype = Model.type; guiObject_t *obj = GUI_CreateTextSelectPlate(&gui->ico, 10, ITEM_HEIGHT + 1, LCD_WIDTH - 20, ITEM_HEIGHT, &DEFAULT_FONT, iconpress_cb, iconstr_cb, (void *)(long)num_models); GUI_CreateImage(&gui->image, LCD_WIDTH / 2 - 18, LCD_HEIGHT-37, 52, 36, mp->iconstr); GUI_SetSelected(obj); } else { OBJ_SET_USED(&gui->image, 0); guiObject_t *obj = GUI_CreateListBoxPlateText(&gui->listbox, 0, ITEM_HEIGHT + 1, LCD_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, num_models, mp->selected-1, &DEFAULT_FONT, LISTBOX_KEY_UPDOWN, // change listbox's browser key to up/down since there is only 1 widget in this page string_cb, select_cb, _press_cb, (void *)(long)loadsave); GUI_SetSelected(obj); } }
void GUI_RemoveObj(struct guiObject *obj) { switch(obj->Type) { case Dialog: { GUI_HandleModalButtons(0); GUI_RemoveHierObjects(obj->next); objDIALOG = NULL; break; } case Scrollbar: BUTTON_UnregisterCallback(&((guiScrollbar_t *)obj)->action); break; case Scrollable: GUI_RemoveScrollableObjs(obj); GUI_RemoveObj((guiObject_t *)&((guiScrollable_t *)obj)->scrollbar); break; case Keyboard: BUTTON_UnregisterCallback(&((guiKeyboard_t *)obj)->action); break; case Image: case XYGraph: _GUI_UnmapWindow(1); break; default: break; } if (objTOUCHED == obj) objTOUCHED = NULL; if (objSELECTED == obj) objSELECTED = NULL; OBJ_SET_USED(obj, 0); // Reattach linked list struct guiObject *prev = objHEAD; if (prev == obj) { objHEAD = obj->next; } else { while(prev) { if(prev->next == obj) { prev->next = obj->next; break; } prev = prev->next; } } FullRedraw = objHEAD ? REDRAW_IF_NOT_MODAL : REDRAW_EVERYTHING; }
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_TelemconfigInit(int page) { (void)label_cb; (void)page; //if (page < 0) // page = current_selected; PAGE_SetModal(0); PAGE_RemoveAllObjects(); if (telem_state_check() == 0) { GUI_CreateLabelBox(&gui->msg, MSG_X, MSG_Y, 0, 0, &DEFAULT_FONT, NULL, NULL, tempstring); 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, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, TELEM_NUM_ALARMS, row_cb, getobj_cb, NULL, NULL); PAGE_SetScrollable(&gui->scrollable, ¤t_selected); }