BOOL OSD_ScrollLinePgUp(UINT32 count, UINT32 depth, UINT32 *pcur_top, UINT32 *pcur_pos) { if (count <= 1) return FALSE; UINT32 top_pos = *pcur_top; UINT32 cur_pos = *pcur_pos; UINT32 max_top = OSD_GetMaxTopPos(count, &depth); if(top_pos > 0) { if (top_pos >= depth) { top_pos -= depth; } else// if (top_pos < depth) { top_pos = 0; } } else// if(top_pos == 0) { top_pos = count - depth; } *pcur_top = top_pos; *pcur_pos = cur_pos; return TRUE; }
BOOL OSD_ScrollLinePgDown(UINT32 count, UINT32 depth, UINT32 *pcur_top, UINT32 *pcur_pos) { if (count <= 1) return FALSE; UINT32 top_pos = *pcur_top; UINT32 cur_pos = *pcur_pos; UINT32 max_top = OSD_GetMaxTopPos(count, &depth); if (top_pos + depth < count) { if(top_pos + depth + depth < count) { top_pos += depth; } else { top_pos = count - depth; } } else //last page { top_pos = 0; } *pcur_top = top_pos; *pcur_pos = cur_pos; return TRUE; }
BOOL OSD_ScrollLineUp(UINT32 count, UINT32 depth, UINT32 *pcur_top, UINT32 *pcur_pos) { if (count <= 1) return FALSE; UINT32 top_pos = *pcur_top; UINT32 cur_pos = *pcur_pos; UINT32 max_top = OSD_GetMaxTopPos(count, &depth); if (cur_pos) { cur_pos--; } else { if (top_pos) { top_pos--; } else { top_pos = max_top; cur_pos = depth - 1; } } *pcur_top = top_pos; *pcur_pos = cur_pos; return TRUE; }
BOOL submenu_set_items_network() { UINT32 i; sub_menu_item_t* menu_item; CONTAINER* menu_item_obj; POBJECT_HEAD pObj,pObjName,pObjSet; CONTAINER* win_sub_menu = &g_win_submenu; UINT8 action; BOOL ret = TRUE; sub_menu_t* sub_menu=&sub_menu_network; if (sub_menu->item_count <= C_SUBMENU_PAGE) { sub_menu->list_page = sub_menu->item_count; } else { sub_menu->list_page = C_SUBMENU_PAGE; } UINT32 count = sub_menu->item_count; UINT32 depth = sub_menu->list_page; UINT32 max_top = OSD_GetMaxTopPos(count, &depth); if (sub_menu->list_top >= sub_menu->list_sel) sub_menu->list_top = sub_menu->list_sel; else if (sub_menu->list_sel - sub_menu->list_top >= sub_menu->list_page) sub_menu->list_top = sub_menu->list_sel + 1 - sub_menu->list_page; if (sub_menu->list_top > max_top) sub_menu->list_top = max_top; if (submenu_item_attr(sub_menu, sub_menu->list_sel) != C_ATTR_ACTIVE) { ret = submenu_scroll_down(sub_menu); } sub_menu_desc = sub_menu; /*Set menu callback */ if(sub_menu->menu_callback != NULL) OSD_SetCallback(win_sub_menu, sub_menu->menu_callback); else OSD_SetCallback(win_sub_menu, sm_con_callback); submenu_set_one_page(sub_menu); //SCROLL_BAR* sb = &subm_scrollbar; //OSD_SetScrollBarMax(sb, sub_menu->item_count); //OSD_SetScrollBarPos(sb, sub_menu->list_sel); return ret; }
BOOL OSD_ScrollLineDown(UINT32 count, UINT32 depth, UINT32 *pcur_top, UINT32 *pcur_pos) { if (count <= 1) return FALSE; UINT32 top_pos = *pcur_top; UINT32 cur_pos = *pcur_pos; UINT32 max_top = OSD_GetMaxTopPos(count, &depth); if (cur_pos < depth - 1) { cur_pos++; } else { if (max_top) { if (top_pos < max_top) { top_pos++; } else { top_pos = 0; cur_pos = 0; } } else { cur_pos = 0; } } *pcur_top = top_pos; *pcur_pos = cur_pos; return TRUE; }
BOOL submenu_set_items(sub_menu_t* sub_menu) { UINT32 i; sub_menu_item_t* menu_item; CONTAINER* menu_item_obj; POBJECT_HEAD pObj,pObjName,pObjSet; CONTAINER* win_sub_menu = &g_win_submenu; UINT8 action; BOOL ret = TRUE; UINT8 focusID; focusID = OSD_GetFocusID((POBJECT_HEAD)&g_win_mainmenu); if (sub_menu->item_count <= C_SUBMENU_PAGE) { #ifdef SATLLITE_SHARE_SUPPORT //guop add 20100903 if(focusID==2) { if(share_flag == FALSE) { sub_menu->item_count =3; } else { sub_menu->item_count =4; } } #endif sub_menu->list_page = sub_menu->item_count; } else { sub_menu->list_page = C_SUBMENU_PAGE; } UINT32 count = sub_menu->item_count; UINT32 depth = sub_menu->list_page; UINT32 max_top = OSD_GetMaxTopPos(count, &depth); if (sub_menu->list_top >= sub_menu->list_sel) sub_menu->list_top = sub_menu->list_sel; else if (sub_menu->list_sel - sub_menu->list_top >= sub_menu->list_page) sub_menu->list_top = sub_menu->list_sel + 1 - sub_menu->list_page; if (sub_menu->list_top > max_top) sub_menu->list_top = max_top; if (submenu_item_attr(sub_menu, sub_menu->list_sel) != C_ATTR_ACTIVE) { ret = submenu_scroll_down(sub_menu); } sub_menu_desc = sub_menu; /*Set menu callback */ if(sub_menu->menu_callback != NULL) OSD_SetCallback(win_sub_menu, sub_menu->menu_callback); else OSD_SetCallback(win_sub_menu, sm_con_callback); submenu_set_one_page(sub_menu); SCROLL_BAR* sb = &subm_scrollbar; OSD_SetScrollBarMax(sb, sub_menu->item_count); OSD_SetScrollBarPos(sb, sub_menu->list_sel); return ret; }