source: svn/trunk/zasc/app_c/DST_WinChannelEdit.c @ 2

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

first commit

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