⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 win_cas_menu.c

📁 EMU_FTAbox_ref441328_code_source ali m3327
💻 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 + -