void PAGE_Change(int dir) { if ( modal || GUI_IsModal()) return; if (Model.mixer_mode != 0 || (cur_page >= sizeof(groups) / sizeof(struct page_group) - 1) || groups[cur_page].group & 0x80) { //Don't use left/right on model pages in standard mode return; } u8 nextpage = cur_page; if(dir > 0) { if (groups[nextpage+1].group == groups[cur_page].group) { nextpage++; } else { while(nextpage && groups[nextpage-1].group == groups[cur_page].group) nextpage--; } } else if (dir < 0) { if (nextpage && groups[nextpage-1].group == groups[cur_page].group) { nextpage--; } else { while(groups[nextpage+1].group == groups[cur_page].group) nextpage++; } } if (cur_page == nextpage) return; PAGE_Exit(); PAGE_ChangeByID(groups[nextpage].id); }
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_ChangeByID(enum PageID id) { if (cur_page != id && id < sizeof(pages) / sizeof(struct page)) { PAGE_Exit(); cur_page = id; PAGE_RemoveAllObjects(); pages[cur_page].init(0); } }