static void dialog_ok_cb(u8 state, void * data) { (void)state; (void)data; guiObject_t *obj = (guiObject_t *)&gui->elem[lp->selected_for_move]; draw_elements(); if(obj && OBJ_IS_USED(obj)) select_for_move((guiLabel_t *)obj); }
void newelem_press_cb(guiObject_t *obj, const void *data) { (void)obj; (void)data; int i = create_element(); if (i >= 0) { draw_elements(); select_for_move(&gui->elem[i]); } }
static unsigned _layaction_cb(u32 button, unsigned flags, void *data) { (void)data; if(CHAN_ButtonIsPressed(button, BUT_EXIT)) { if (flags & BUTTON_RELEASE) { if (lp->selected_for_move >= 0) { set_selected_for_move(-1); } else { PAGE_Pop(); } } return 1; } if (! GUI_GetSelected() || flags & BUTTON_RELEASE) return 0; if (CHAN_ButtonIsPressed(button, BUT_ENTER) && lp->selected_for_move < 0) { select_for_move((guiLabel_t *)GUI_GetSelected()); return 1; } if (lp->selected_for_move < 0) return 0; if(CHAN_ButtonIsPressed(button, BUT_LEFT)) { xpos_cb(NULL, (flags & BUTTON_LONGPRESS) ? -2 : -1, NULL); return 1; } if(CHAN_ButtonIsPressed(button, BUT_RIGHT)) { xpos_cb(NULL, (flags & BUTTON_LONGPRESS) ? 2 : 1, NULL); return 1; } if(CHAN_ButtonIsPressed(button, BUT_UP)) { ypos_cb(NULL, (flags & BUTTON_LONGPRESS) ? -2 : -1, NULL); return 1; } if(CHAN_ButtonIsPressed(button, BUT_DOWN)) { ypos_cb(NULL, (flags & BUTTON_LONGPRESS) ? 2 : 1, NULL); return 1; } return 0; }
void PAGE_MainLayoutInit(int page) { (void)page; memset(lp, 0, sizeof(*lp)); BUTTON_RegisterCallback(&action, CHAN_ButtonMask(BUT_ENTER) | CHAN_ButtonMask(BUT_EXIT) | CHAN_ButtonMask(BUT_LEFT) | CHAN_ButtonMask(BUT_LEFT) | CHAN_ButtonMask(BUT_RIGHT) | CHAN_ButtonMask(BUT_UP) | CHAN_ButtonMask(BUT_DOWN), BUTTON_PRESS | BUTTON_LONGPRESS | BUTTON_PRIORITY, _action_cb, NULL); PAGE_ShowHeader(NULL); lp->long_press = 0; lp->newelem = 0; lp->selected_x = 0; const u16 color[5] = { RGB888_to_RGB565(0xaa, 0x44, 0x44), RGB888_to_RGB565(0x44, 0xaa, 0x44), RGB888_to_RGB565(0x44, 0x44, 0xaa), RGB888_to_RGB565(0x44, 0x44, 0x44), RGB888_to_RGB565(0x33, 0x33, 0x33), }; for (int i = 0 ; i < 5; i++) gui->desc[i] = (struct LabelDesc){ .font = 0, .font_color = 0xffff, .fill_color = color[i], .outline_color = 0, .style = LABEL_FILL}; gui->desc[1].font = TINY_FONT.font; //Special case for trims GUI_CreateIcon(&gui->newelem, 32, 0, &icons[ICON_LAYOUT_ADD], add_dlg_cb, NULL); GUI_CreateIcon(&gui->editelem, 64, 0, &icons[ICON_LAYOUT_CFG], cfg_cb, NULL); GUI_SetHidden((guiObject_t *)&gui->editelem, 1); //GUI_CreateTextSelect(&gui->newelem, 36, 12, TEXTSELECT_96, newelem_press_cb, newelem_cb, NULL); GUI_CreateLabel(&gui->xlbl, 80+18, 9, NULL, TITLE_FONT, "X"); GUI_CreateTextSelect(&gui->x, 88+18, 8, TEXTSELECT_64, NULL, xpos_cb, NULL); GUI_SetSelectable((guiObject_t *)&gui->x, 0); GUI_CreateLabel(&gui->ylbl, 164+16, 9, NULL, TITLE_FONT, "Y"); GUI_CreateTextSelect(&gui->y, 172+16, 8, TEXTSELECT_64, NULL, ypos_cb, NULL); GUI_SetSelectable((guiObject_t *)&gui->y, 0); GUI_SelectionNotify(notify_cb); draw_elements(); if (show_config_menu) { lp->selected_for_move = -1; select_for_move(&gui->elem[show_config_menu]); show_config(); show_config_menu = 0; } } void PAGE_MainLayoutEvent() { } void PAGE_MainLayoutExit() { BUTTON_UnregisterCallback(&action); }