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

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

1.phkim

  1. revision copy newcon3sk r27
File size: 9.5 KB
Line 
1#include "DST_WinManager.h"
2#include "DST_ChannelTune.h"
3#include "DST_SignalMonitor.h"
4
5#include "DST_DataStrings.h"
6#include "DST_OSDImage.h"
7#include "DST_UserInterface.h"
8
9#include "DST_ISDBT_ChannelTask.h"
10#include "DST_ChannelTune.h"
11#include "DST_DB.h"
12#include "DST_DB_Engine.h"
13#include "DST_MemoryDB.h"
14
15#define AS_RF_W                 77
16#define AS_CH_NO_W              111
17#define AS_CH_NAME_W    364
18
19#define PROGRESS_BAR_X  33
20#define PROGRESS_BAR_Y  266
21#define PROGRESS_BAR_W  333
22
23
24//class CManualSearchWin : public CWindow
25//{
26//private:
27        static CHANNEL_DISPLAY CManualSearchWin_ch[4];
28        static int CManualSearchWin_m_nRF; // È­¸é¿¡ Ç¥½ÃµÈ RFÀÇ À妽º ¹øÈ£
29        static bool CManualSearchWin_m_bReceiveSI; 
30//public:
31void CManualSearchWin_ClearChList();
32void CManualSearchWin_AddChList(int rf, int major, int minor, char* name);
33void CManualSearchWin_SearchChDB(int RF);
34
35//      CManualSearchWin(SWinEventMsg event):CWindow(event)
36        void CManualSearchWin_Constructor(CWindow *this, SWinEventMsg event)
37        {
38                this->SetWinName(this,  "ManualSearch");
39                CManualSearchWin_m_nRF = DST_EEPROM_GetRF();
40                CManualSearchWin_m_bReceiveSI = true;
41               
42                this->rect.w = DST_GetImageWidth(manualscan_back);
43                this->rect.h = DST_GetImageHeight(manualscan_back);
44                this->rect.x = (DST_GetScreenWidth() - this->rect.w) / 2;
45                this->rect.y = (DST_GetScreenHeight()- this->rect.h) / 2;
46               
47                this->RegisterAllKey(this);
48                this->RegisterKey(this, VK_PWR, false, 0, 0);
49                this->RegisterKey(this, VK_KEY_PWR, false, 0, 0);
50
51                CManualSearchWin_ClearChList();
52                CManualSearchWin_SearchChDB(CManualSearchWin_m_nRF);
53                DST_UI_ChannelTune(CManualSearchWin_m_nRF, 0); 
54        }
55
56        void CManualSearchWin_Destructor(CWindow *this)
57        {
58                DST_UI_ChannelTune(CManualSearchWin_m_nRF, 0); 
59                if(DST_GetWin(WIN_ERROR)) DST_CreateWin(WIN_CHANNEL_BANNER, WIN_NULL, BANNER_NORMAL ,0, 0, 0);
60        }
61       
62        void CManualSearchWin_ClearChList()
63        {               
64                memset(CManualSearchWin_ch, 0, sizeof(CManualSearchWin_ch));
65        }
66       
67        void CManualSearchWin_AddChList(int rf, int major, int minor, char* name)
68        {
69                int nPos = 4;
70                int i = 0;
71                for ( i = 0; i < 4; i++)
72                {
73                        if (strlen(CManualSearchWin_ch[i].num) != 0) continue;
74                        nPos = i;
75                        break;
76                }
77                if (nPos > 3) 
78                {
79                        nPos = 3;
80                        memcpy(&CManualSearchWin_ch[0], &CManualSearchWin_ch[1], sizeof(CHANNEL_DISPLAY)* 3);
81                }
82                if (minor == 0)
83                {
84                        sprintf(CManualSearchWin_ch[nPos].num, "%d(%d)", major, DST_GetFrequencyNumberbyIndex(rf));
85                }
86                else
87                {
88                        sprintf(CManualSearchWin_ch[nPos].num, "%d-%d(%d)", major, minor, DST_GetFrequencyNumberbyIndex(rf));
89                }
90                strcpy((char*)CManualSearchWin_ch[nPos].name, (char*)name);
91        }
92       
93        void CManualSearchWin_SearchChDB(int RF)
94        {
95                int i = 0;
96                DBLock(true);
97                for (i=0; i < DB_CHANNEL_DB_MAX; i++)
98                {
99                        if (db_channel_db[i].program_number == 0) continue;
100                        if (db_channel_db[i].rf  != RF) continue;
101                        CManualSearchWin_AddChList(RF, db_channel_db[i].major, db_channel_db[i].minor, db_channel_db[i].name);
102                }
103                DBLock(false);
104//              CDB db;
105//              NewCDB(&db);
106//              db.GetTable(&db, "select major, minor, name from channel_db where rf =%d order by major,minor", RF);
107//              if (db.GetRow(&db) < 1)
108//              {
109//                      DeleteCDB(&db);
110//                      return;
111//              }
112//              for ( i = 0; i < db.GetRow(&db); i++)
113//              {
114//                      CManualSearchWin_AddChList(RF,
115//                              dst_atoi(db.GetResult(&db, (i+1)*db.GetCol(&db)+0)),
116//                              dst_atoi(db.GetResult(&db, (i+1)*db.GetCol(&db)+1)),
117//                              db.GetResult(&db, (i+1)*db.GetCol(&db)+2));
118//              }
119//              DeleteCDB(&db);
120        }
121       
122//      virtual void OnTimer(char nID)
123        void CManualSearchWin_OnTimer(CWindow *this, char nID)
124        {
125                switch (nID)
126                {
127                        case 1:
128                                this->KillTimer(this, 1);
129                                CManualSearchWin_ClearChList();
130                                CManualSearchWin_SearchChDB(CManualSearchWin_m_nRF);
131                                this->Show(this);
132                                break;
133                        default:
134                                break;
135                }
136        }
137       
138//      virtual void OnMessage(SWinEventMsg event)
139        void CManualSearchWin_OnMessage(CWindow *this, SWinEventMsg event)
140        {
141                switch (event.cmd)
142                {
143                        case WM_POWER_OFF:
144                                this->Close(this);
145                                break;
146                               
147                        case WM_CT_MSG:
148                                switch (event.data32[0])
149                                {                                       
150
151                                        case CT_SCAN_PSIP_WAIT:
152                                                CManualSearchWin_m_bReceiveSI = true;
153                                                break;
154                                        case CT_RECEIVE_TVCT:
155#if CVCT_SUPPORT
156                                        case CT_RECEIVE_CVCT:
157#endif
158                                        case CT_RECEIVE_PMT:
159                                                CManualSearchWin_m_bReceiveSI = true;
160                                                this->SetTimer(this, 1, 100);
161                                                break;
162                                        case CT_SCAN_START:
163                                                DST_UI_ChannelTune(CManualSearchWin_m_nRF, 0); 
164                                                break;
165                                        default: break;
166                                }
167                                break;
168                }
169        }
170       
171//      virtual void Show(void)
172        void CManualSearchWin_Show(CWindow *this)
173        {
174                int i = 0;
175                // ¹è°æ
176                this->DrawImage(this, 0, 0, manualscan_back, false);
177                // ŸÀÌÆ²
178                this->setFontStyle(this, 20,0xC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
179                // Ç׸ñ À̸§  ä³Î¹øÈ£ RF ä³ÎÀ̸§
180                this->DrawTextUni(this,  26, 19,  126, 24, pz_Scan_ChannelNumber[OSD_Lang], &(this->font));
181                this->DrawTextUni(this, 180, 19, 208, 24, pz_chName[OSD_Lang], &(this->font));
182
183                // ¹öư ±×¸®±â
184                char rfNumberStr[10] = {0,};
185                sprintf(rfNumberStr,"%d",DST_GetFrequencyNumberbyIndex(CManualSearchWin_m_nRF));
186                this->setFontStyle(this, 19,0xC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
187                this->DrawTextUni(this, 404, 21, 130, 24, pz_Scan_NoRF[OSD_Lang], &(this->font));
188                this->DrawText(this, 404, 57, 130, 24, rfNumberStr, &(this->font));
189               
190//              this->DrawImage(this, 416, 182, Button_h,true);
191//              this->DrawTextUni(this, 416, 182, DST_GetImageWidth(Button_h), DST_GetImageHeight(Button_h), pz_Scan_ChannelSearch[OSD_Lang], &(this->font));
192                this->setFontStyle(this, 20,0xFFFFFF,ALIGN_MIDDLE,ALIGN_CENTER);
193
194                this->DrawImage(this, 416, 182, Button_h,true);
195                this->DrawTextUni(this, 416, 182,
196                        DST_GetImageWidth(Button_h), 
197                        DST_GetImageHeight(Button_h), 
198                        CManualSearchWin_m_bReceiveSI ? pz_Scan_ChannelSearch[OSD_Lang] : pz_Scan_Searching[OSD_Lang], 
199                        &(this->font));
200                this->setFontStyle(this, 20,0xC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER);
201                // Ç׸ñ Ç¥½Ã
202                for ( i=0; i < 4; i++)
203                {
204                        if (strlen(CManualSearchWin_ch[i].num) == 0) continue;
205                        DS_U32* strText32 = DST_UTF82Uni((DS_U8*)CManualSearchWin_ch[i].name); // È£ÃâÇÑ ÂÊ¿¡¼­ ¸Þ¸ð¸® ÇØÁ¦
206                        // ä³Î ¹øÈ£ , RF
207                        this->DrawText(this, 26, 28+(i+1)*35,   126, 24,  CManualSearchWin_ch[i].num, &(this->font));
208                        // ä³Î À̸§
209                        this->DrawText32(this, 180, 28+(i+1)*35, 208, 24, strText32, &(this->font));
210                }
211        }
212
213
214//      virtual void KeyInput(unsigned char key, bool /*bRepeat*/)
215        void CManualSearchWin_KeyInput(CWindow *this, unsigned char key, bool bRepeat)
216        {
217                int i = 0;
218                switch(key)
219                {
220                        case VK_UP:
221//                              CManualSearchWin_m_bReceiveSI = true;
222                                //CManualSearchWin_m_nRF+=10;
223                                //if (CManualSearchWin_m_nRF > DST_MaxRF()) CManualSearchWin_m_nRF = DST_MinRF();
224                                for (i=0; i < 10; i++) CManualSearchWin_m_nRF = DST_DB_GetNextUnexceptRF(CManualSearchWin_m_nRF);
225                               
226                                CManualSearchWin_ClearChList(); 
227                                CManualSearchWin_SearchChDB(CManualSearchWin_m_nRF);
228                                this->Show(this);
229                                DST_UI_ChannelTune(CManualSearchWin_m_nRF, 0);         
230                                break;
231                        case VK_DN:
232//                              CManualSearchWin_m_bReceiveSI = true;
233                                //CManualSearchWin_m_nRF-=10;
234                                //if(CManualSearchWin_m_nRF < DST_MinRF()) CManualSearchWin_m_nRF = DST_MaxRF();
235                                for (i=0; i < 10; i++) CManualSearchWin_m_nRF = DST_DB_GetPrevUnexceptRF(CManualSearchWin_m_nRF);
236                               
237                                CManualSearchWin_ClearChList(); 
238                                CManualSearchWin_SearchChDB(CManualSearchWin_m_nRF);
239                                this->Show(this);       
240                                DST_UI_ChannelTune(CManualSearchWin_m_nRF, 0); 
241                                break;
242                        case VK_RIGHT:
243                                //JST_Stop();
244//                              CManualSearchWin_m_bReceiveSI = true;
245                                //CManualSearchWin_m_nRF++;
246                                //if (CManualSearchWin_m_nRF > DST_MaxRF()) CManualSearchWin_m_nRF = DST_MinRF();
247                                CManualSearchWin_m_nRF = DST_DB_GetNextUnexceptRF(CManualSearchWin_m_nRF);
248                               
249                                CManualSearchWin_ClearChList(); 
250                                CManualSearchWin_SearchChDB(CManualSearchWin_m_nRF);
251                                this->Show(this);       
252                                DST_UI_ChannelTune(CManualSearchWin_m_nRF, 0); 
253                                break;
254                        case VK_LEFT:
255                                //JST_Stop();
256//                              CManualSearchWin_m_bReceiveSI = true;
257                                //CManualSearchWin_m_nRF--;
258                                //if(CManualSearchWin_m_nRF < DST_MinRF()) CManualSearchWin_m_nRF = DST_MaxRF();
259                                CManualSearchWin_m_nRF = DST_DB_GetPrevUnexceptRF(CManualSearchWin_m_nRF);
260                               
261                                CManualSearchWin_ClearChList(); 
262                                CManualSearchWin_SearchChDB(CManualSearchWin_m_nRF);
263                                this->Show(this);       
264                                DST_UI_ChannelTune(CManualSearchWin_m_nRF, 0); 
265                                break;
266                case VK_OK:
267                       
268                                JST_Stop();
269                                JST_DB_Del(CManualSearchWin_m_nRF);
270                                CManualSearchWin_ClearChList();
271                                if(CManualSearchWin_m_bReceiveSI == false)
272                                {
273                                        CManualSearchWin_m_bReceiveSI = true;
274                                }
275                                else
276                                {
277                                       
278                                        CManualSearchWin_m_bReceiveSI = false;
279                                        JST_Scan(CManualSearchWin_m_nRF);       
280                                }
281
282                                this->Show(this);       
283                                //DST_UI_ChannelTune(m_nRF, 0);
284                                // DST_UI_ChannelTuneÀ» »ç¿ëÇÏ¸é µ¿ÀÏ Ã¤³Î¿¡¼­ µÎ ¹ø ½ÃµµÇÒ ¶§ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù.
285                                // ¿ì¼± ½ºÄµÀ» È£ÃâÇÏ°í ½ºÄµ ½ÃÀÛÇÏÁö¸¶ÀÚ Äݹ鿡¼­ Æ©´×À» ÇÑ´Ù.
286                                break;
287                        case VK_CANCEL:
288                        case VK_MENU:
289                                this->Close(this);
290                                if(DST_GetWin(WIN_ERROR)) DST_CreateWin(WIN_CHANNEL_BANNER, WIN_NULL, BANNER_NORMAL ,0, 0, 0);
291                                break;
292                }
293        }
294//};
295
296void DST_CreateManualSearchWin(SWinEventMsg event)
297{
298        CWindow*pWin = NewCWindow(event);
299        pWin->Destructor        = CManualSearchWin_Destructor;
300        pWin->KeyInput          = CManualSearchWin_KeyInput;
301        pWin->OnTimer           = CManualSearchWin_OnTimer;
302        pWin->OnMessage         = CManualSearchWin_OnMessage;
303        pWin->Show                      = CManualSearchWin_Show;
304        // »ý¼ºÀÚ È£Ãâ
305        CManualSearchWin_Constructor(pWin, event);
306        // À©µµ¿ì ¸Þ´ÏÀú¿¡ µî·Ï
307        DST_AddWin((WinID)(event.data[0]), pWin);
308}
309
Note: See TracBrowser for help on using the repository browser.