📄 win_key_input.c
字号:
#include <os/tds2/itron.h>
#include <osal/osal.h>
#include <api/libgui/osd_lib.h>
#include <api/libc/printf.h>
#include <api/libc/string.h>
#include "osd_config.h"
#include "win_com.h"
#include "ap_key_input.h"
#include "ap_root.h"
#include "keydata.h" //djg keyedit
#include "win_key_input.h"
#include "win_menu.h"
#include "ap_small_keyboard.h"
BYTE win_key_input_menu_proc(UINT32 msgtype, UINT32 msgSubType, UINT32 msgcode, struct WinReturnInfo * p_Return_Info);
static UINT8 win_key_input_proc(OBJECTHEAD* pObj, UINT32 vkey, UINT32 para1, UINT32 para2);
static VKEY win_key_input_keymap(OBJECTHEAD* pObj, UINT32 vkey);
WINDOW win_key_input;
BAR key_input_bar;
TEXTFIELD key_input_txt[MAX_CAS_KEY_NUMBER],key_input_title,ki_title_txt1,ki_title_txt2,key_background;
static TEXTFIELD key_input_help_txt[3];
static XBITMAP key_input_help_icon[3];
OBJ_INFO ki_title_obj_info= {(OBJECTHEAD *)(&key_input_title), IN_TEXTFIELD};
OBJ_INFO ki_title_obj_info2= {(OBJECTHEAD *)(&ki_title_txt2), IN_TEXTFIELD};
CONTAINER win_key_input_container,win_ki_container[MAX_CAS_KEY_NUMBER],win_ki_title_container;
TEXTFIELD win_key_input_txt,win_ki_first_str[MAX_CAS_KEY_NUMBER],win_ki_second_str[MAX_CAS_KEY_NUMBER];
TEXTFIELD win_ki_PROVIDER_str[MAX_CAS_KEY_NUMBER],win_ki_ID_str[MAX_CAS_KEY_NUMBER];
TEXTFIELD win_ki_KEYTYPE_str[MAX_CAS_KEY_NUMBER];
UINT16 key_help_icon[3]={IM_COLORBUTTON2_YELLOW,IM_COLORBUTTON2_BLUE,IM_COLORBUTTON2_RED};
UINT16 key_help_txt[3]={RS_COMMON_SAVE,RS_SORT_DEFAULT,RS_EDIT_INDEX};
UINT16 win_ki_title_str[40];
UINT16 win_ki_key_str[5];
struct WinReturnInfo * p_ui_ki_ReturnInfo;
OBJ_INFO ki_obj_info[MAX_CAS_KEY_NUMBER]=
{
{(OBJECTHEAD *)(&win_ki_second_str[0]), IN_TEXTFIELD},
{(OBJECTHEAD *)(&win_ki_second_str[1]), IN_TEXTFIELD},
{(OBJECTHEAD *)(&win_ki_second_str[2]), IN_TEXTFIELD},
{(OBJECTHEAD *)(&win_ki_second_str[3]), IN_TEXTFIELD},
{(OBJECTHEAD *)(&win_ki_second_str[4]), IN_TEXTFIELD},
{(OBJECTHEAD *)(&win_ki_second_str[5]), IN_TEXTFIELD},
{(OBJECTHEAD *)(&win_ki_second_str[6]), IN_TEXTFIELD},
};
cas_key_data *p_ui_key_input_data;
extern UINT8 g_KI_CAS_type;
extern UINT8 g_Garosu_LineNumber;
extern UINT8 g_Garosu_TotalNumber;
void win_key_input_get_title_str()
{
UINT8 temp[40];
sprintf(temp," PROVIDER ID ");
ComAscStr2Uni(temp, win_ki_title_str);
}
void win_key_input_get_key_str()
{
UINT8 temp[10];
sprintf(temp,"KEY");
ComAscStr2Uni(temp, win_ki_key_str);
}
void win_key_input_redraw_list()
{
int i;
for(i=0;i<MAX_CAS_KEY_NUMBER;i++)
{
if(OSD_GetFocusObjectID((VP)&win_key_input)==OSD_GetObjectPosi((VP)&win_ki_container[i]))
{
OSD_TrackContainer(&win_ki_container[i], OSD_FLASHDATA);
}
else
{
OSD_DrawContainer(&win_ki_container[i], OSD_FLASHDATA);
}
}
}
void win_key_input_display(UINT32 para1, struct WinReturnInfo *para2)
{
WINDOW* pW = &win_key_input;
UINT16 i;
// open window
OSD_OpenWindow(OSD_GetSysDefXScreen(), pW, WIN_KEY_INPUT_L, WIN_KEY_INPUT_T, WIN_KEY_INPUT_W, WIN_KEY_INPUT_H, OSD_NORMALCTL);
OSD_SetColor(pW, KEYEDIT_BACKGROUND, 0, 0,0);
//OSD_AddTextField(pW,&key_background,0, 0, WIN_KEY_INPUT_W, WIN_KEY_INPUT_H-50);
//OSD_SetColor((VP)&key_background, MENU_EPG_CHN_TXT_SH, 0, 0,0);
// add content
OSD_AddContainer(pW, &win_key_input_container, WIN_KEY_INPUT_CONTAINER_L, WIN_KEY_INPUT_CONTAINER_T, WIN_KEY_INPUT_CONTAINER_W, WIN_KEY_INPUT_CONTAINER_H);
OSD_SetColor((VP)(&win_key_input_container), KEYEDIT_KEY_SH,0, 0, 0);
wincom_set_container_txt(&win_key_input_container, &win_key_input_txt,0);
OSD_SetColor((VP) &win_key_input_txt, KEYEDIT_KEY_SH, 0, 0, 0);
OSD_SetTextFieldContent(&win_key_input_txt, 0, (UINT8*)p_ui_key_input_data->p_CAS_StrTab, NULL);
wincom_add_container_obj(&win_key_input_container, &ki_title_obj_info);
OSD_SetColor((VP) &key_input_title, KEYEDIT_KEY_SH, 0, 0, 0);
OSD_SetTextFieldContent(&key_input_title, 0, (UINT8*)p_ui_key_input_data->p_Type_StrTab, NULL);
win_key_input_txt.head.frame.uWidth-=30;
key_input_title.head.frame.uLeft-=30;
key_input_title.head.frame.uWidth+=30;
win_key_input_get_title_str();
win_key_input_get_key_str();
OSD_AddContainer(pW, &win_ki_title_container, WIN_KEY_INPUT_CONTAINER_L, 10+WIN_KEY_INPUT_CONTAINER_T + WIN_KEY_INPUT_CONTAINER_H, WIN_KEY_INPUT_CONTAINER_W, WIN_KEY_INPUT_CONTAINER_H);
OSD_SetColor((VP)(&win_ki_title_container), FIND_KEY_HL_COLOR,0, 0, 0);
wincom_set_container_txt(&win_ki_title_container, &ki_title_txt1,0);
OSD_SetTextFieldContent(&ki_title_txt1, 0, (UINT8*)win_ki_title_str, NULL);
OSD_SetColor((VP) &ki_title_txt1, KEYEDIT_KEY_NOBACK_SH, FIND_KEY_HL_COLOR, 0, 0);
wincom_add_container_obj(&win_ki_title_container, &ki_title_obj_info2);
OSD_SetTextFieldContent(&ki_title_txt2, 0, (UINT8*)win_ki_key_str, NULL);
OSD_SetColor((VP) &ki_title_txt2, KEYEDIT_KEY_NOBACK_SH, FIND_KEY_HL_COLOR, 0, 0);
ki_title_txt1.head.frame.uWidth-=30;
ki_title_txt2.head.frame.uLeft-=30;
ki_title_txt2.head.frame.uWidth+=30;
for(i=0;i<MAX_CAS_KEY_NUMBER;i++)
{
OSD_AddContainer(pW, &win_ki_container[i], WIN_KEY_INPUT_CONTAINER_L, WIN_KEY_INPUT_CONTAINER_T +40+ (WIN_KEY_INPUT_CONTAINER_H+6)*(i+1), WIN_KEY_INPUT_CONTAINER_W, WIN_KEY_INPUT_CONTAINER_H);
OSD_SetColor((VP)(&win_ki_container[i]), KEYEDIT_KEY_SH, FIND_KEY_HL_COLOR,0, 0);
//wincom_set_container_txt(&win_ki_container[i], &win_ki_first_str[i],0);
OSD_SetContainerContent(&win_ki_container[i], (OBJECTHEAD *)&win_ki_first_str[i], IN_TEXTFIELD,
0, 0,50,WINSMALL_CONTAINER_TXT_HEIGHT);
OSD_SetTextFieldStyle(&win_ki_first_str[i], LEFT_ASSIGN|VMID_ASSIGN, 5, 0);
OSD_SetTextFieldContent(&win_ki_first_str[i], 0, (UINT8*)p_ui_key_input_data->p_FirstStrTab[i], NULL);
OSD_SetColor((VP)(&win_ki_first_str[i]), KEYEDIT_KEY_NOBACK_SH, KEYEDIT_KEY_NOBACK_SH,0, 0);
OSD_SetContainerContent(&win_ki_container[i], (OBJECTHEAD *)&win_ki_PROVIDER_str[i], IN_TEXTFIELD,
50, 0,100,WINSMALL_CONTAINER_TXT_HEIGHT);
OSD_SetTextFieldStyle(&win_ki_PROVIDER_str[i], LEFT_ASSIGN|VMID_ASSIGN, 0, 0);
OSD_SetTextFieldContent(&win_ki_PROVIDER_str[i], 0, (UINT8*)p_ui_key_input_data->p_StrINDEX[i], NULL);
OSD_SetColor((VP)(&win_ki_PROVIDER_str[i]), KEYEDIT_KEY_NOBACK_SH, KEYEDIT_KEY_NOBACK_SH,0, 0);
OSD_SetContainerContent(&win_ki_container[i], (OBJECTHEAD *)&win_ki_ID_str[i], IN_TEXTFIELD,
180, 0,50,WINSMALL_CONTAINER_TXT_HEIGHT);
OSD_SetTextFieldStyle(&win_ki_ID_str[i], LEFT_ASSIGN|VMID_ASSIGN, 0, 0);
OSD_SetTextFieldContent(&win_ki_ID_str[i], 0, (UINT8*)p_ui_key_input_data->p_StrID[i], NULL);
OSD_SetColor((VP)(&win_ki_ID_str[i]), KEYEDIT_KEY_NOBACK_SH, KEYEDIT_KEY_NOBACK_SH,0, 0);
#if 0
OSD_SetContainerContent(&win_ki_container[i], (OBJECTHEAD *)&win_ki_KEYTYPE_str[i], IN_TEXTFIELD,
180, 0,70,WINSMALL_CONTAINER_TXT_HEIGHT);
OSD_SetTextFieldStyle(&win_ki_KEYTYPE_str[i], LEFT_ASSIGN|VMID_ASSIGN, 0, 0);
OSD_SetTextFieldContent(&win_ki_KEYTYPE_str[i], 0, (UINT8*)p_ui_key_input_data->p_Strkeytype[i], NULL);
OSD_SetColor((VP)(&win_ki_KEYTYPE_str[i]), KEYEDIT_KEY_NOBACK_SH, KEYEDIT_KEY_NOBACK_SH,0, 0);
#endif
wincom_add_container_obj(&win_ki_container[i], &ki_obj_info[i]);
//OSD_SetColor((VP)&win_ki_second_str[i], WSTL_CONTAINER_CTRL_SH, WIN_KEY_INPUT_HL,0,0);
OSD_SetColor((VP)&win_ki_second_str[i], KEYEDIT_KEY_NOBACK_SH, KEYEDIT_KEY_NOBACK_SH,0,0);
OSD_SetTextFieldStyle(&win_ki_second_str[i], LEFT_ASSIGN|VMID_ASSIGN,0,0);
OSD_SetTextFieldContent(&win_ki_second_str[i], 0, (UINT8*)p_ui_key_input_data->p_SecondStrTab[i], NULL);
win_ki_second_str[i].head.frame.uLeft-=30;
win_ki_second_str[i].head.frame.uWidth+=30;
OSD_SetPosi((VP)&win_ki_container[i],i + 1, i + 1, i + 1, (i -1 + MAX_CAS_KEY_NUMBER)%MAX_CAS_KEY_NUMBER + 1, (i + 1)%MAX_CAS_KEY_NUMBER + 1);
}
for(i=0;i<1;i++)
{
OSD_AddBitmap(pW,&key_input_help_icon[i],WIN_KEY_HELP_L+i*(WIN_KEY_HELP_W+30),WIN_KEY_HELP_T,24,WIN_KEY_HELP_H);
OSD_SetBitmapContent(&key_input_help_icon[i], LIB_ICON, key_help_icon[i]);
OSD_AddTextField(pW, &key_input_help_txt[i],WIN_KEY_HELP_L+24+i*(WIN_KEY_HELP_W+30),WIN_KEY_HELP_T,WIN_KEY_HELP_W,WIN_KEY_HELP_H);
OSD_SetTextFieldContent(&key_input_help_txt[i], key_help_txt[i], NULL,NULL);
OSD_SetTextFieldStyle(&key_input_help_txt[i], LEFT_ASSIGN|VMID_ASSIGN, 0, 0);
OSD_SetColor((VP)&key_input_help_txt[i], KEYEDIT_KEY_SH, 0, 0, 0);
}
OSD_SetKeyMap((VP)pW, win_key_input_keymap);
OSD_SetProc((VP)pW, win_key_input_proc);
// set focus obj id
OSD_SetFocusObjectID(pW, 1);
ap_key_input_set_listindex(1);
}
static VKEY win_key_input_keymap(OBJECTHEAD* pObj, UINT32 vkey)
{
VKEY vact = VACT_PASS;
switch(vkey)
{
case V_KEY_UP:
vact = VACT_WIN_UP;
break;
case V_KEY_DOWN:
vact = VACT_WIN_DOWN;
break;
case V_KEY_LEFT:
vact = VACT_PAGEUP;
break;
case V_KEY_RIGHT:
vact = VACT_PAGEDOWN;
break;
case V_KEY_EXIT:
case V_KEY_MENU:
vact = VACT_WIN_CLOSE;
break;
case V_KEY_ENTER:
vact = VACT_WIN_ENTER;
break;
#if 0
case V_KEY_COLOR2: //red key->edit INDEX
vact = VACT_NUM_0;
break;
case V_KEY_1://edit ID
vact = VACT_NUM_1;
break;
#endif
}
return vact;
}
void win_key_input_recover()
{
WINDOW* pW = &win_key_input;
ap_key_input_save_key(win_key_input.FocusObjectID-1);
wincom_display_win(pW, FALSE);
OSD_UpdateWinVscr(pW,FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -