📄 win_cas_menu.c
字号:
#include <api/libgui/osd_lib.h>
#include <api/libc/printf.h>
#include "osd_config.h"
#include "win_com.h"
#include "win_small_list.h"
#include "ap_root.h"
#include "cas_menu.h"
#define WIN_CAS_LS_FIELD_CNT 1
/*******************************************************************************
* WINDOW's objects declaration
*******************************************************************************/
static WINDOW *win_cas_menu = &win_body;
static LISTFIELD win_cas_menu_lst_field[WIN_CAS_LS_FIELD_CNT] =
{
{85, WSTL_EDIT_SAT_TXT_SH, LEFT_ASSIGN | VMID_ASSIGN, FIELD_IS_TEXT,\
{(UINT8**)win_sat_lst_txt_addr}, 0},
};
extern struct CAS_MENU_COMM info_cas_menu;
static struct CAS_MENU_COMM *p_cas_menu_info = &info_cas_menu;
static UINT8 cas_menu_focous=0;
void win_cas_menu_update_txt(struct WinReturnInfo *param)
{
if(WIN_DATA_NOCHANGE == param->type || WIN_MODIFY_DATA == param->type)
return;
OSD_DrawWindow(win_cas_menu, OSD_FLASHDATA);
}
VKEY win_cas_menu_keymap(OBJECTHEAD *obj, UINT32 input)
{
VKEY vact;
switch(input)
{
case V_KEY_LEFT:
vact = VACT_PAGEUP;
break;
case V_KEY_RIGHT:
vact = VACT_PAGEDOWN;
break;
case V_KEY_ENTER:
vact = VACT_SELECT;
break;
case V_KEY_UP:
vact = VACT_UP;
break;
case V_KEY_DOWN:
vact = VACT_DOWN;
break;
default:
vact = VACT_PASS;
break;
}
return vact;
}
UINT8 win_cas_menu_lst_proc(OBJECTHEAD* obj, UINT32 input, UINT32 para1, UINT32 para2)
{
UINT8 result = PROC_LOOP;
LIST* l = (LIST*)obj;
struct WinReturnInfo * ret = (struct WinReturnInfo *)para1;
win_popup_choice_t choice;
UINT16 pos ;
VKEY vact = win_cas_menu_keymap(obj, input);
pos = OSD_GetListCurPoint(l);
switch(vact)
{
case VACT_SELECT:
if(p_cas_menu_info->total_cnt)
{
//fix me
wincom_close_title();
OSD_CloseWindow(win_cas_menu, OSD_FLASHDATA);
OSD_UpdateWinVscr(win_cas_menu, TRUE);
result = PROC_CLOSE;
cas_menu_focous=p_cas_menu_info->cur_cas_pos;
CAS_OSD_SetCurrentCASIndex(p_cas_menu_info->cur_cas_pos);
ap_send_cmd_to_control(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&ap_key_input_hdl, FALSE);
}
break;
case VACT_PAGEDOWN:
if(p_cas_menu_info->total_cnt)
{
OSD_ListPageDown(l);
OSD_TrackWholeList( l, OSD_FLASHDATA);
//OSD_TrackList(l, OSD_FLASHDATA);
}
break;
case VACT_PAGEUP:
if(p_cas_menu_info->total_cnt)
{
OSD_ListPageUp(l);
OSD_TrackWholeList( l, OSD_FLASHDATA);
//OSD_TrackList(l, OSD_FLASHDATA);
}
break;
default:
result = OSD_ListProc(obj, input, para1, para2);
break;
}
//OSD_DrawWindow(win_cas_menu, OSD_FLASHDATA);
return result;
}
/*********************************************************************************
* Window handle's open,proc and handle
**********************************************************************************/
static void win_cas_menu_display(UINT32 para1, struct WinReturnInfo *para2)
{
UINT8 i;
UINT16 sat_cnt;
// open window
OSD_OpenWindow(OSD_GetSysDefXScreen(), win_cas_menu, 0, 0,600,400,OSD_FLASHDATA);
OSD_SetColor(win_cas_menu, 0, 0, 0, 0);
// add title
wincom_open_title(43, 0, RS_KEYEDIT, IM_MENUSMALL_02);
// add content
sat_cnt = (0 ==p_cas_menu_info->total_cnt) ? 1 : p_cas_menu_info->total_cnt;
OSD_AddList(win_cas_menu, &win_sat_lst, 54, 68,500 , 300);
OSD_SetColor((VP)(&win_sat_lst), WSTL_CONTAINER_3_SH, WSTL_CONTAINER_3_HL,WSTL_CONTAINER_3_HL, 0);
// set list
OSD_SetListStyle(&win_sat_lst, LISTSTY_MENU | LISTSTY_GRID | LISTSTY_SCROLL);
OSD_SetListBodyStyle(&win_sat_lst, 0, 0);
OSD_SetListAspect(&win_sat_lst, 10, WSTL_CONTAINER_3_SH, 24, 6);
OSD_SetPosi((VP)(&win_sat_lst), 1, 1, 1, 1, 1);
OSD_SetListContent(&win_sat_lst, WIN_CAS_LS_FIELD_CNT, win_cas_menu_lst_field, sat_cnt);
OSD_SetProc((VP)(&win_sat_lst), win_cas_menu_lst_proc);
OSD_SetFocusObjectID(win_cas_menu, 0x01);
//list bar
OSD_AddBar(win_cas_menu, &bar_sat_list, 560, 68, 24, 300);
OSD_SetListBar(&win_sat_lst, &bar_sat_list, BAR_RIGHT);
OSD_SetColor((VP)&bar_sat_list, 0, 0, 0, 0);
OSD_SetBarStyle(&bar_sat_list, BAR_STY_SCROLL, BAR_VERT, BAR_NOSCALE, \
WSTL_SAT_LIST_BAR_MID_SH, SAT_LIST_BAR_MID_W, SCROLL_ICON_VER1, BAR_SHOW_ARR );
OSD_ShiftListNewPoint(&win_sat_lst, cas_menu_focous);
OSD_SetBarValue(&bar_sat_list,0, p_cas_menu_info->total_cnt, cas_menu_focous, 1);
wincom_display_win(win_cas_menu,FALSE);
}
static BYTE win_cas_menu_proc(UINT32 msgtype, UINT32 msgSubType, UINT32 msgcode, struct WinReturnInfo *para)
{
UINT8 bResult = PROC_LOOP;
OSD_WinVscrInit(win_cas_menu);
if(CTL_MSG_TYPE_KEY == msgtype)
{
bResult = OSD_RespondKey(win_cas_menu, msgcode, (UINT32)para, 0);
p_cas_menu_info->cur_cas_pos= OSD_GetListCurPoint(&win_sat_lst);
}
else if(CTL_MSG_TYPE_CMD == msgtype)
{
if(CTRL_MSG_SUBTYPE_CMD_EXIT_ROOT == msgSubType)
{
bResult = PROC_LEAVE;
}
}
return bResult;
}
static void win_cas_menu_update(struct WinReturnInfo *para1, enum win_update_type update_type)
{
if(WIN_UPDATE_CLOSE == update_type)
{
wincom_close_title();
OSD_CloseWindow(win_cas_menu, OSD_FLASHDATA);
OSD_UpdateWinVscr(win_cas_menu, TRUE);
}
else
{
win_cas_menu_update_txt(para1);
OSD_UpdateWinVscr(win_cas_menu, FALSE);
}
return;
}
struct winhandle_t win_cas_menu_handle =
{
win_cas_menu_display,
win_cas_menu_proc,
win_cas_menu_update
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -