2007. 2. 5 PLATFORM TEAM 정용학
차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2
Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3
Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize UMP 의 Container 에관련된일반적인정보를저장 GUI Style 설정, Indicator Reset 각각의 Container 와 Font 초기화 (24 개 ) UMP_F_CONTAINERMGR_set_direction UMP_H_CONTAINERMGR_set_direction 각각의 Container 방향초기화 4
Container 초기화과정안에 Widget 초기화 UMP_R_CONTAINER_xxx_initialize UMP_R_CONTAINER_xxx_font_initialize UMP_R_CONTAINER_xxx_direction_initialize Container 에포함된각각의 widget 의초기화 widget font, direction 초기화 5
idle 에서 PF1 키를눌렀을경우 MainMenu 호출과정 UA_IDLE_Event_KEY_PRESS switch(event) { case UMP_E_PF1: UA_set_active_menu(&main_menu_tier); UMP_F_APPMGR_open(APPID_MENU, NULL, NULL, NULL); break;.. } UMP_menu_tier_type main_menu_tier = { MENU_1STDEPTH, IDB_NONE, IDS_NONE, (void *)main_menu, (sizeof(main_menu) / sizeof(ump_menu_entry_type)) }; const UMP_menu_entry_type main_menu[] = { { IDB_NONE, IDS_NONE, FALSE, NULL, NULL }, { IDB_NONE, IDS_MENU_1, TRUE, NULL, (&www_menu_tier) }, { IDB_NONE, IDS_MENU_2, TRUE, NULL, (&sound_menu_tier) },... { IDB_NONE, IDS_MENU_9, TRUE, NULL, (&set_menu_tier) }, }; 6
idle 에서 PF1 키를눌렀을경우 MainMenu 호출과정 UA_MENU_Constructor UMP_F_INDICATORMGR_set_backcolor(DDevice_1ST, UMP_16BPP_TRANSPARENCY); UMP_F_INDICATORMGR_set_show(DDevice_1ST, UMP_HIDE); UMP_F_SOFTKEYMGR_set_show(DDevice_1ST, UMP_SHOW); UA_container_set_menu(cur_tier_ptr, UMP_E_1); UA_container_set_menu... if (cur_menu_depth == MENU_1STDEPTH) { WMainMenu.nOnFocus = nfocus; UMP_F_INDICATORMGR_set_backcolor(DDevice_1ST, UMP_16BPP_TRANSPARENCY); UMP_F_INDICATORMGR_set_show(DDevice_1ST, UMP_HIDE); UMP_F_SOFTKEYMGR_set(DDevice_1ST, IDS_NONE, IDS_SK_SELECT, IDS_SK_PREV); UMP_F_SOFTKEYMGR_set_display(DDevice_1ST, SK_Display_Normal); UMP_F_SOFTKEYMGR_set_show(DDevice_1ST, UMP_SHOW); UMP_F_CONTAINERMGR_open(DDevice_1ST, &CMainMenu); }... 7
Container 관련함수 ( 16개 ) void UMP_F_CONTAINERMGR_Initialize(void); void UMP_F_CONTAINERMGR_open(Display_Device_Type DD, ContainerType *Container); void UMP_F_CONTAINERMGR_open_prev_VP(Display_Device_Type DD, ContainerType *Container); void UMP_F_CONTAINERMGR_open_previous(Display_Device_Type DD); void UMP_F_CONTAINERMGR_close(Display_Device_Type DD, ContainerType *Container); void UMP_F_CONTAINERMGR_VP_show(Display_Device_Type DD, boolean ForceUpdate); void UMP_F_CONTAINERMGR_redraw(void); void UMP_F_CONTAINERMGR_handle_focus(Display_Device_Type DD, CMeNavi_Type Navi); 8
Container 관련함수 void UMP_F_CONTAINERMGR_handle_event(Display_Device_Type DD, UMP_Signal_type signal, void *param1, void *param2); void UMP_F_CONTAINERMGR_set_DDevice_Info(Display_Device_Type DD, DDevice_Info_Type DDInfo); void UMP_F_CONTAINERMGR_get_DDevice_Info(Display_Device_Type DD, DDevice_Info_Type *DDInfo); ContainerType *UMP_F_CONTAINERMGR_get_current_container(Display_Device_Type DD); ContainerType *UMP_F_CONTAINERMGR_get_previous_container(Display_Device_Type DD); Display_Device_Type UMP_F_CONTAINERMGR_get_current_DD(void); word UMP_F_CONTAINERMGR_get_current_widget(void); UMP_Return_Type UMP_F_CONTAINERMGR_set_direction(WDirection direction); 9
Widget Container의요소한개한개를 Widget이라고부름 Basic, Special Widget으로나뉨 10
공통변수, 함수 모든 Widget 에공통적으로들어감 11
Widget Example 12
Example ( Set Clock ) CONTAINER & WIDGET WSubMenu_3_2 WIdleColsk_sel WSubMenu_3_2_Scrollbar WIdleCalendar_sel 13
Set Clock 에서좌우로움직였을경우 (widget) Key Press 이벤트가발생되서 WSpinnerfEvent(dword signal, void *param1, void *param2) 함수가호출됨해당값을바꾸고 redrew Set Clock 에서위아래로움직였을경우 (widget) UMP_E_NAVI_UP 인경우 fer_navi_prev 를 return해서이전 Widget으로 focus를옮김 UMP_E_NAVI_DOWN 인경우 fer_navi_next 를 return해서다음 Widget으로 focus를옮김 fexitfocus, fonfocus 호출 redrew 14
Set Clock 에서 OK 키를눌러저장할경우 (application) Key Press 이벤트가발생되서 UA_DISP_CLOCKSET_Event_KEY_PRESS 함수가호출됨 idleclock_store 함수로저장 DialogueBox_INFO UMP_F_SOUND_func_play(UMP_FUNC_OK, UMP.funcsnd_ok); UMP_F_APPMGR_close 15
SPECIAL WIDGET (wdialing) WDialing 대기화면에눌려지는전화번호관련 special widget Wdialing Type sidx - 현재배열에특정위치를가리키는 index bsmallonly - 작은글씨 DialNumber - 눌린 Keypad 값 ( 전화번호 ) 을저장하는배열 sidx 0 1 6... 16
SPECIAL WIDGET (wdialing) Key 가눌린경우 최대 32자리까지 Display, 18자리가넘을경우큰글씨에서작은글씨로변환 큰글씨 ( 6개의숫자, 3줄 ), 작은글씨 ( 8개의숫자, 5줄 ) Key값을배열에저장후 fdraw 17
SPECIAL WIDGET (wdialing) Drew 현재 Device와 Container, Widget을가져옴 DialNumber에저장되어있던 Unicode를 ASCII 코드로변환후 Screen Display 형식으로변환큰글씨와작은글씨 check 이미지출력위해 imgbuff 만들고 (malloc), 이미지정보를얻어옴이미지출력, imgbuff 공간 free 해줌 18
19 질의응답및토의