static void show_iconsel_page(int SelectedIcon) { struct ImageMap img; int toggleinput = MIXER_SRC(Model.pagecfg2.elem[tp->tglidx].src); PAGE_RemoveAllObjects(); PAGE_ShowHeader(INPUT_SourceNameAbbrevSwitch(tempstring, toggleinput)); GUI_CreateButton(&gui->revert, LCD_WIDTH-96-8, 4, BUTTON_96, revert_str_cb, revert_cb, NULL); // Show name of source for toggle icon // style the switch textbox struct LabelDesc outline = { .font = DEFAULT_FONT.font, .style = LABEL_TRANSPARENT, .font_color = DEFAULT_FONT.font_color, .fill_color = DEFAULT_FONT.fill_color, .outline_color = DEFAULT_FONT.outline_color }; GUI_CreateRect(&gui->toggleframe, 80+80*SelectedIcon, 39, 77, 33, &outline); GUI_CreateLabelBox(&gui->switchbox, 4, 47, 70, 22, &NORMALBOX_FONT, NULL, NULL, INPUT_SourceNameAbbrevSwitch(tempstring, Model.pagecfg2.elem[tp->tglidx].src)); int num_positions = INPUT_NumSwitchPos(toggleinput); if(num_positions < 2) num_positions = 2; GUI_CreateLabelBox(&gui->togglelabel[0], 94, 50, 30, 14, &LABEL_FONT, NULL, NULL, _tr("Pos 0")); img = TGLICO_GetImage(Model.pagecfg2.elem[tp->tglidx].extra[0]); GUI_CreateImageOffset(&gui->toggleicon[0], 124, 40, TOGGLEICON_WIDTH, TOGGLEICON_HEIGHT, img.x_off, img.y_off, img.file, SelectedIcon == 0 ? tglico_reset_cb : tglico_setpos_cb, (void *)0L); GUI_CreateLabelBox(&gui->togglelabel[1], 174, 50, 30, 14, &LABEL_FONT, NULL, NULL, _tr("Pos 1")); img = TGLICO_GetImage(Model.pagecfg2.elem[tp->tglidx].extra[1]); GUI_CreateImageOffset(&gui->toggleicon[1], 204, 40, TOGGLEICON_WIDTH, TOGGLEICON_HEIGHT, img.x_off, img.y_off, img.file, SelectedIcon == 1 ? tglico_reset_cb : tglico_setpos_cb, (void *)1L); if (num_positions == 3) { GUI_CreateLabelBox(&gui->togglelabel[2], 254, 50, 30, 14, &LABEL_FONT, NULL, NULL, _tr("Pos 2")); img = TGLICO_GetImage(Model.pagecfg2.elem[tp->tglidx].extra[2]); GUI_CreateImageOffset(&gui->toggleicon[2], 284, 40, TOGGLEICON_WIDTH, TOGGLEICON_HEIGHT, img.x_off, img.y_off, img.file, SelectedIcon == 2 ? tglico_reset_cb : tglico_setpos_cb, (void *)2L); } int count = get_toggle_icon_count(); int max_scroll = (count + NUM_SYMBOL_COLS - 1) / NUM_SYMBOL_COLS - (NUM_SYMBOL_ROWS - 1); if (max_scroll > 1) GUI_CreateScrollbar(&gui->scrollbar, LCD_WIDTH-16, 80, LCD_HEIGHT-80, max_scroll, NULL, scroll_cb, (void *)(long)SelectedIcon); show_icons(SelectedIcon, 0); } void PAGE_ToggleEditInit(int page) { tp->tglidx = page; memcpy(tp->tglicons, Model.pagecfg2.elem[tp->tglidx].extra, sizeof(tp->tglicons)); show_iconsel_page(0); }
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_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_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_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); }
guiObject_t *GUI_CreateScrollable(guiScrollable_t *scrollable, u16 x, u16 y, u16 width, u16 height, u8 row_height, u8 item_count, int (*row_cb)(int absrow, int relrow, int x, void *data), guiObject_t * (*getobj_cb)(int relrow, int col, void *data), int (*size_cb)(int absrow, void *data), void *data) { struct guiObject *obj = (guiObject_t *)scrollable; struct guiBox *box = &obj->box; CLEAR_OBJ(scrollable); scrollable->row_cb = row_cb; scrollable->getobj_cb = getobj_cb; scrollable->row_height = row_height; scrollable->item_count = item_count; scrollable->max_visible_rows = (height + row_height / 2) / row_height; if (scrollable->max_visible_rows > item_count) scrollable->max_visible_rows = item_count; scrollable->size_cb = size_cb; scrollable->cb_data = data; scrollable->head = NULL; scrollable->cur_row = 0; box->x = x; box->y = y; box->width = width - ARROW_WIDTH; box->height = height; obj->Type = Scrollable; OBJ_SET_TRANSPARENT(obj, 0); OBJ_SET_SELECTABLE(obj, 1); //Scrollables aren't really selectable connect_object(obj); GUI_CreateScrollbar(&scrollable->scrollbar, x + width - ARROW_WIDTH, y, height, item_count, obj, scroll_cb, scrollable); create_scrollable_objs(scrollable, 0); //force selection to be current object-if there are no selectable contents if (! has_selectable(scrollable)) objSELECTED = obj; return obj; }