source: svn/trunk/zasc/app/DST_WinChannelEdit.cpp @ 76

Last change on this file since 76 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
File size: 8.8 KB
Line 
1#include "DST_WinManager.h"
2#include "DST_ChannelTune.h"
3#include "DST_SignalMonitor.h"
4#include "DST_DataStrings.h"
5#include "DST_OSDImage.h"
6#include "DST_UserInterface.h"
7#include "DST_DB.h"
8
9#define CE_LIST         5
10
11#define RF_W            30
12#define CH_NO_W         61
13#define CH_NAME_W       112
14#define ADD_W           53
15
16#if 0
17____CChannelEditWin___()
18#endif
19
20
21class CChannelEditWin : public CWindow
22{
23private:
24        int totalNum;
25        ChannelMap* chMap;
26        SkipList*skipProgramNumber;
27
28        DS_U16 g_nPos;
29        DS_U16 g_nTop;
30        DS_U16 select;
31        DS_U16 listNum;
32        DS_U16 nSkipCh; 
33public:
34        CChannelEditWin(SWinEventMsg event):CWindow(event)
35        {
36                InitValues();
37
38                setSize();
39               
40                SetTimeOut(60);
41               
42        }
43        virtual ~CChannelEditWin()
44        {
45                if(chMap) DST_OS_Free(&chMap);
46        }
47       
48        void setSize(void)
49        {
50                rect.w = DST_GetImageWidth(newcon2_gui_channeledit_back);
51                rect.h = DST_GetImageHeight(newcon2_gui_channeledit_back);
52                rect.x = (DST_GetScreenWidth() - rect.w) / 2;
53                rect.y = (DST_GetScreenHeight()- rect.h) / 2;
54
55        }       
56       
57        void InitValues(void)
58        {
59                totalNum = 0;
60                if(chMap) DST_OS_Free(&chMap);
61                chMap = 0;
62                skipProgramNumber = 0;
63                chMap = DST_DB_GetChannelMapForChEdit(&totalNum);
64                g_nTop = 0;
65                g_nPos = 0;
66                select = 0;
67                listNum = 8;
68                if (totalNum < listNum) listNum = totalNum;
69
70                for(int i=0;i<totalNum;i++)
71                {
72                        if(DST_EEPROM_GetRF() == chMap[i].rf && DST_EEPROM_GetProgramNumber() == chMap[i].number )
73                        {
74                                ItemDecrease(totalNum, listNum, &g_nTop, &select, &g_nPos,totalNum - i );
75                                DST_UI_ChannelTune(chMap[select].rf,chMap[select].number);
76                                break;
77                        }
78                }
79               
80                DST_UI_ChannelTune(chMap[select].rf,chMap[select].number);
81                nSkipCh = getValues();
82        }
83
84        DS_U16 getValues()
85        {
86                skipProgramNumber= 0;
87                int size = 0;
88               
89                skipProgramNumber = DST_DB_GetSkipChannel(&size);
90                return size;
91        }
92       
93        void SetValues(int rf, DS_U16 sourceID, bool bAdd)
94        {
95                DST_DB_SetSkipChannel(rf, sourceID, bAdd);
96                DST_DB_MakeSkipChannel();
97        }
98
99        virtual void Focus(bool bVal)
100        {
101                RegisterAllKey();
102                RegisterKey(VK_PWR, false);
103                RegisterKey(VK_SIGNAL_METER, false);
104                RegisterKey(VK_ZOOM, false);
105                RegisterKey(VK_CC, false);
106                RegisterKey(VK_EPG, false);
107        }
108
109       
110        virtual void Show(WinID id)
111        {
112                switch(id)
113                {
114                        case WIN_EWS:
115//                      case WIN_CHANNEL_BANNER:
116                        case WIN_DIRECT_TUNE:
117                        case WIN_VOLUME:
118                        case WIN_VOLUME_MUTE:
119                        case WIN_SIGNAL_METER:
120                        case WIN_CLOSED_CAPTION_HOT:
121                        case WIN_AUDIO_HOT:
122                        case WIN_DISPLAY_MODE_HOT:
123                        case WIN_FACTORY_RESET:
124                        case WIN_FACTORY_RESET_ASK:
125                        case WIN_INFOR_BANNER:
126                        case WIN_MAIN_MENU:
127                        case WIN_POWER_DOWN_CAUTION:
128                        case WIN_SUB_MENU_2DEPTH:
129                        case WIN_SUB_MENU_3DEPTH:
130                        case WIN_SUB_MENU_4DEPTH:
131                        case WIN_AUTO_SEARCH:
132                        case WIN_MANUAL_SEARCH:
133//                      case WIN_CHANNEL_LIST:
134                        case WIN_PROGRAM_GUIDE:
135                                Close();
136                                break;
137                        default:
138                                break;
139                }
140        }
141       
142        virtual void Show(void)
143        {
144                Draw();
145                DoFocus(true);
146        }       
147                 //³×ºñ°ÔÀÌ¼Ç ±×¸®±â
148                void DrawNavigation()
149                {
150                        setFontStyle(20,0xFF8C8C8C,font.GetVerAlign(),ALIGN_LEFT);
151       
152                        DS_U16  final[20];
153                        memset(final,0,sizeof(final));
154                        strcpy16(final, pz_Edit_Menu[OSD_Lang]);
155                        str2uni(&final[strlen16(final)], (char *)" : ");
156                        strcpy16(&final[strlen16(final)], pz_Edit_Exit[OSD_Lang]);
157                        DrawTextUni(17, 340, 142, 29, final, &font);
158       
159                        memset(final,0,sizeof(final));
160                        strcpy16(final, pz_Edit_OK[OSD_Lang]);
161                        str2uni(&final[strlen16(final)], (char *)" : ");
162                        strcpy16(&final[strlen16(final)], pz_Edit_Select[OSD_Lang]);
163                        DrawTextUni(170, 340, 142, 29, final, &font);
164
165                }
166       
167                void DrawTitle()
168                {
169#if DESIGN_TYPE == 1
170                        setFontStyle(19,0xFFC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
171                        DrawTextUni(16, 10, 112, 29, pz_Edit_ChannelNumber[OSD_Lang], &font);
172                        DrawTextUni(148, 10, 201, 29, pz_Edit_ChannelName[OSD_Lang], &font);
173                        DrawTextUni(368, 10, 39, 29, pz_Edit_RF[OSD_Lang], &font);
174//                      setFontStyle(15,0xFFC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
175                        DrawTextUni(422, 10, 55, 29, pz_Edit_ADD[OSD_Lang], &font);
176                        DrawTextUni(491, 10, 55, 29, pz_Edit_FAV[OSD_Lang], &font);
177#else
178                        setFontStyle(19,0xFFC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
179                        DrawTextUni(16, 12, 116, 29, pz_Edit_ChannelNumber[OSD_Lang], &font);
180                        DrawTextUni(142, 12, 212, 29, pz_Edit_ChannelName[OSD_Lang], &font);
181                        DrawTextUni(364, 12, 47, 29, pz_Edit_RF[OSD_Lang], &font);
182//                      setFontStyle(15,0xFFC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
183                        DrawTextUni(420, 12, 60, 29, pz_Edit_ADD[OSD_Lang], &font);
184#endif 
185
186                       
187                }
188
189#if DESIGN_TYPE == 1
190        void DrawItems(int index,int y_Constant=195, int y_Multiplier=36, int width=85, int nFontSize=20)
191        {
192                setFontStyle(19,0xFFC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
193               
194                DrawText(16, 46+index*y_Multiplier, 112, 29, chMap[index+g_nTop].num, &font);
195
196                DrawTextUTF8(148, 46+index*y_Multiplier, 201, 29, chMap[index+g_nTop].name, &font);
197
198                char num[5] = {0,};
199                sprintf(num, "%d", DST_GetFrequencyNumberbyIndex(chMap[index+g_nTop].rf));
200
201                DrawText(368, 46+index*y_Multiplier, 39, 29, num, &font);
202
203
204                if(!CompareValues(chMap[index+g_nTop].rf,chMap[index+g_nTop].number))
205                        DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check);
206                else
207                        DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check_empty);
208                if(select == index+g_nTop)
209                {
210                        if(!CompareValues(chMap[index+g_nTop].rf,chMap[index+g_nTop].number))
211                                DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check_cursor);
212                        else
213                                DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check_cursor_empty);
214                }
215
216                       
217               
218        }
219#else
220        void DrawItems(int index,int y_Constant=195, int y_Multiplier=36, int width=85, int nFontSize=20)
221        {
222                setFontStyle(19,0xFFC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
223
224                DrawText(16, 43+index*y_Multiplier, 124, 29, chMap[index+g_nTop].num, &font);
225
226                DrawTextUTF8(142, 43+index*y_Multiplier, 219, 29, chMap[index+g_nTop].name, &font);
227
228                char num[5] = {0,};
229                sprintf(num, "%d",DST_GetFrequencyNumberbyIndex(chMap[index+g_nTop].rf));
230
231                DrawText(364, 43+index*y_Multiplier, 53, 29, num, &font);
232
233                DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check_empty);
234
235                if(!CompareValues(chMap[index+g_nTop].rf, chMap[index+g_nTop].number))
236                        DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check);
237                else
238                        DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check_empty);
239                if(select == index+g_nTop)
240                {
241                        if(!CompareValues(chMap[index+g_nTop].rf,chMap[index+g_nTop].number))
242                                DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check_cursor);
243                        else
244                                DrawImage(417, 43+index*y_Multiplier, newcon2_gui_channeledit_button_check_cursor_empty);
245                }
246               
247               
248        }
249#endif 
250
251
252        bool CompareValues(int rf, DS_U16 target)
253        {
254                bool result = false;
255                for(int i=0;i<nSkipCh;i++)
256                {
257                        if(skipProgramNumber[i].rf == rf && skipProgramNumber[i].program_number == target)
258                        {
259                                result = true;
260                        }
261                }
262                return result;
263        }
264
265        void DrawScrollBar3(int x, int y, int h, int total_count, int page_count, int page_start)
266        {
267                if (total_count <= page_count) return;
268                int nScrollPosition = total_count - page_count;
269                int ScrollHeight = h/nScrollPosition;
270                DST_Printf("nScrollPosition : %d h/nScrollPosition : %d/%d == %d y+page_start*ScrollHeight = %d\n",nScrollPosition,h,nScrollPosition ,ScrollHeight,y+page_start*ScrollHeight);
271                DrawImage(x,y+page_start*ScrollHeight,newcon2_gui_scroll_button,true);
272        }
273       
274        void Draw(void)
275        {
276                DrawImage(0,0, newcon2_gui_channeledit_back);
277                DrawTitle();
278                DrawScrollBar3(489, 30, 294, totalNum, listNum, g_nTop);
279
280                DrawNavigation();
281                for(int i=0;i<listNum;i++)
282                        DrawItems(i);
283        }
284       
285
286        virtual void OnMessage(SWinEventMsg event)
287        {
288                switch (event.cmd)
289                {
290                        case WM_POWER_OFF:
291                                Close();
292                                break;
293                               
294                        case WM_CT_MSG:
295                                switch (event.data32[0])
296                                {
297                                        case CT_CHMAP_UPDATE:
298                                                InitValues();
299                                                Show();
300                                                break;                                 
301                                }
302                                break;
303                }
304        }
305
306        virtual void KeyInput(DS_U8 key, bool /*bRepeat*/)
307        {
308                switch (key)
309                {
310                        case VK_MENU:
311                        case VK_CANCEL:
312                        case VK_PREV:
313                        case VK_PREV_MENU:
314                                if (GetParentWinID()) DST_CreateWin(GetParentWinID());
315                                Close();
316                                break;
317                        case VK_UP:
318                        case VK_DN:
319                                if(key == VK_DN)
320                                        ItemIncrease(totalNum, listNum, &g_nTop, &select, &g_nPos);
321                                else
322                                        ItemDecrease(totalNum, listNum, &g_nTop, &select, &g_nPos);
323
324                                DST_UI_ChannelTune(chMap[select].rf,chMap[select].number);
325                                Draw();
326                                break;
327//                      case VK_CH_UP:
328//                      case VK_CH_DN:
329//                              if(key == VK_CH_DN)
330//                                      ItemIncrease(mainItemNum, mainListNum, &g_nTop, &mainSelect, &g_nPos, listNum);
331//                              else
332//                                      ItemDecrease(mainItemNum, mainListNum, &g_nTop, &mainSelect, &g_nPos, listNum);
333//                              //DST_UI_ChannelTune(chMap[select].number);
334//                              Draw();
335//                              break;
336                        case VK_OK:
337                                SetValues(chMap[select].rf , chMap[select].number, CompareValues(chMap[select].rf, chMap[select].number)?false:true);
338                                nSkipCh = getValues();
339                                Draw();
340
341                                break;
342                        default:
343                                break;
344
345                }
346        }
347};
348
349void DST_CreateChannelEditWin(SWinEventMsg event)
350{
351        if (DST_DB_PresentChMap() == false) return;
352        DST_AddWin((WinID)(event.data[0]), new CChannelEditWin(event));
353}
354
Note: See TracBrowser for help on using the repository browser.