static void notify_cb(guiObject_t * obj) { if(obj && mp->cur_template == MIXERTEMPLATE_EXPO_DR && OBJ_IS_SCROLLABLE(obj)) { /* We exploit the fact that each row has only one selecteable object */ int row_offset = GUI_ScrollableGetObjRowOffset(&gui->scrollable, obj); int idx = (row_offset >> 8) + (row_offset & 0xff); if(idx >= EXPO_SWITCH1 && idx <= EXPO_SCALE1) { if(mp->cur_mixer != &mp->mixer[1]) { sync_mixers(); mp->cur_mixer = &mp->mixer[1]; GUI_Redraw(&gui->graph); } } else if(idx >= EXPO_SWITCH2 && idx <= EXPO_SCALE2) { if(mp->cur_mixer != &mp->mixer[2]) { sync_mixers(); mp->cur_mixer = &mp->mixer[2]; GUI_Redraw(&gui->graph); } } else { if(mp->cur_mixer != &mp->mixer[0]) { mp->cur_mixer = &mp->mixer[0]; GUI_Redraw(&gui->graph); } } }
static void icon_notify_cb(guiObject_t *obj) { int idx = GUI_ScrollableGetObjRowOffset(&gui->scrollable, obj); if (idx < 0) return; int absrow = (idx >> 8) + (idx & 0xff); change_icon(absrow); }
void reset_timerperm_cb(guiObject_t *obj, const void *data) { long index = (long)data & 0xff; // don't include this in Devo7e due to memory restrictions #if HAS_PERMANENT_TIMER if (index & 0x80) { // set current_selected = GUI_ScrollableGetObjRowOffset(&gui->scrollable, GUI_GetSelected()); PAGE_PushByID(PAGEID_SETTIMER, index & 0x7f); } else // reset #endif PAGE_ShowResetPermTimerDialog(obj,(void *)(index & 0x7f)); }
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 } }
void PAGE_TelemconfigExit() { current_selected = GUI_ScrollableGetObjRowOffset(&gui->scrollable, GUI_GetSelected()); }
void PAGE_TelemconfigExit() { if(telem_state_check()) current_selected = GUI_ScrollableGetObjRowOffset(&gui->scrollable, GUI_GetSelected()); }
void PAGE_TravelAdjExit() { current_selected = GUI_ScrollableGetObjRowOffset(&gui->scrollable, GUI_GetSelected()); }