source: svn/newcon3bcm2_21bu/dst/app/src/kview/OSD/App_OSD_Main.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 49.3 KB
Line 
1
2
3#include "App_Main.h"
4#include "App_OSD_Common.h"
5#include "App_Res_Menus.h"
6#include "App_Res_Frames.h"
7#include "App_OSD_Main.h"
8#include "App_Res_Png.h"
9#include "App_Fnc_SignalMonitor.h"
10
11DHL_MODULE("@o_menu", 0);
12
13#define DEF_FONT_SIZE 23//24
14
15       
16static char* p_menu_depth2_titles[MENU_DEPTH1_NUM][MENU_LANG]=
17{
18        {MAIN_MENU_CH_STR_EN,MAIN_MENU_CH_STR_SP,MAIN_MENU_CH_STR_KR},
19        {MAIN_MENU_CC_STR_EN,MAIN_MENU_CC_STR_SP,MAIN_MENU_AV_STR_KR},
20        {MAIN_MENU_RATING_STR_EN,MAIN_MENU_RATING_STR_SP,MAIN_MENU_INFO_STR_KR},
21        {MAIN_MENU_FN_STR_EN,MAIN_MENU_FN_STR_SP,MAIN_MENU_FN_STR_KR}
22};
23#if 0
24static char* p_menu_epg_info_strs[MENU_LANG]=
25{
26        MAIN_MENU_EPG_INFO_STR_EN,MAIN_MENU_EPG_INFO_STR_SP,MAIN_MENU_EPG_INFO_STR_KR
27};
28
29static char* p_menu_ch_edit_strs[MENU_LANG]=
30{
31        MAIN_MENU_CH_EDIT_STR_EN,MAIN_MENU_CH_EDIT_STR_SP,MAIN_MENU_CH_EDIT_STR_KR
32};
33
34static char* p_menu_ch_scan_strs[MENU_LANG]=
35{
36        MAIN_MENU_CH_SCAN_STR_EN,MAIN_MENU_CH_SCAN_STR_SP,MAIN_MENU_CH_SCAN_STR_KR
37};
38
39static char* p_menu_sig_info_strs[MENU_LANG]=
40{
41        MAIN_MENU_SIG_INFO_STR_EN,MAIN_MENU_SIG_INFO_STR_SP,MAIN_MENU_SIG_INFO_STR_KR
42};
43
44static char* p_menu_rc_edit_strs[MENU_LANG]=
45{
46        MAIN_MENU_RC_EDIT_STR_EN,MAIN_MENU_RC_EDIT_STR_SP,MAIN_MENU_RC_EDIT_STR_KR
47};
48
49static char* p_menu_factory_reset_strs[MENU_LANG]=
50{
51        MAIN_MENU_FACTORY_RESET_STR_EN,MAIN_MENU_FACTORY_RESET_STR_SP,MAIN_MENU_FACTORY_RESET_STR_KR
52};
53#endif
54
55
56
57static tApp_MmFrame p_menu_frames[]=
58{
59//depth1
60        {FID_D1, 0, 0, 4, 0, 0,
61                { //TODO À̹ÌÁö º¯°æÇØ¾ß ÇÔ.
62                        {0, 0, 0, 0x1, 0, FID_CH_MAIN, NULL,NULL,NULL, {IMG_D1_N_CH, IMG_D1_A_CH, IMG_D1_I_CH}},
63                        {1, 0, 0, 0x1, 0, FID_CC_MAIN, NULL,NULL,NULL, {IMG_D1_N_CC, IMG_D1_A_CC, IMG_D1_I_CC}},
64                        {2, 0, 0, 0x1, 0, FID_RT_MAIN, NULL,NULL,NULL, {IMG_D1_N_RT, IMG_D1_A_RT, IMG_D1_I_RT}},
65                        {3, 0, 0, 0x1, 0, FID_FC_MAIN, NULL,NULL,NULL, {IMG_D1_N_FN, IMG_D1_A_FN, IMG_D1_I_FN}},
66                }
67        },
68
69//depth2 channel       
70                {FID_CH_MAIN, 1, 0, 5, 0, FID_D1,
71                        {
72                                {0, 0, 0, 0x0, 0, FID_CH_INPUT, {{"Input"},{"Entrada"},{"ÀÔ·Â ¼±ÅÃ"}},NULL},
73                                {1, 0, 0, 0x2, 1, 0, {{"Auto Scan"},{"Auto Escan."},{"ÀÚµ¿ ä³Î ¼±±¹"}}, NULL},
74                                {2, 0, 0, 0x2, 1, 0, {{"Channel Edit"},{"Editar Canales"},{"ä³Î ÆíÁý"}}, NULL},
75                                {3, 0, 0, 0x2, 1, 0, {{"EPG"},{"Programa Guia E."},{"¹æ¼Û Á¤º¸"}}, NULL},
76                                {4, 0, 0, 0x2, 1, 0, {{"Signal Meter"},{"Potencia"},{"µðÁöÅÐ ¼ö½Å °¨µµ"}}, NULL},
77                        }
78                },
79#if SUPPORT_ONLY_AIR
80                        {FID_CH_INPUT, 2, 0, 1, 0, FID_CH_MAIN,
81                                {
82                                        {0, 0, 0, 0x4, 1, 0, {{"Air"}, {"Aire"},{"Áö»óÆÄ"}}, NULL},
83                                }
84                        },
85#else
86                        {FID_CH_INPUT, 2, 0, 2, 0, FID_CH_MAIN,
87                                {
88                                        {0, 0, 0, 0x4, 1, 0, {{"Air"}, {"Aire"},{"Áö»óÆÄ"}}, NULL},
89                                        {1, 0, 0, 0x4, 1, 0, {{"Cable"},{"Cable"},{"ÄÉÀ̺í"}}, NULL},
90                                }
91                        },
92#endif
93//depth2 cc             
94                {FID_CC_MAIN, 1, 0, 5, 0, FID_D1,
95                        {
96                                {0, 0, 0, 0x0, 0, FID_CC_DISP, {{"Display"},{"Visualizaci#f3n"},{"ÀÚ¸· Ç¥½Ã"}}, NULL},
97                                {1, 0, 0, 0x2, 1, 0, {{"CC Service"},{"CC Servicio"},{"ÀÚ¸· ¼±ÅÃ"}}, NULL},
98                                {2, 0, 0, 0x0, 0, FID_CC_OPT, {{"CC Option"},{"CC Opci#f3n"},{"ÀÚ¸· ¸ðµå"}}, NULL},
99                                {3, 0, 0, 0x0, 0, FID_CC_TEXT, {{"CC Text"},{"CC Texto"},{"ÀÚ¸· ±ÛÀÚ"}}, NULL},
100                                {4, 0, 0, 0x0, 0, FID_CC_BG, {{"CC Background"},{"Fondo de Subtitulo"},{"ÀÚ¸· ¹è°æ"}}, NULL},
101                        }
102                },
103//sub cc disp
104                        {FID_CC_DISP, 2, 0, 2, 0, FID_CC_MAIN,
105                                {
106                                        {0, 0, 0, 0x0, 1, 0, {{"On"},{"Encendido"},{"ÀÚ¸· ÄÔ"}}, NULL},
107                                        {1, 0, 0, 0x0, 1, 0, {{"Off"},{"Apagado"},{"ÀÚ¸· ²û"}}, NULL},
108                                }
109                        },
110
111//sub cc serv           
112                        {FID_CC_SERV, 3, 0, 10, 0, FID_CC_MAIN, //¿ø·¡´ë·Î Çϸé 2°¡ ¸Â´Âµ¥, depth3ÀÇ °ø°£ ºÎÁ·À¸·Î 3ÀÌ µÊ.
113                                {
114                                        {0, 0, 0, 0x0, 1, 0, {{"CS1"},{"CS1"},{"ÀÚ¸· 1"}}, NULL},
115                                        {1, 0, 0, 0x0, 1, 0, {{"CS2"},{"CS2"},{"ÀÚ¸· 2"}}, NULL},
116                                        {2, 0, 0, 0x0, 1, 0, {{"CS3"},{"CS3"},{"ÀÚ¸· 3"}}, NULL},
117                                        {3, 0, 0, 0x0, 1, 0, {{"CS4"},{"CS4"},{"ÀÚ¸· 4"}}, NULL},
118                                        {4, 0, 0, 0x0, 1, 0, {{"CS5"},{"CS5"},{"ÀÚ¸· 5"}}, NULL},
119                                        {5, 0, 0, 0x0, 1, 0, {{"CS6"},{"CS6"},{"ÀÚ¸· 6"}}, NULL},
120                                        {6, 0, 0, 0x0, 1, 0, {{"CC1"},{"CC1"},{"CC1"}}, NULL},
121                                        {7, 0, 0, 0x0, 1, 0, {{"CC2"},{"CC2"},{"CC2"}}, NULL},
122                                        {8, 0, 0, 0x0, 1, 0, {{"TEXT1"},{"TEXT1"},{"TEXT1"}}, NULL},
123                                        {9, 0, 0, 0x0, 1, 0, {{"TEXT2"},{"TEXT2"},{"TEXT2"}}, NULL},
124                                }
125                        },
126//sub cc opt                   
127                        {FID_CC_OPT, 2, 0, 2, 0, FID_CC_MAIN,
128                                {
129                                        {0, 0, 0, 0x0, 1, 0, {{"Auto"},{"Autom#e1tico"},{"ÀÚµ¿ ¸ðµå"}}, NULL},
130                                        {1, 0, 0, 0x0, 1, 0, {{"User"},{"Usuario"},{"»ç¿ëÀÚ ¸ðµå"}}, NULL},
131                                       
132                                }
133                        },
134//sub cc text                   
135                        {FID_CC_TEXT, 2, 0, 5, 0, FID_CC_MAIN,
136                                {
137                                        {0, 0, 0, 0x0, 0, FID_CC_F_SIZE, {{"Font Size"},{"Tama#f1o de Letra"},{"ÆùÆ® Å©±â"}}, NULL},
138                                        {1, 0, 0, 0x0, 0, FID_CC_F_STYLE, {{"Font Style"},{"Estilo de Letra"},{"½ºÅ¸ÀÏ"}}, NULL},
139                                        {2, 0, 0, 0x0, 0, FID_CC_F_COLOR, {{"Font Color"},{"Color de Letra"},{"»ö»ó"}}, NULL},
140                                        {3, 0, 0, 0x0, 0, FID_CC_F_TRANS, {{"Font Opacity"},{"Opacid. Texto"},{"Åõ¸íµµ"}}, NULL},
141                                        {4, 0, 0, 0x0, 0, FID_CC_POS, {{"Font Location"},{"Localiz. Letra"},{"À§Ä¡"}}, NULL},
142                                }
143                        },
144                                {FID_CC_F_SIZE, 3, 0, 4, 0, FID_CC_TEXT,
145                                        {
146                                                {0, 0, 0, 0x0, 1, 0, {{"Default"},{"Selec. Auto"},{"ÀÚµ¿"}}, NULL},
147                                                {1, 0, 0, 0x0, 1, 0, {{"Small"},{"Peque#f1o"},{"ÀÛÀ½"}}, NULL},
148                                                {2, 0, 0, 0x0, 1, 0, {{"Standard"},{"Est#e1ndar"},{"Áß°£"}}, NULL},
149                                                {3, 0, 0, 0x0, 1, 0, {{"Large"},{"Grande"},{"Å­"}}, NULL},
150                                        }
151                                },
152                                {FID_CC_F_STYLE, 3, 0, 8, 0, FID_CC_TEXT,
153                                        {
154                                                {0, 0, 0, 0x0, 1, 0, {{"Default"},{"Selec. Auto"},{"ÀÚµ¿"}}, NULL},
155                                                {1, 0, 0, 0x0, 1, 0, {{"Style 1"},{"Estilo 1"},{"½ºÅ¸ÀÏ 1"}}, NULL},
156                                                {2, 0, 0, 0x0, 1, 0, {{"Style 2"},{"Estilo 2"},{"½ºÅ¸ÀÏ 2"}}, NULL},
157                                                {3, 0, 0, 0x0, 1, 0, {{"Style 3"},{"Estilo 3"},{"½ºÅ¸ÀÏ 3"}}, NULL},
158                                                {4, 0, 0, 0x0, 1, 0, {{"Style 4"},{"Estilo 4"},{"½ºÅ¸ÀÏ 4"}}, NULL},
159                                                {5, 0, 0, 0x0, 1, 0, {{"Style 5"},{"Estilo 5"},{"½ºÅ¸ÀÏ 5"}}, NULL},
160                                                {6, 0, 0, 0x0, 1, 0, {{"Style 6"},{"Estilo 6"},{"½ºÅ¸ÀÏ 6"}}, NULL},
161                                                {7, 0, 0, 0x0, 1, 0, {{"Style 7"},{"Estilo 7"},{"½ºÅ¸ÀÏ 7"}}, NULL},
162                                        }
163                                },
164                                {FID_CC_F_COLOR, 3, 0, 9, 0, FID_CC_TEXT,
165                                        {
166                                                {0, 0, 0, 0x0, 1, 0, {{"Default"},{"Selec. Auto"},{"ÀÚµ¿"}}, NULL},
167                                                {1, 0, 0, 0x0, 1, 0, {{"Black"},{"Negro"},{"°ËÁ¤"}}, NULL},
168                                                {2, 0, 0, 0x0, 1, 0, {{"White"},{"Blanco"},{"Èò»ö"}}, NULL},
169                                                {3, 0, 0, 0x0, 1, 0, {{"Red"},{"Rojo"},{"»¡°­"}}, NULL},
170                                                {4, 0, 0, 0x0, 1, 0, {{"Green"},{"Verde"},{"³ì»ö"}}, NULL},
171                                                {5, 0, 0, 0x0, 1, 0, {{"Blue"},{"Azul"},{"ÆÄ¶û"}}, NULL},
172                                                {6, 0, 0, 0x0, 1, 0, {{"Yellow"},{"Amarillo"},{"³ë¶û"}}, NULL},
173                                                {7, 0, 0, 0x0, 1, 0, {{"Magenta"},{"Magenta"},{"ºÐÈ«"}}, NULL},
174                                                {8, 0, 0, 0x0, 1, 0, {{"Cyan"},{"Cian"},{"ÇÏ´Ã"}}, NULL},
175                                        }
176                                },
177                                {FID_CC_F_TRANS, 3, 0, 4, 0, FID_CC_TEXT,
178                                        {
179                                                {0, 0, 0, 0x0, 1, 0, {{"Default"},{"Selec. Auto"},{"ÀÚµ¿"}}, NULL},
180                                                {1, 0, 0, 0x0, 1, 0, {{"Transparent"},{"Transparente"},{"Åõ¸í"}}, NULL},
181                                                {2, 0, 0, 0x0, 1, 0, {{"Translucent"},{"Trasl#facido"},{"¹ÝÅõ¸í"}}, NULL},
182                                                {3, 0, 0, 0x0, 1, 0, {{"Solid"},{"S#f3lido"},{"ºÒÅõ¸í"}}, NULL},
183                                        }
184                                },
185                                {FID_CC_POS, 3, 0, 3, 0, FID_CC_TEXT,
186                                        {
187                                                {0, 0, 0, 0x0, 1, 0, {{"Default"},{"Selec. Auto"},{"ÀÚµ¿"}}, NULL},
188                                                {1, 0, 0, 0x0, 1, 0, {{"Top"},{"Arriba"},{"»ó´Ü"}}, NULL},
189                                                {2, 0, 0, 0x0, 1, 0, {{"Bottom"},{"Abajo"},{"ÇÏ´Ü"}}, NULL},
190                                        }
191                                },
192//sub cc bg
193                        {FID_CC_BG, 2, 0, 2, 0, FID_CC_MAIN,
194                                {
195                                        {0, 0, 0, 0x0, 0, FID_CC_B_COLOR, {{"Color"},{"Color"},{"»ö»ó"}}, NULL},
196                                        {1, 0, 0, 0x0, 0, FID_CC_B_TRANS, {{"Opacity"},{"Opacidad"},{"¹è°æ"}}, NULL},
197                                }
198                        },
199                                {FID_CC_B_COLOR, 3, 0, 9, 0, FID_CC_BG,
200                                        {
201                                                {0, 0, 0, 0x0, 1, 0, {{"Default"},{"Selec. Auto"},{"ÀÚµ¿"}}, NULL},
202                                                {1, 0, 0, 0x0, 1, 0, {{"Black"},{"Negro"},{"°ËÁ¤"}}, NULL},
203                                                {2, 0, 0, 0x0, 1, 0, {{"White"},{"Blanco"},{"Èò»ö"}}, NULL},
204                                                {3, 0, 0, 0x0, 1, 0, {{"Red"},{"Rojo"},{"»¡°­"}}, NULL},
205                                                {4, 0, 0, 0x0, 1, 0, {{"Green"},{"Verde"},{"³ì»ö"}}, NULL},
206                                                {5, 0, 0, 0x0, 1, 0, {{"Blue"},{"Azul"},{"ÆÄ¶û"}}, NULL},
207                                                {6, 0, 0, 0x0, 1, 0, {{"Yellow"},{"Amarillo"},{"³ë¶û"}}, NULL},
208                                                {7, 0, 0, 0x0, 1, 0, {{"Magenta"},{"Magenta"},{"ºÐÈ«"}}, NULL},
209                                                {8, 0, 0, 0x0, 1, 0, {{"Cyan"},{"Cian"},{"ÇÏ´Ã"}}, NULL},
210                                        }
211                                },
212                                {FID_CC_B_TRANS, 3, 0, 4, 0, FID_CC_BG,
213                                        {
214                                                {0, 0, 0, 0x0, 1, 0, {{"Default"},{"Selec. Auto"},{"ÀÚµ¿"}}, NULL},
215                                                {1, 0, 0, 0x0, 1, 0, {{"Transparent"},{"Transparente"},{"Åõ¸í"}}, NULL},
216                                                {2, 0, 0, 0x0, 1, 0, {{"Translucent"},{"Trasl#facido"},{"¹ÝÅõ¸í"}}, NULL},
217                                                {3, 0, 0, 0x0, 1, 0, {{"Solid"},{"S#f3lido"},{"ºÒÅõ¸í"}}, NULL},
218                                        }
219                                },
220
221//depth2 rating         
222                {FID_RT_MAIN, 1, 0, 5, 0, FID_D1,
223                        {
224                                {0, 0, 0, 0x0, 0, FID_RT_ONOFF, {{"Rating Block"},{"Indice de bloqueo"},{"ÀÚ¸· Ç¥½Ã"}}, NULL},
225                                {1, 0, 0, 0x0, 0, FID_RT_USA, {{"Rating Control"},{"Control de Audiencia"},{"ÀÚ¸· ¼±ÅÃ"}}, NULL},
226                                {2, 0, 0, 0x2, 1, 0, {{"Set D.Rating"},{"Ajuste Calificaci#f3n D."},{"ÀÚ¸· À§Ä¡"}}, NULL},
227                                {3, 0, 0, 0x2, 1, 0, {{"Update D.Rating"},{"Actu. calificaci#f3n D."},{"ÀÚ¸· ±ÛÀÚ"}}, NULL},
228                                {4, 0, 0, 0x2, 1, 0, {{"Change PIN"},{"Cambiar c#f3digo(ID)"},{"ÀÚ¸· ¹è°æ"}}, NULL},
229                        }
230                },
231                        {FID_RT_ONOFF, 2, 0, 2, 0, FID_RT_MAIN,
232                                {
233                                        {0, 0, 0, 0x0, 1, 0, {{"On"},{"Encendido"},{"ÄÔ"}}, NULL},
234                                        {1, 0, 0, 0x0, 1, 0, {{"Off"},{"Apagado"},{"²û"}}, NULL},
235                                }
236                        },
237                        {FID_RT_USA, 2, 0, 2, 0, FID_RT_MAIN,
238                                {
239                                        {0, 0, 0, 0x0, 0, 0, {{"US TV"},{"US TV"},{"US TV"}}, NULL},
240                                        {1, 0, 0, 0x0, 0, 0, {{"US MPAA"},{"US MPAA"},{"US MPAA"}}, NULL},
241                                }
242                        },
243                       
244//depth2 function       
245                {FID_FC_MAIN, 1, 0, 5, 0, FID_D1,
246                        {
247                                {0, 0, 0, 0x0, 0, FID_AV_MAIN, {{"Audio/Video"},{"Audio/Video"},{"AV ¼³Á¤"}}, NULL},
248                                {1, 0, 0, 0x0, 0, FID_TIME_BASE, {{"Time"},{"Horario"},{"½Ã°£ ¼³Á¤"}}, NULL},
249                                {2, 0, 0, 0x0, 0, FID_MENU_LANG, {{"Idioma del Men#fa"},{"Menu Language"},{"¸Þ´º ¼³Á¤"}}, NULL},       
250                                {3, 0, 0, 0x0, 0, FID_EA_BASE, {{"Emergency Alert"},{"Alerta emergencia"},{"EA"}}, NULL},
251                                {4, 0, 0, 0x2, 1, 0, {{"Factory Reset"},{"Prefij. Fabrica"},{"°øÀå ÃʱâÈ­"}}, NULL},
252                        }
253                },
254       
255                        {FID_AV_MAIN, 2, 0, 3, 0, FID_FC_MAIN,
256                                {
257                                        {0, 0, 0, 0x0, 0, FID_VID_MODE, {{"Display Mode"},{"Modo de Pantalla"},{"È­¸é ¸ðµå"}}, NULL},
258                                        {1, 0, 0, 0x0, 0, FID_AUD_PREF, {{"Audio Pref."},{"Audio Preferido"},{"À½¼º ´ÙÁß"}}, NULL},
259                                        {2, 0, 0, 0x0, 0, FID_AUD_DOWNMIX, {{"Preferred Conn."},{"Conex. Preferida"},{"¿Àµð¿À Ãâ·Â"}}, NULL},
260                                }
261                        },
262                       
263                                {FID_VID_MODE, 3, 0, 4, 0, FID_AV_MAIN,
264                                        {
265                                                {0, 0, 0, 0x0, 1, 0, {{"Anamorphic"},{"Pantalla Ancha"},{"Àüü º¸±â"}}, NULL},
266                                                {1, 0, 0, 0x0, 1, 0, {{"Wide 16:9"},{"Ancho 16:9"},{"¿ÍÀ̵å 16:9"}}, NULL},
267                                                {2, 0, 0, 0x0, 1, 0, {{"Wide 14:9"},{"Ancho 14:9"},{"¿ÍÀ̵å 14:9"}}, NULL},
268                                                {3, 0, 0, 0x0, 1, 0, {{"Zoom"},{"Zoom"},{"Áß¾Ó º¸±â"}}, NULL},
269                                        }
270                                },
271                                {FID_AUD_PREF, 3, 0, 3, 0,  FID_AV_MAIN,
272                                        {
273                                                {0, 0, 0, 0x0, 1, 0, {{"Auto"},{"Autom#e1tico"},{"ÀÚµ¿"}}, NULL},
274                                                {1, 0, 0, 0x0, 1, 0, {{"Spanish"},{"Espa#f1ol"},{"½ºÆäÀξî"}}, NULL},
275                                                {2, 0, 0, 0x0, 1, 0, {{"English"},{"Ingl#e9s"},{"¿µ¾î"}}, NULL},
276                        //                      {3, 0, 0, 0x0, 1, 0, {{"Spanish"},{"Espa#f1ol"},{"½ºÆäÀξî"}}, NULL},
277                                        }
278                                },
279                                {FID_AUD_DOWNMIX, 3, 0, 2, 0,  FID_AV_MAIN,
280                                        {
281                                                {0, 0, 0, 0x0, 1, 0, {{"Line Out"},{"Line Out"},{"Line Out"}}, NULL},
282                                                {1, 0, 0, 0x0, 1, 0, {{"CH 3/4"},{"CH 3/4"},{"CH 3/4"}}, NULL},
283                        //                      {2, 0, 0, 0x0, 1, 0, {{"Spanish"},{"Espa#f1ol"},{"½ºÆäÀξî"}}, NULL},
284                                        }
285                                },
286                       
287                        {FID_TIME_BASE, 2, 0, 4, 0, FID_FC_MAIN,
288                                {
289                                        {0, 0, 0, 0x0, 0, FID_TIME_ZONE, {{"Time Zone"},{"Huso Horario"},{"ŸÀÓ Á¸ ¼³Á¤"}}, NULL},
290                                        {1, 0, 0, 0x0, 0, FID_TIME_SUMMER, {{"Summer Time"},{"Horario Verano"},{"½æ¸Ó ŸÀÓ ¼³Á¤"}}, NULL},
291                                        {2, 0, 0, 0x0, 0, FID_TIME_SLEEP, {{"Sleep Timer"},{"Temporizador"},{"½½¸³ ŸÀ̸Ó"}}, NULL},
292                                        {3, 0, 0, 0x0, 0, FID_TIME_NOSIG, {{"Power Down"},{"Apagar"},{"ÀÚµ¿ Àü¿ø Á¾·á"}}, NULL},
293                                }
294                        },
295
296                        #if 0
297                                {FID_TIME_ZONE, 3, 0, 3, 0, FID_TIME_BASE,
298                                        {
299                                                {0, 0, 0, 0x0, 1, 0, {{"Central"},{"Central"},{"CST"}}, NULL},
300                                                {1, 0, 0, 0x0, 1, 0, {{"Mountain"},{"Monta#f1a"},{"MST"}}, NULL},
301                                                {2, 0, 0, 0x0, 1, 0, {{"Pacific"},{"Pac#edfico"},{"PST"}}, NULL},
302                                        }
303                                },
304                        #else
305                                {FID_TIME_ZONE, 3, 0, 3, 0, FID_TIME_BASE,
306                                        {
307                                                {0, 0, 0, 0x0, 1, 0, {{"Central"},{"Central"},{"CST"}}, NULL},
308                                                {1, 0, 0, 0x0, 1, 0, {{"Pacific"},{"Pac#edfico"},{"MST"}}, NULL},
309                                                {2, 0, 0, 0x0, 1, 0, {{"Northwest"},{"Noroeste"},{"PST"}}, NULL},
310                                        }
311                                },
312                        #endif
313                                {FID_TIME_SUMMER, 3, 0, 2, 0, FID_TIME_BASE,
314                                        {
315                                                {0, 0, 0, 0x0, 1, 0, {{"Auto"},{"Autom#e1tico"},{"ÀÚµ¿"}}, NULL},
316                                                {1, 0, 0, 0x0, 1, 0, {{"Off"},{"Apagado"},{"²û"}}, NULL},
317                                        }
318                                },
319                                {FID_TIME_SLEEP, 3, 0, 5, 0, FID_TIME_BASE,
320                                        {
321                                                {0, 0, 0, 0x0, 1, 0, {{"Off"},{"Apagado"},{"²¨Áü"}}, NULL},
322                                                {1, 0, 0, 0x0, 1, 0, {{"15 Minutes"},{"15 Minutos"},{"15ºÐ"}}, NULL},
323                                                {2, 0, 0, 0x0, 1, 0, {{"30 Minutes"},{"30 Minutos"},{"30ºÐ"}}, NULL},
324                                                {3, 0, 0, 0x0, 1, 0, {{"60 Minutes"},{"60 Minutos"},{"60ºÐ"}}, NULL},
325                                                {4, 0, 0, 0x0, 1, 0, {{"120 Minutes"},{"120 Minutos"},{"120ºÐ"}}, NULL},
326                                        }
327                                },
328                                {FID_TIME_NOSIG, 3, 0, 5, 0, FID_TIME_BASE,
329                                        {
330                                                {0, 0, 0, 0x0, 1, 0, {{"Off"},{"Apagado"},{"²¨Áü"}}, NULL},
331                                                {1, 0, 0, 0x0, 1, 0, {{"1 Hour"},{"1 Hora"},{"1 ½Ã°£"}}, NULL},
332                                                {2, 0, 0, 0x0, 1, 0, {{"2 Hours"},{"2 Horas"},{"2 ½Ã°£"}}, NULL},
333                                                {3, 0, 0, 0x0, 1, 0, {{"4 Hours"},{"4 Horas"},{"4 ½Ã°£"}}, NULL},
334                                                {4, 0, 0, 0x0, 1, 0, {{"8 Hours"},{"8 Horas"},{"8 ½Ã°£"}}, NULL},
335                                        }
336                                },
337                               
338                        {FID_MENU_LANG, 2, 0, 2, 0, FID_FC_MAIN,
339                                {
340                                        //{0, 0, 0, 0x0, 1, 0, {{"Ingl#e9s"},{"English"},{"¿µ¾î"}}, NULL},
341                                        {0, 0, 0, 0x0, 1, 0, {{"English"},{"English"},{"¿µ¾î"}}, NULL},
342                                        //{1, 0, 0, 0x0, 1, 0, {{"Espa#f1ol"},{"Spanish"},{"½ºÆäÀξî"}}, NULL},
343                                        {1, 0, 0, 0x0, 1, 0, {{"Espa#f1ol"},{"Espa#f1ol"},{"½ºÆäÀξî"}}, NULL},
344                                }
345                        },
346                       
347                        {FID_EA_BASE, 2, 0, 2, 0, FID_FC_MAIN,
348                                {
349                                        {0, 0, 0, 0x0, 0, FID_EA_MID, {{"Medium"},{"mediano"},{"Medium"}}, NULL},
350                                        {1, 0, 0, 0x0, 0, FID_EA_LOW, {{"Low"},{"Bajo"},{"Low"}}, NULL},
351                                }
352                        },
353                       
354                                {FID_EA_MID, 3, 0, 2, 0, FID_EA_BASE,
355                                        {
356                                                {0, 0, 0, 0x0, 1, 0, {{"On"},{"Encendido"},{"CST"}}, NULL},
357                                                {1, 0, 0, 0x0, 1, 0, {{"Off"},{"Apagado"},{"MST"}}, NULL},
358                                        }
359                                },
360                                {FID_EA_LOW, 3, 0, 2, 0, FID_EA_BASE,
361                                        {
362                                                {0, 0, 0, 0x0, 1, 0, {{"On"},{"Encendido"},{"CST"}}, NULL},
363                                                {1, 0, 0, 0x0, 1, 0, {{"Off"},{"Apagado"},{"MST"}}, NULL},
364                                        }
365                                }
366       
367};
368
369
370       
371#define MENU_NUM_FRAMES (int)(sizeof(p_menu_frames)/sizeof(p_menu_frames[0]))
372
373static struct {
374        int cur_fid;
375        int cur_uid;
376} p_menu_main_info;
377
378#define MF(i) (*(tApp_MmFrame *)(p_get_frame(i)))
379#define MU(a,b) (MF(a).units[b])
380#define PRIV_INFO(x) (p_menu_main_info.x)
381
382#define MC_BG 0xb006295f
383
384#define MC_ACTIVE 0xff000000
385#define MC_INACTIVE 0xffffffff
386#define MC_NORMAL 0xff8cffff
387#define MC_DISABLE 0xff848484
388
389#define C_ACTIVE_ITEM 0xfffff003        //yellow RGB(255,240,3)
390
391#define D1_BASE_X (96-2)
392#define D1_BASE_Y 96
393#define D1_ICON_W 84
394#define D1_ICON_H 68
395#define D1_INTER_ICON 6
396
397#define D2_BASE_X (190-6)
398#define D2_BASE_Y 136
399#define D2_ICON_W (220+10)
400#define D2_ICON_H 48
401#define D2_INTER_ICON 2
402#define D2_ICON_MARGIN (D2_ICON_H+D2_INTER_ICON)
403
404#define D3_BASE_X 424
405#define D3_BASE_Y 84
406#define D3_BASE_W 208
407#define D3_BASE_H 312
408#define D3_ICON_X 426
409#define D3_ICON_Y D1_BASE_Y
410#define D3_ICON_W 204
411#define D3_ICON_H D2_ICON_H
412#define D3_TEXT_X 434
413#define D3_TEXT_Y 94
414#define D3_TEXT_W 188
415#define D3_TEXT_H 292
416#define D3_TEXT_MARGIN 2
417#define D3_INTER_ICON D2_INTER_ICON
418#define D3_ICON_MARGIN (D3_ICON_H+D3_INTER_ICON)
419#define D3_IMG_TEXT_MARGIN 38   // depth 3 ICONÀÇ text¿Í üũǥ½Ã À̹ÌÁö¿ÍÀÇ °£°Ý
420#define D3_LINE_GAP 2
421#define D3_BG_GAP 8
422
423#define D4_BASE_X 414
424#define D4_BASE_Y 114
425#define D4_ICON_W D2_ICON_W
426#define D4_ICON_H D2_ICON_H
427#define D4_ICON_MARGIN 10
428
429// Main MenuÀÇ ¹è°æÀÇ depthº° ÁÂÇ¥.
430
431// Main Menu depth 1, 2 ÀÇ ¹è°æ 1
432#define BG_BASIC1_X             78
433#define BG_BASIC1_Y             74
434#define BG_BASIC1_W     352
435#define BG_BASIC1_H             332
436// Main Menu depth 1, 2 ÀÇ ¹è°æ 2
437#define BG_BASIC2_X             88
438#define BG_BASIC2_Y             84
439#define BG_BASIC2_W     332
440#define BG_BASIC2_H             312
441// Main Menu depth 1, 2 ÀÇ ¹è°æ 3
442#define BG_BASIC3_X             190
443#define BG_BASIC3_Y             136
444#define BG_BASIC3_W     220
445#define BG_BASIC3_H             250
446// Main Menu depth 3 ÀÇ ¹è°æ
447#define BG_EXTEND_X             430
448#define BG_EXTEND_Y             74
449#define BG_EXTEND_W     212
450#define BG_EXTEND_H     332
451// Main Menu depth 4 ÀÇ ¹è°æ
452#define BG_D4_POPUP_X1          ((720 - D4_ICON_W - 2*D4_ICON_MARGIN) / 2)
453#define BG_D4_POPUP_X2          ((720 - 2*D4_ICON_W - 2*D4_ICON_MARGIN) / 2)
454#define BG_D4_POPUP_Y           (BG_BASIC1_Y + 30)
455#define BG_D4_POPUP_W1  (D4_ICON_MARGIN*2+D4_ICON_W)
456#define BG_D4_POPUP_W2  (D4_ICON_MARGIN*2+D4_ICON_W*2)
457
458
459// Main Menu °¢ depth º° ¿µ¿ª ¹üÀ§
460#define D1_BG_BASE_X    BG_BASIC1_X
461#define D1_BG_BASE_Y    BG_BASIC1_Y
462#define D1_BG_BASE_W    BG_BASIC3_X - BG_BASIC1_X
463#define D1_BG_BASE_H    BG_BASIC1_H
464
465#define D2_BG_BASE_X    BG_BASIC3_X
466#define D2_BG_BASE_Y    BG_BASIC3_Y
467#define D2_BG_BASE_W    BG_BASIC3_W
468#define D2_BG_BASE_H    BG_BASIC3_H
469
470#define D3_BG_BASE_X    BG_EXTEND_X-6
471#define D3_BG_BASE_Y    BG_EXTEND_Y
472#define D3_BG_BASE_W    BG_EXTEND_W+6
473#define D3_BG_BASE_H    BG_EXTEND_H
474
475
476
477/**
478        @brief Main ¸Þ´ºÀÇ ¾ð¾î Á¾·ù¸¦ ¸®ÅÏ
479
480        @param[out]
481                - 0: Korean
482*/
483static int p_get_lang_id()
484{
485        return  App_NVM_GetMenuLang();
486//      return 0;
487}
488
489static tApp_MmFrame *p_get_frame(int fid)
490{
491        int i;
492       
493        for(i=0; i<MENU_NUM_FRAMES; i++) {
494                if(fid==p_menu_frames[i].id) return &p_menu_frames[i];
495        }
496       
497        {
498                char str[64];
499                sprintf(str, "fid is invalid(fid:%d)\n", fid);
500                DHL_ASSERT(0, str);
501        }
502       
503        return NULL;
504}
505
506void p_restore_bg(UINT16 x, UINT16 y, UINT16 w, UINT16 h)
507{
508        tDHL_GrpRect rect;
509
510        rect.x=x;
511        rect.y=y;
512        rect.w=w;
513        rect.h=h;
514               
515        DMG_BLT(APP_PLANE_TEMP1, APP_PLANE_WRITE, &rect, &rect);
516}
517
518void p_restore_main_bg(UINT8 depth)
519{
520        tDHL_GrpRect rect;
521
522        switch(depth) {
523                case 0: //depth 1
524                        rect.x=D1_BG_BASE_X;
525                        rect.y=D1_BG_BASE_Y;
526                        rect.w=D1_BG_BASE_W;
527                        rect.h=D1_BG_BASE_H;
528                        break;
529               
530                case 1: //depth2
531                        rect.x=D2_BG_BASE_X;
532                        rect.y=D2_BG_BASE_Y;
533                        rect.w=D2_BG_BASE_W;
534                        rect.h=D2_BG_BASE_H;
535                        break;
536               
537                case 2: //depth3
538                        rect.x=D3_BG_BASE_X;
539                        rect.y=D3_BG_BASE_Y;
540                        rect.w=D3_BG_BASE_W;
541                        rect.h=D3_BG_BASE_H;
542                        break;
543                case 3: //depth4
544                        rect.x=0;
545                        rect.y=0;
546                        rect.w=0;
547                        rect.h=0;
548                        break;
549               
550                default:
551                        rect.x=D1_BG_BASE_X;
552                        rect.y=D1_BG_BASE_Y;
553                        rect.w=D1_BG_BASE_W;
554                        rect.h=D1_BG_BASE_H;
555                        break;
556        }
557       
558        DMG_BLT(APP_PLANE_TEMP1, APP_PLANE_WRITE, &rect, &rect);
559}
560
561static void p_draw_unit_bg(int depth, int mode, int x, int y, int unit_w)
562{       
563        int i;
564
565        //mode 0: normal 1:active, 2:inactive
566        switch(mode) {
567                case 0:                 // normal
568                        if(depth == 3)
569                                DMG_EraseRect(x, y, unit_w, D2_ICON_H, COLOR_BG_IN_BLUE);
570                        else
571                                p_restore_bg(x, y, unit_w, D2_ICON_H);
572                        break;
573               
574                case 1:                 // active
575                        DMG_EraseRect(x, y, unit_w, D2_ICON_H, C_ACTIVE_ITEM);
576                        break;
577                       
578                case 2:                 // choice, inactive
579                        for(i=0; i<unit_w; i++) 
580                                DMG_DrawImagePng(x+i, y, DST_choice_480);
581                        break;
582               
583                default:                        // default == normal
584                        p_restore_bg(x, y, unit_w, D2_ICON_H);
585                        break;
586        }
587}
588
589
590static void p_draw_unit(int fid, int uid, int x, int y)
591{
592        int color;
593        int unit_w, unit_h;
594        int mode;
595        int text_margin=0;
596        UINT32 draw_text_opt = 0;       // text Á¤·Ä ¿É¼Ç.
597        int orig_font_size=0;
598        int arrow_width=0; //arrow width
599       
600        dprint(2, "---%s : fid, uid(%d, %d)\n", __FUNCTION__, fid, uid);
601       
602        switch(MF(fid).depth) {
603                case 0: //depth 1
604                        unit_w=D1_ICON_W;
605                        unit_h=(D1_ICON_H+D1_INTER_ICON);
606                        break;
607               
608                case 1: //depth2
609                        unit_w=D2_ICON_W;
610                        unit_h=D2_ICON_MARGIN;
611                        draw_text_opt = DMG_OPT_A_CT|DMG_OPT_A_MD;
612                        if(!MU(fid, uid).bleaf && MF(fid).bactive && MU(fid, uid).bactive)
613                                arrow_width=16;
614                        break;
615               
616                case 2:
617                        unit_w=D3_ICON_W;
618                        unit_h=D3_ICON_MARGIN;
619                        draw_text_opt = DMG_OPT_A_LT|DMG_OPT_A_MD;
620                        break;
621
622                case 3:
623                        if(MF(fid).num_unit>5)
624                                unit_w=215;
625                        else
626                                unit_w=267;
627                        unit_h=D4_ICON_H;
628                        draw_text_opt = DMG_OPT_A_CT|DMG_OPT_A_MD;
629                        break;
630        }
631
632        if(fid == 7) mode = 3;
633        else if(MF(fid).bactive && MU(fid, uid).bactive) mode=1;
634        else if(!MF(fid).bactive && MU(fid, uid).bactive) mode=2;
635        else if(MU(fid, uid).bselected) mode=2; // active unitÀÌ ¾Æ´Ñ selected unitÀÎ °æ¿ì.
636        else mode=0;
637               
638        if((MU(fid, uid).type & 0x1) == 0x00) { //text°¡ ÀÖÀ½..
639                p_draw_unit_bg(MF(fid).depth, mode, x, y, unit_w);
640               
641                color=mode==3? MC_DISABLE:mode==0?MC_NORMAL:mode==1?MC_ACTIVE:MC_INACTIVE;
642
643                if(MF(fid).depth == 2) {
644#if 0   
645                        if(fid == FID_CC_MAIN)
646                                text_margin = D3_IMG_TEXT_MARGIN-32;    // CC Ç׸ñ¿¡´Â ¸¶ÁøÀ» Á¶±Ý µÒ, sjpark
647                        else
648                                text_margin = D3_IMG_TEXT_MARGIN;       // depth3¿¡¼­ÀÇ textÀü üũ À̹ÌÁöÀÇ °ø°£À» À§ÇÑ margin.
649#else
650                        if(MU(fid, uid).bleaf==0)
651                                text_margin = D3_IMG_TEXT_MARGIN-32;    // leaf°¡ ¾Æ´Ï¸é ´ç°Ü¼­ ÂïÀ½
652                        else
653                                text_margin = D3_IMG_TEXT_MARGIN;       // depth3¿¡¼­ÀÇ textÀü üũ À̹ÌÁöÀÇ °ø°£À» À§ÇÑ margin.
654#endif
655                }
656
657               
658                orig_font_size=DMG_GetFontSize();
659                DMG_SetFontSize(DEF_FONT_SIZE);
660               
661                DMG_PrintStrEx(x+text_margin, y, unit_w-text_margin-arrow_width, unit_h,
662                        MU(fid, uid).ptext[p_get_lang_id()], color, draw_text_opt);
663                DMG_SetFontSize(orig_font_size);
664               
665                if(mode==1 && !MU(fid, uid).bleaf) { 
666                        //leaf°¡ ¾Æ´Ï±â ¶§¹®¿¡ ¿À¸¥ÂÊ È­»ìÇ¥¸¦ ±×·ÁÁà¾ß ÇÔ
667#if 0 //ÇØ°áµÊ.
668                        //FID_CC_F_SIZE´Â spanishÀÏ °æ¿ì size ¹®Á¦·Î È­»ìÇ¥ »ý·«.
669                        if(fid==FID_CC_TEXT && uid==0 && DMG_GetLanguage()==1);
670                        else
671#endif
672                                DMG_DrawImagePng(x+unit_w-16, y+10, IMG_CHOICE_ARROW);
673                }
674                else if(MU(fid, uid).bselected) { //check°¡ ÀÖ³ª È®ÀÎÇØ¾ß ÇÔ..
675                        if(MF(fid).depth==3) {
676                                if(MF(fid).num_unit > 5)
677                                        DMG_DrawImagePng(x+20, y, mode==1?IMG_CHECK_ACTIVE:IMG_CHECK_NORMAL);
678                                else
679                                        DMG_DrawImagePng(x+15, y, mode==1?IMG_CHECK_ACTIVE:IMG_CHECK_NORMAL);
680                        }
681                        else
682                                DMG_DrawImagePng(x+2, y, mode==1?IMG_CHECK_ACTIVE:IMG_CHECK_NORMAL);
683                }
684        }
685        else {
686                DMG_DrawImagePng(x, y, MU(fid, uid).pimg[mode]);
687        }
688
689        // Ãß°¡ÀûÀÎ OSD ÀÛ¾÷ÀÌ ÀÖÀ½.
690        if((MU(fid, uid).type & 0x4)!=0) {      //Ãß°¡ OSD ÀÛ¾÷ÀÖ´Â unitÀÌ active »óÅÂÀΰæ¿ì
691                if((!MF(fid).bactive && MU(fid, uid).bselected) || mode == 1) {         
692                        if(fid == FID_CH_INPUT && uid == 0) {           // "ÀԷ¼±ÅÃ" frame.ÀÇ sub image±×¸².
693                                App_OSD_CommonBox2(D3_BASE_X+10, 236, 188, 150, 2, 
694                                                        COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);                         
695                                DMG_DrawImagePng(D3_BASE_X+20, 246, IMG_INPUT_AIR);
696                        }
697                        if(fid == FID_CH_INPUT && uid == 1) {           // "ÀԷ¼±ÅÃ" frame.ÀÇ sub image±×¸².
698                                App_OSD_CommonBox2(D3_BASE_X+10, 236, 188, 150, 2, 
699                                                        COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE); 
700                                DMG_DrawImagePng(D3_BASE_X+20, 246, IMG_INPUT_CABLE);
701                        }
702                }
703        }
704}
705
706
707static void p_update_unit(int fid, int uid)
708{
709        int i;
710        int color;
711        int base_x, base_y, unit_h;
712        int orig_font_size=0;   
713       
714        switch(MF(fid).depth) {
715                case 0: //depth 1
716                        orig_font_size=DMG_GetFontSize();
717                        DMG_SetFontSize(DEF_FONT_SIZE);
718                        base_x=D1_BASE_X;
719                        base_y=D1_BASE_Y;
720                        unit_h=(D1_ICON_H+D1_INTER_ICON);
721                       
722                        p_restore_bg(BG_BASIC3_X, BG_BASIC3_Y-D2_ICON_MARGIN, D2_ICON_W, D2_ICON_MARGIN);
723                        DMG_PrintStrEx(BG_BASIC3_X, BG_BASIC3_Y-D2_ICON_MARGIN, D2_ICON_W, D2_ICON_MARGIN,
724                                p_menu_depth2_titles[MF(fid).cur_unit][p_get_lang_id()], COLOR_WHITE, DMG_OPT_A_CT|DMG_OPT_A_MD);
725                        DMG_SetFontSize(orig_font_size);
726                        break;
727               
728                case 1: //depth2
729                        base_x=D2_BASE_X;
730                        base_y=D2_BASE_Y;
731                        unit_h=D2_ICON_MARGIN;
732                        break;
733               
734                case 2:
735                        base_x=D3_BASE_X+D3_LINE_GAP;
736                        base_y=D3_BASE_Y+12;
737                        unit_h=D3_ICON_MARGIN;
738                        break;
739               
740                case 3:
741                        base_x=D4_BASE_X;
742                        base_y=D4_BASE_Y;
743                        unit_h=D2_ICON_MARGIN;
744                        break;
745        }
746       
747        p_draw_unit(fid, uid, base_x, base_y+uid*unit_h);
748}
749
750
751static int p_seek_active_unit(int fid)
752{
753        int i;
754       
755        for(i=0; i<MF(fid).num_unit; i++) {
756                if(MU(fid, i).bactive) return i;
757        }
758       
759        return 0;
760}
761
762
763
764static void p_draw_frame(int fid)
765{
766        int i;
767        int color;
768        int base_x, base_y, unit_h;
769        int orig_font_size=0;   
770       
771        dprint(3, "---%s : fid(%d)\n", __FUNCTION__, fid);
772       
773        if(fid==0)  return;
774       
775        switch(MF(fid).depth) {
776                case 0: //depth 1
777                        orig_font_size=DMG_GetFontSize();
778                        DMG_SetFontSize(DEF_FONT_SIZE);
779                        base_x=D1_BASE_X;
780                        base_y=D1_BASE_Y;
781                        unit_h=(D1_ICON_H+D1_INTER_ICON);
782                       
783                        p_restore_bg(BG_BASIC3_X, BG_BASIC3_Y-D2_ICON_MARGIN, D2_ICON_W, D2_ICON_MARGIN);
784                        DMG_PrintStrEx(BG_BASIC3_X, BG_BASIC3_Y-D2_ICON_MARGIN, D2_ICON_W, D2_ICON_MARGIN,
785                                p_menu_depth2_titles[MF(fid).cur_unit][p_get_lang_id()], COLOR_WHITE, DMG_OPT_A_CT|DMG_OPT_A_MD);
786                        DMG_SetFontSize(orig_font_size);
787                        break;
788               
789                case 1: //depth2
790                        base_x=D2_BASE_X;
791                        base_y=D2_BASE_Y;
792                        unit_h=D2_ICON_MARGIN;
793                        break;
794               
795                case 2:
796                        base_x=D3_BASE_X+D3_LINE_GAP;
797                        base_y=D3_BASE_Y+12;
798                        unit_h=D3_ICON_MARGIN;
799                        break;
800               
801                case 3:
802                        base_x=D4_BASE_X;
803                        base_y=D4_BASE_Y;
804                        unit_h=D2_ICON_MARGIN;
805                        break;
806        }
807
808        for(i=0; i<MF(fid).num_unit; i++) {
809                p_draw_unit(fid, i, base_x, base_y+i*unit_h);
810        }
811}
812
813
814
815static void p_draw_popup_frame(int fid)
816{
817        int num_rows;
818        int i=0;
819        int x, y, w, h;
820       
821        if(MF(fid).depth != 3)
822                return;
823               
824        if(MF(fid).num_unit<=D4_ICON_MAX_ROWS) {
825                x=208;
826                w=304;
827                num_rows=MF(fid).num_unit;
828        }
829        else {
830                x=124;
831                w=471;
832                num_rows = MF(fid).num_unit/2;
833                if(MF(fid).num_unit%2>0)
834                        num_rows = num_rows+1;
835        }
836       
837        switch(num_rows) {
838                case 2:
839                        y=165;
840                        h=148;
841                        break;
842                case 3:
843                        y=136;
844                        h=196;
845                        break;
846                case 4:
847                        y=117;
848                        h=244;
849                        break;
850                case 5:
851                        y=94;
852                        h=292;
853                        break;
854                default:
855                        y=165;
856                        h=148;
857        }
858
859        App_OSD_CommonBox1(x, y, w, h, 6, 2, 
860                        COLOR_BG_LIGHT_BLUE, COLOR_BG_OUT_BLUE, COLOR_LINE_SKY_BLUE);
861        x=x+16;
862        y=y+16;
863        w=w-32;
864        h=h-32;
865        App_OSD_CommonBox2(x, y, w, h, 2, 
866                        COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
867
868        x=x+2;
869        y=y+10;
870        w=w-4;
871        h=h-20;
872
873#if 0
874        if(MF(fid).num_unit == 9) {
875                DMG_EraseRect(357, 120, 2, 240, COLOR_LINE_DEEP_BLUE);
876                DMG_EraseRect(359, 120, 2, 240, COLOR_LINE_WEAK_BLUE);
877        }
878#endif
879       
880        if(MF(fid).num_unit>D4_ICON_MAX_ROWS) {
881                DMG_EraseRect(357, y, 2, h, COLOR_LINE_DEEP_BLUE);
882                DMG_EraseRect(359, y, 2, h, COLOR_LINE_WEAK_BLUE);
883        }
884       
885       
886        if(MF(fid).num_unit <= D4_ICON_MAX_ROWS) {      // 1 line rows(unit 1~5)
887                for(i=0; i<MF(fid).num_unit; i++) {
888                        p_draw_unit(fid, i, x, y+i*D4_ICON_H);
889                }
890        }
891        else if(MF(fid).num_unit <= D4_ICON_MAX_ROWS*2) {       // 2 line rows(unit 6~10)
892                num_rows = MF(fid).num_unit/2;
893                if(MF(fid).num_unit%2>0)
894                        num_rows = num_rows+1;
895
896                for(i=0; i<num_rows; i++) {
897                        p_draw_unit(fid, i, x, y+i*D4_ICON_H);
898                }
899                for(i=0; i<MF(fid).num_unit-num_rows; i++) {
900                        p_draw_unit(fid, i+num_rows, x+219, y+i*D4_ICON_H);
901                }
902        }
903}
904
905
906
907static void p_update_popup_frame(int fid, int uid)
908{
909        int num_rows;
910        int i=0;
911        int x, y, w, h;
912       
913        if(MF(fid).depth != 3)
914                return;
915
916        if(MF(fid).num_unit<=5) {
917                x=208;
918                w=304;
919                num_rows=MF(fid).num_unit;
920        }
921        else {
922                x=124;
923                w=471;
924                num_rows = MF(fid).num_unit/2;
925                if(MF(fid).num_unit%2>0)
926                        num_rows = num_rows+1;
927        }
928       
929        switch(num_rows) {
930                case 2:
931                        y=165;
932                        h=148;
933                        break;
934                case 3:
935                        y=136;
936                        h=196;
937                        break;
938                case 4:
939                        y=117;
940                        h=244;
941                        break;
942                case 5:
943                        y=94;
944                        h=292;
945                        break;
946                default:
947                        y=165;
948                        h=148;
949        }
950       
951        x=x+16;
952        y=y+16;
953        w=w-32;
954        h=h-32;
955
956        x=x+2;
957        y=y+10;
958        w=w-4;
959        h=h-20;
960       
961        if(MF(fid).num_unit <= D4_ICON_MAX_ROWS) {      // 1 line rows(unit 1~5)
962                p_draw_unit(fid, uid, x, y+uid*D4_ICON_H);
963                p_draw_unit(PRIV_INFO(cur_fid), PRIV_INFO(cur_uid), x, y+PRIV_INFO(cur_uid)*D4_ICON_H);
964        }
965        else if(MF(fid).num_unit <= D4_ICON_MAX_ROWS*2) {       // 2 line rows(unit 6~10)
966                num_rows = MF(fid).num_unit/2;
967                if(MF(fid).num_unit%2>0)
968                        num_rows = num_rows+1;
969               
970                if(uid < num_rows) {
971                        p_draw_unit(fid, uid, x, y+uid*D4_ICON_H);
972                }
973                else {
974                        p_draw_unit(fid, uid, x+219, y+(uid-num_rows)*D4_ICON_H);
975                }
976
977                if(PRIV_INFO(cur_uid) < num_rows) {
978                        p_draw_unit(PRIV_INFO(cur_fid), PRIV_INFO(cur_uid), x, y+PRIV_INFO(cur_uid)*D4_ICON_H);
979                }
980                else {
981                        p_draw_unit(PRIV_INFO(cur_fid), PRIV_INFO(cur_uid), x+219, y+(PRIV_INFO(cur_uid)-num_rows)*D4_ICON_H);
982                }
983        }
984        else {          // exception situation
985        }
986}
987
988/**
989        @brief Main ¸Þ´ºÀÇ "µðÁöÅÐ ½ÅÈ£ °¨µµ" Ç¥½Ã ºÎºÐÀÇ °¢ Ç׸ñÀ» ±×·ÁÁÖ´Â ÇÔ¼ö
990       
991*/
992void p_draw_signal_levelbar(int sigLevel)
993{
994        int i=0;
995        char signal_str[30];
996        int orig_font_size=0;
997        orig_font_size=DMG_GetFontSize();
998        DMG_SetFontSize(DEF_FONT_SIZE);
999       
1000        App_OSD_DrawProgressBar(0x3, D3_TEXT_X+10,D3_TEXT_Y+230, 55, sigLevel);
1001
1002        sprintf(signal_str,"%d",sigLevel);
1003        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+180, D3_TEXT_W, 50, signal_str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1004        DMG_SetFontSize(orig_font_size);
1005}
1006
1007
1008
1009static void p_erase_frame(int fid)
1010{
1011        int i;
1012        int color;
1013        int base_x, base_y, unit_h;
1014       
1015        dprint(2, "---%s : fid(%d)\n", __FUNCTION__, fid);
1016       
1017        switch(MF(fid).depth) {
1018                case 0: //depth 1
1019                        DMG_EraseRect(D1_BASE_X, D1_BASE_Y, D1_ICON_W, (D1_ICON_H+D1_INTER_ICON)*4, MAIN_BG_COLOR_ERASE);
1020                        break;
1021                case 1: //depth2
1022                        DMG_EraseRect(179, 141, 220, 238, MAIN_BG_COLOR_ERASE);
1023                        break;
1024                case 2: //depth3
1025                        DMG_EraseRect(409, 79, 234, 340, MAIN_BG_COLOR_ERASE);
1026                        break;
1027        }
1028}
1029
1030// ÇØ´ç frameÀÇ uid°¡ sub frame¿¡ subinfo¸¦ Ç¥½ÃÇÏ´Â uid Àΰæ¿ì ÇØ´ç info draw ÇÔ¼ö
1031static void p_draw_sub_information_frame(int fid, int uid)
1032{       
1033        int orig_font_size=0;
1034        char str[64]={0,};
1035        orig_font_size=DMG_GetFontSize();
1036        DMG_SetFontSize(DEF_FONT_SIZE);
1037       
1038        if(uid == ID_DEF)
1039                uid = MF(fid).cur_unit;
1040       
1041        if(MU(fid,uid).type & 0x2) {    // ÀϹÝÀûÀÎ frame ó¸®¿Í Sub-information À» °¡Áö´Â Leaf Frame.
1042                if(fid == FID_CH_MAIN && uid == 1) {            // "ÀÚµ¿ ä³Î ¼±±¹" frame.
1043                                               
1044                        p_restore_main_bg(MF(fid).depth+1);
1045                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1046                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1047                       
1048                        DMG_SetFontSize(24);
1049                       
1050                        DMG_SetInterLineGap(10);
1051                       
1052                        GET_STR2(str, MAIN_MENU_CH_SCAN_STR);
1053                       
1054                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+145, 188, 140,
1055                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1056                       
1057                        DMG_SetFontSize(24);
1058                       
1059                       
1060                        DMG_DrawImagePng(D3_TEXT_X+25, D3_TEXT_Y+D3_ICON_MARGIN-20, IMG_D3_AUTOSCAN);
1061                }
1062                else if(fid == FID_CH_MAIN && uid == 2) {               // "ä³Î ÆíÁý" frame.
1063                        p_restore_main_bg(MF(fid).depth+1);
1064                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1065                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1066                       
1067                        DMG_SetFontSize(24);
1068                       
1069                        DMG_SetInterLineGap(10);
1070                       
1071                        GET_STR2(str, MAIN_MENU_CH_EDIT_STR);
1072                       
1073                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 292,
1074                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1075                       
1076                        DMG_SetFontSize(24);
1077                }
1078                else if(fid == FID_CH_MAIN && uid == 3) {               // "EPG" frame.
1079                        p_restore_main_bg(MF(fid).depth+1);
1080                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1081                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1082                       
1083                        DMG_SetFontSize(24);
1084                       
1085                        DMG_SetInterLineGap(10);
1086                       
1087                        GET_STR2(str, MAIN_MENU_EPG_STR);
1088                       
1089                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 292,
1090                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1091                       
1092                        DMG_SetFontSize(24);
1093                }
1094                else if(fid == FID_CH_MAIN && uid == 4) {               // "µðÁöÅÐ ¼ö½Å °¨µµ" frame.
1095                        p_restore_main_bg(MF(fid).depth+1);
1096                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1097                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1098                       
1099                        DMG_SetFontSize(24);
1100                       
1101                        DMG_SetInterLineGap(10);
1102                       
1103                        GET_STR2(str, MAIN_MENU_SIG_INFO_STR);
1104                       
1105                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 180,
1106                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1107                       
1108                        DMG_SetFontSize(24);
1109
1110                        AppO_DrawSignalLevelBar(SigMon_GetStrength());
1111                }
1112                else if(fid==FID_CC_MAIN && uid == 1) {//service
1113                        p_restore_main_bg(MF(fid).depth+1);
1114                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1115                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1116                       
1117                        DMG_SetFontSize(24);
1118                       
1119                        DMG_SetInterLineGap(10);
1120                       
1121                        GET_STR2(str, MAIN_MENU_CC_SERVICE_STR);
1122                       
1123                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 292,
1124                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1125                       
1126                        DMG_SetFontSize(24);
1127                       
1128                }
1129                else if(fid == FID_FC_MAIN && uid == 4) {               // "°øÀå ÃʱâÈ­" frame.
1130                        p_restore_main_bg(MF(fid).depth+1);
1131                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1132                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1133                       
1134                        DMG_SetFontSize(24);
1135                       
1136                        DMG_SetInterLineGap(10);
1137                       
1138                        GET_STR2(str, MAIN_MENU_FACTORY_RESET_STR_1);
1139                       
1140                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 292,
1141                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1142                       
1143                        DMG_SetFontSize(24);
1144                }
1145                else if(fid==FID_RT_MAIN && uid == 2) { //Set D.Rating
1146                        p_restore_main_bg(MF(fid).depth+1);
1147                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1148                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1149                       
1150                        DMG_SetFontSize(24);
1151                       
1152                        DMG_SetInterLineGap(10);
1153                       
1154                        GET_STR2(str, MAIN_MENU_SET_DRATING_INFO_STR);
1155                       
1156                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 292,
1157                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1158                       
1159                        DMG_SetFontSize(24);
1160                }
1161                else if(fid==FID_RT_MAIN && uid == 3) { //Update D.Rating
1162                        p_restore_main_bg(MF(fid).depth+1);
1163                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1164                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1165                       
1166                        DMG_SetFontSize(24);
1167                       
1168                        DMG_SetInterLineGap(10);
1169                       
1170                        GET_STR2(str, MAIN_MENU_UPDATE_DRATING_INFO_STR);
1171                       
1172                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 292,
1173                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1174                       
1175                        DMG_SetFontSize(24);
1176                }
1177                else if(fid==FID_RT_MAIN && uid == 4) { //Change PIN
1178                        p_restore_main_bg(MF(fid).depth+1);
1179                        App_OSD_CommonBox2(D3_BASE_X+10, D3_BASE_Y+10, 188, 292, 2, 
1180                                                                COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1181                       
1182                        DMG_SetFontSize(24);
1183                       
1184                        DMG_SetInterLineGap(10);
1185                       
1186                        GET_STR2(str, MAIN_MENU_CHANGE_PIN_INFO_STR);
1187                       
1188                        DMG_PrintStrEx(D3_TEXT_X, D3_TEXT_Y+10, 188, 292,
1189                                str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1190                       
1191                        DMG_SetFontSize(24);
1192                }
1193                else {
1194                }
1195               
1196                DMG_SetInterLineGap(0);
1197        }
1198
1199        DMG_SetFontSize(orig_font_size);
1200}
1201
1202
1203
1204/**
1205        @brief Main ¸Þ´º OSDÀÇ ¹è°æ ºÎºÐ¸¸ tmp ¿µ¿ª¿¡ backup ÇÔ.
1206
1207*/
1208void AppO_BackupMainBG()
1209{
1210        DMG_SetPlane(APP_PLANE_TEMP1);
1211       
1212        // depth 1, 2
1213        DMG_EraseRect(BG_BASIC1_X, BG_BASIC1_Y, BG_BASIC1_W, BG_BASIC1_H, MAIN_BG_COLOR);
1214        //DMG_DrawImagePng(BG_BASIC2_X, BG_BASIC2_Y, IMG_MAIN_FRAME);
1215        DMG_EraseRect(BG_BASIC2_X, BG_BASIC2_Y, 332, 312, 0xff000000); //black
1216        DMG_EraseRect(BG_BASIC2_X+96, BG_BASIC2_Y+50, 230, 252, MAIN_BG_COLOR); //black
1217       
1218        // depth 3
1219        DMG_EraseRect(BG_EXTEND_X, BG_EXTEND_Y, BG_EXTEND_W, BG_EXTEND_H, MAIN_BG_COLOR);
1220        DMG_EraseRect(D3_BASE_X, D3_BASE_Y, D3_BASE_W, D3_LINE_GAP, COLOR_LINE_SKY_BLUE);
1221        DMG_EraseRect(D3_BASE_X, D3_BASE_Y, D3_LINE_GAP, D3_BASE_H, COLOR_LINE_SKY_BLUE);
1222        DMG_EraseRect(D3_BASE_X+D3_BASE_W-D3_LINE_GAP, D3_BASE_Y, D3_LINE_GAP, D3_BASE_H, COLOR_LINE_SKY_BLUE);
1223        DMG_EraseRect(D3_BASE_X, D3_BASE_Y+D3_BASE_H-D3_LINE_GAP, D3_BASE_W, D3_LINE_GAP, COLOR_LINE_SKY_BLUE);
1224        DMG_EraseRect(D3_BASE_X+D3_LINE_GAP, D3_BASE_Y+D3_LINE_GAP, D3_BASE_W-2*D3_LINE_GAP, D3_BASE_H-2*D3_LINE_GAP, COLOR_BG_OUT_BLUE);
1225                               
1226        DMG_SetPlane(APP_PLANE_WRITE);
1227}
1228
1229
1230
1231tApp_MmFrame *AppO_GetFrameInfo(int fid)
1232{
1233        return &MF(fid);
1234}
1235
1236
1237
1238
1239
1240/**
1241        @brief Main ¸Þ´ºÀÇ "µðÁöÅÐ ½ÅÈ£ °¨µµ" Ç¥½Ã ºÎºÐÀÇ ½ÅÈ£ °¨µµ¸¦ ¾÷µ¥ÀÌÆ® ÇÏ´Â ÇÔ¼ö
1242       
1243*/
1244void AppO_UpdateSignalLevelBar(int sigLevel)
1245{
1246        DMG_EraseRect(D3_TEXT_X+D3_TEXT_MARGIN, BG_EXTEND_Y+200, D3_TEXT_W-2*D3_TEXT_MARGIN, 100, COLOR_BG_IN_BLUE);
1247        p_draw_signal_levelbar(sigLevel);
1248}
1249
1250/**
1251        @brief Main ¸Þ´ºÀÇ "µðÁöÅÐ ½ÅÈ£ °¨µµ" Ç¥½Ã ºÎºÐÀÇ ½ÅÈ£ °¨µµ¸¦ ±×·ÁÁÖ´Â ÇÔ¼ö
1252       
1253*/
1254void AppO_DrawSignalLevelBar(int sigLevel)
1255{
1256        p_draw_signal_levelbar(sigLevel);
1257}
1258
1259/**
1260        @brief Main ¸Þ´ºÀÇ Frame ºÎºÐÀ» ±×¸®´Â ÇÔ¼ö
1261
1262        @param[in]      fid             ÇØ´çÇÏ´Â fidÀÇ depth¿¡ µû¶ó ±×·ÁÁö´Â ¿µ¿ªÀÇ ¹üÀ§ ´Ù¸§
1263*/
1264void AppO_DrawMainMenu(int fid)
1265{
1266        //Á¤º¸ º¯°æ ¾øÀÌ ±×³É..±×´ë·Î ±×·ÁÁÜ..
1267        if(fid==ID_DEF) fid=PRIV_INFO(cur_fid);
1268
1269        if(MF(fid).depth==0) {
1270                p_draw_frame(fid);
1271                p_draw_frame(MU(fid, MF(fid).cur_unit).link);
1272        }
1273        else if(MF(fid).depth==1) {
1274                p_draw_frame(FID_D1);
1275                p_draw_frame(fid);
1276                p_draw_frame(MU(fid, MF(fid).cur_unit).link);
1277        }
1278        else if(MF(fid).depth==2) {
1279                p_draw_frame(FID_D1);
1280                p_draw_frame(MF(fid).parent);
1281                p_draw_frame(fid);
1282        }
1283        else if(MF(fid).depth==3) {
1284                p_draw_frame(FID_D1);                                   // depth1
1285                p_draw_frame(MU(FID_D1, MF(FID_D1).cur_unit).link);     // depth2
1286                p_draw_frame(MF(fid).parent);                   // depth3
1287                p_draw_popup_frame(fid);                                // depth4
1288        }
1289
1290        p_draw_sub_information_frame(fid, ID_DEF);
1291}
1292
1293
1294/**
1295        @brief Main ¸Þ´º OSD¸¦ ¾÷µ¥ÀÌÆ® ÇÏ´Â ÇÔ¼ö
1296
1297        @param[in]      fid             »õ·Î ¼öÁ¤µÈ "ÇöÀç frame ID"
1298                                uid             »õ·Î ¼öÁ¤µÈ "ÇöÀç unit ID"
1299*/
1300void AppO_UpdateMainMenu(int fid, int uid)
1301{
1302        int i=0;
1303
1304        dprint(1,"xxxx: fid = %d, uid = %d\n", fid, uid);
1305        //ÇØ´ç fid, uidÀÇ Á¤º¸¸¦ ¾÷µ¥ÀÌÆ®ÇÏ°í ±×·ÁÁÜ..
1306        //
1307        if(fid==ID_DEF) fid=PRIV_INFO(cur_fid);
1308       
1309        //dprint(0, "pass0.1(%d/%d)\n", fid, PRIV_INFO(cur_fid));
1310               
1311        if(PRIV_INFO(cur_fid)>0)
1312                MF(PRIV_INFO(cur_fid)).bactive=FALSE;
1313       
1314        //dprint(0, "pass0.2(%d/%d)\n", fid, PRIV_INFO(cur_fid));
1315       
1316        if(PRIV_INFO(cur_fid)>0 && MF(fid).depth<=MF(PRIV_INFO(cur_fid)).depth)
1317                MU(PRIV_INFO(cur_fid), PRIV_INFO(cur_uid)).bactive=FALSE;
1318        MF(fid).bactive=TRUE;
1319
1320        //dprint(0, "pass0.3(%d/%d)\n", fid, PRIV_INFO(cur_fid));
1321
1322        if(uid==ID_DEF) uid=MF(fid).cur_unit;//default °ª..
1323       
1324        MU(fid, uid).bactive=TRUE;
1325        MF(fid).cur_unit=uid;
1326       
1327        //dprint(0, "pass0.4(%d/%d)\n", fid, PRIV_INFO(cur_fid));
1328       
1329        // ÀÌÀü unit °ú »õ·Î¿î unitÀÇ »óÅ º¯°æ¿¡ µû¸¥ OSD ¾÷µ¥ÀÌÆ®
1330        if(MF(PRIV_INFO(cur_fid)).depth<3)
1331                p_update_unit(PRIV_INFO(cur_fid), PRIV_INFO(cur_uid));
1332               
1333        if(MF(fid).depth<3) {
1334               
1335                // leaf unitÀÇ selected(check) º¯°æ½Ã ÀÌÀü check unitÀÇ Ç¥½Ãµµ ¾÷µ¥ÀÌÆ®ÇϱâÀ§ÇØ fid frameÀÇ Àüü unitÀ» ´Ù ±×¸².
1336                if(fid == PRIV_INFO(cur_fid) && uid == PRIV_INFO(cur_uid) && MU(fid, uid).bselected)
1337                        p_draw_frame(fid);              // ÀÌÀü check µÈ unitµµ ¾÷µ¥ÀÌÆ®ÇϱâÀ§ÇØ Àüü ´Ù½Ã ±×¸².
1338                else                                    // »õ·Î¿î frame°¡ depth3 ¾Æ´Ï¸é º¯°æµÈ unit¸¸ ¾÷µ¥ÀÌÆ®.
1339                        p_update_unit(fid, uid);
1340
1341                if(MF(fid).depth<2) {
1342                        // sub-frame ºÎºÐ ¾÷µ¥ÀÌÆ®.
1343                        if(MU(fid, uid).bleaf != TRUE) {        // º¯°æµÈ unitÀÇ sub frameÀÌ Á¸ÀçÇÏ´Â °æ¿ì sub-frameÀÇ depthµµ draw update
1344                                p_restore_main_bg(MF(MU(fid, uid).link).depth);
1345                                p_draw_frame(MU(fid, uid).link);
1346                        }
1347                        else {  // ÀϹÝÀûÀÎ frame ó¸®¿Í Sub-information À» °¡Áö´Â Leaf Frame.
1348                                p_restore_main_bg(MF(fid).depth+1);
1349                        }
1350                }
1351        }
1352        else { // depth 4 frame¿¡¼­ÀÇ unit update
1353               
1354                if(fid != PRIV_INFO(cur_fid)) { // 4 depth ÁøÀÔ ½Ã.
1355                        p_draw_popup_frame(fid);
1356                }
1357                else if(uid == PRIV_INFO(cur_uid) && MU(fid, uid).bselected) {  // fid, uid °¡ ÇöÀç id¿Í »õ·Î º¯°æµÇ´Â id °¡ °°°í selectedµÈ unitÀ¸·Î º¯°æ ½Ã.
1358                        // leaf unitÀÇ selected(check) º¯°æ½Ã ÀÌÀü check unitÀÇ Ç¥½Ãµµ ¾÷µ¥ÀÌÆ®ÇϱâÀ§ÇØ fid frameÀÇ Àüü unitÀ» ´Ù ±×¸².
1359                        p_draw_popup_frame(fid);
1360                }
1361                else {  // 4depth³»¿¡¼­ unit°£ À̵¿½Ã¿¡´Â ÇØ´ç uid¿Í ÇöÀç uid¸¸ updateÇÑ´Ù.
1362                        p_update_popup_frame(fid, uid);
1363                }
1364        }
1365       
1366        PRIV_INFO(cur_fid)=fid;
1367        PRIV_INFO(cur_uid)=uid;
1368       
1369        // Sub-information À» °¡Áö´Â Frame ó¸®.
1370        p_draw_sub_information_frame(fid, ID_DEF);
1371}
1372
1373/**
1374        @brief Main ¸Þ´º OSD depth ºÎºÐº° erase ÇÔ¼ö.
1375
1376        @param[in]      fid             fidÀÇ depth¿¡ ÇØ´çÇÏ´Â Áö¿ª OSD Erase(fid°¡ ID_DEFÀ̸é OSD Àüü ¿µ¿ª erase
1377*/
1378void AppO_EraseMainMenu(int fid)
1379{
1380        if(fid == ID_DEF) {     // Erage All Main Menu
1381                DMG_EraseRect(0, 0, 720, 480, MAIN_BG_COLOR_ERASE);
1382        }
1383        else { 
1384                p_erase_frame(fid);
1385        }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
1386}
1387
1388
1389
1390
1391
1392int AppO_GetCurFrame()
1393{
1394        return PRIV_INFO(cur_fid);
1395}
1396
1397
1398void AppO_SetCurFrame(int fid)
1399{
1400        int tmp_fid=0;
1401        int tmp_parent_fid=0;
1402        int tmp_uid=0;
1403       
1404        if(PRIV_INFO(cur_fid)>0)
1405                MF(PRIV_INFO(cur_fid)).bactive=FALSE;
1406               
1407        // ÀÌÀü Unit ¿¡ ´ëÇÑ bactive °ª ÃʱâÈ­.
1408        tmp_fid = PRIV_INFO(cur_fid);
1409        while(tmp_fid >= FID_D1) {
1410                tmp_uid = MF(tmp_fid).cur_unit;
1411                MU(tmp_fid, tmp_uid).bactive=FALSE;
1412                tmp_fid = MF(tmp_fid).parent;
1413        }
1414
1415        // ¼³Á¤ÇϰíÀÚÇÏ´Â UnitÀÇ bactive ¼³Á¤ ¹× ºÎ¸ð fidÀÇ cur_unit ¹× bactive ¼³Á¤
1416        MF(fid).bactive=TRUE;
1417        //ÇØ´ç frameÀÇ cur_unitÀº 0À¸·Î ÃʱâÈ­.
1418        MF(fid).cur_unit=0;
1419        tmp_fid = fid;
1420        while(tmp_fid >= FID_D1) {
1421                MU(tmp_fid, MF(tmp_fid).cur_unit).bactive=TRUE;
1422               
1423                tmp_parent_fid = MF(tmp_fid).parent;
1424                if(tmp_parent_fid < FID_D1)
1425                        break;
1426                       
1427                MF(tmp_parent_fid).cur_unit = tmp_fid;
1428                tmp_fid = tmp_parent_fid;
1429        }
1430        PRIV_INFO(cur_fid)=fid;
1431        dprint(0, "########## SetCurFid : cur_fid(%d)\n", fid);
1432        PRIV_INFO(cur_uid)=MF(fid).cur_unit;
1433}
1434
1435
1436
1437/**
1438        @brief Main ¸Þ´ºÀÇ ¹è°æÀ» ±×¸®´Â ÇÔ¼ö.
1439
1440        @param[in]      mode            ±×¸®´Â Main ¸Þ´ºÀÇ mode ÁöÁ¤(0: depth 1-2, 1:  depth 3)
1441*/
1442void AppO_DrawMainMenuBg(int mode)
1443{
1444        //mode 0: depth 1-2, mode 1:  depth 3
1445        if(mode==0) {
1446                p_restore_bg(BG_BASIC1_X, BG_BASIC1_Y, BG_BASIC1_W, BG_BASIC1_H);
1447                DMG_EraseRect(424, BG_BASIC1_Y, 6, BG_BASIC1_H, MAIN_BG_COLOR);
1448        }
1449        else {
1450                p_restore_main_bg(2);
1451        }
1452}
1453
1454
1455
1456/**
1457        @brief Main ¸Þ´ºÀÇ ¹è°æÀ» Áö¿ì´Â ÇÔ¼ö.
1458
1459        @param[in]      mode            Áö¿ì´Â Main ¸Þ´ºÀÇ mode ÁöÁ¤(0: depth 1-2, 1:  depth 3)
1460*/
1461void AppO_EraseMainMenuBg(int mode)
1462{
1463        //mode 0: depth 1-2, mode 1:  depth 3
1464        if(mode==0) {
1465                DMG_EraseRect(BG_BASIC1_X, BG_BASIC1_Y, BG_BASIC1_W, BG_BASIC1_H, MAIN_BG_COLOR_ERASE);
1466        }
1467        else {
1468                DMG_EraseRect(BG_EXTEND_X, BG_EXTEND_Y, BG_EXTEND_W, BG_EXTEND_H, MAIN_BG_COLOR_ERASE);
1469                DMG_EraseRect(424, BG_BASIC1_Y, 6, BG_BASIC1_H, MAIN_BG_COLOR);
1470        }
1471}
1472
1473void AppO_DrawMainReset(int mode, char *str1, char *str2)
1474{
1475        int x, y;
1476        int width = 340;
1477        int height = 200;
1478        int orig_font_size=0;
1479
1480        orig_font_size=DMG_GetFontSize();
1481        DMG_SetFontSize(DEF_FONT_SIZE);
1482               
1483        x = (720-width)/2;
1484        y = (480-height)/2;
1485        App_OSD_CommonBox1(x, y, width, height, 6, 2, 
1486                        COLOR_BG_LIGHT_BLUE, COLOR_BG_OUT_BLUE, COLOR_LINE_SKY_BLUE);
1487        x=x+16;
1488        y=y+16;
1489        width=width-32;
1490        height=height-32;
1491        App_OSD_CommonBox2(x, y, width, height, 2, 
1492                        COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1493
1494        x=x+2;
1495        y=y+10;
1496        width=width-4;
1497        height=height-20;
1498
1499        if(mode == 0) {
1500                if(str1)
1501                        DMG_PrintStrEx(x, y, width, 50, str1, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1502                if(str2)
1503                        DMG_PrintStrEx(x, y+40, width, 50, str2, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1504                App_OSD_DrawButton(1, x+width/9+10,y+95,width/3);
1505                PRINT_STR_EX(x+width/9+10,y+95,width/3, 50, STR_YES, MC_ACTIVE, DMG_OPT_A_CT|DMG_OPT_A_MD);
1506                App_OSD_DrawButton(0, x+width/3+2*(width/9)-10,y+95,width/3);
1507                PRINT_STR_EX(x+width/3+2*(width/9)-10,y+95,width/3, 50, STR_NO, MC_INACTIVE, DMG_OPT_A_CT|DMG_OPT_A_MD);
1508        }
1509        else if(mode == 1) {
1510                if(str1)
1511                        DMG_PrintStrEx(x, y+30, width, 50, str1, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1512                if(str2)
1513                        DMG_PrintStrEx(x, y+60, width, 50, str2, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1514        }
1515        DMG_SetFontSize(orig_font_size);
1516}
1517
1518void AppO_UpdateMainReset(int mode)
1519{
1520        int x, y;
1521        int width = 340;
1522        int height = 200;
1523        int orig_font_size=0;
1524
1525        orig_font_size=DMG_GetFontSize();
1526        DMG_SetFontSize(DEF_FONT_SIZE);
1527       
1528        x = (720-width)/2;
1529        y = (480-height)/2;
1530
1531        x=x+16;
1532        y=y+16;
1533        width=width-32;
1534        height=height-32;
1535
1536        x=x+2;
1537        y=y+10;
1538        width=width-4;
1539        height=height-20;
1540
1541
1542        App_OSD_DrawButton(mode==0?1:0, x+width/9+10,y+95,width/3);
1543        PRINT_STR_EX(x+width/9+10,y+95,width/3, 50, STR_YES, mode==0?MC_ACTIVE:MC_INACTIVE, DMG_OPT_A_CT|DMG_OPT_A_MD);
1544        App_OSD_DrawButton(mode==0?0:1, x+width/3+2*(width/9)-10,y+95,width/3);
1545        PRINT_STR_EX(x+width/3+2*(width/9)-10,y+95,width/3, 50, STR_NO, mode==0?MC_INACTIVE:MC_ACTIVE, DMG_OPT_A_CT|DMG_OPT_A_MD);
1546        DMG_SetFontSize(orig_font_size);
1547}
1548
1549
1550void AppO_DrawEnterPin()
1551{
1552        int x, y;
1553        int width = 340;
1554        int height = 150;
1555        int orig_font_size=0;
1556        char str[64];
1557        int i;
1558        int rw=42;
1559        int rh=42;
1560        int inter_rect=12;
1561        #define COLOR_GRAY 0xff808080
1562
1563        orig_font_size=DMG_GetFontSize();
1564        DMG_SetFontSize(DEF_FONT_SIZE);
1565               
1566        x = (720-width)/2;
1567        y = (480-height)/2;
1568        App_OSD_CommonBox1(x, y, width, height, 6, 2, 
1569                        COLOR_BG_LIGHT_BLUE, COLOR_BG_OUT_BLUE, COLOR_LINE_SKY_BLUE);
1570        x=x+16;
1571        y=y+16;
1572        width=width-32;
1573        height=height-32;
1574        App_OSD_CommonBox2(x, y, width, height, 2, 
1575                        COLOR_BG_IN_BLUE, COLOR_LINE_DEEP_BLUE, COLOR_LINE_WEAK_BLUE);
1576
1577        x=x+2;
1578        y=y+10;
1579        width=width-4;
1580        height=height-20;
1581       
1582        GET_STR2(str, RATING_ENTER_PIN);
1583       
1584        DMG_PrintStrEx(x, y, width, 40, str, MC_NORMAL, DMG_OPT_A_CT|DMG_OPT_A_MD);
1585       
1586        DMG_EraseRect(x+53, y+50, rw, rh, C_ACTIVE_ITEM);
1587       
1588        for(i=0; i<3; i++) {
1589                DMG_EraseRect(x+53+(i+1)*(rw+inter_rect), y+50, rw, rh, COLOR_GRAY);
1590        }
1591       
1592        DMG_SetFontSize(orig_font_size);
1593}
1594
1595
1596void AppO_UpdateEnterPin(int pos)
1597{
1598        //ÇØ´ç À§Ä¡¸¦ ±×¸®°í ´ÙÀ½ À§Ä¡¸¦ ³ë¶õ»öÀ¸·Î º¯°æ.
1599        int x=(720-340)/2+16+2;
1600        int y=(480-150)/2+16+10;
1601        int rw=42;
1602        int rh=42;
1603        int inter_rect=12;
1604        char str[2]="*";
1605        int orig_font_size=DMG_GetFontSize();
1606       
1607        DMG_SetFontSize(47);
1608       
1609        if(pos>=4 || pos<0) return;
1610       
1611        DMG_PrintStrEx(x+53+pos*(rw+inter_rect)-5, y+50-5+10, rw+10, rh+10, str, MC_ACTIVE, DMG_OPT_A_CT|DMG_OPT_A_MD);
1612       
1613        if(pos<3)
1614                DMG_EraseRect(x+53+(pos+1)*(rw+inter_rect), y+50, rw, rh, C_ACTIVE_ITEM);
1615       
1616        DMG_SetFontSize(orig_font_size);
1617}
1618
1619
1620
1621void print_mf(int fid)
1622{
1623        int i;
1624       
1625        if(fid==0) fid=PRIV_INFO(cur_fid);
1626               
1627        if(fid==0) {
1628                dprint(0, "fid is invalid, please check the fid first!!\n");
1629                return;
1630        }
1631       
1632        dprint(0, "id(%d), depth(%d), active(%d), num_unit(%d), cur_unit(%d), parent(%d)\n",
1633                MF(fid).id, MF(fid).depth, MF(fid).bactive, MF(fid).num_unit, MF(fid).cur_unit,
1634                MF(fid).parent);
1635       
1636        dprint(0, "id, act, sel, type, leaf, link, text, img\n");
1637        dprint(0, "-----------------------------------------\n");
1638        for(i=0; i<MF(fid).num_unit; i++) {
1639                dprint(0, "%2d, %3d, %3d, %4d, %4d, %4d, %4x, %3x\n",
1640                        MU(fid,i).id, MU(fid,i).bactive, MU(fid,i).bselected, MU(fid,i).type,
1641                        MU(fid,i).bleaf, MU(fid,i).link, MU(fid,i).ptext, MU(fid,i).pimg);
1642        }
1643        dprint(0, "-----------------------------------------\n");
1644}
1645/* end of file */
Note: See TracBrowser for help on using the repository browser.