| 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 | |
|---|
| 14 | #define AS_RF_W 77 |
|---|
| 15 | #define AS_CH_NO_W 111 |
|---|
| 16 | #define AS_CH_NAME_W 364 |
|---|
| 17 | |
|---|
| 18 | #define PROGRESS_BAR_X 33 |
|---|
| 19 | #define PROGRESS_BAR_Y 266 |
|---|
| 20 | #define PROGRESS_BAR_W 333 |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | class CManualSearchWin : public CWindow |
|---|
| 24 | { |
|---|
| 25 | private: |
|---|
| 26 | CHANNEL_DISPLAY ch[4]; |
|---|
| 27 | int m_nRF; // ȸ鿡 Ç¥½ÃµÈ RFÀÇ À妽º ¹øÈ£ |
|---|
| 28 | bool m_bReceiveSI; |
|---|
| 29 | public: |
|---|
| 30 | CManualSearchWin(SWinEventMsg event):CWindow(event) |
|---|
| 31 | { |
|---|
| 32 | m_nRF = DST_EEPROM_GetRF(); |
|---|
| 33 | m_bReceiveSI = true; |
|---|
| 34 | |
|---|
| 35 | rect.w = DST_GetImageWidth(newcon2_gui_autoscan_back); |
|---|
| 36 | rect.h = DST_GetImageHeight(newcon2_gui_autoscan_back); |
|---|
| 37 | rect.x = (DST_GetScreenWidth() - rect.w) / 2; |
|---|
| 38 | rect.y = (DST_GetScreenHeight()- rect.h) / 2; |
|---|
| 39 | |
|---|
| 40 | RegisterAllKey(); |
|---|
| 41 | RegisterKey(VK_PWR, false); |
|---|
| 42 | DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 43 | } |
|---|
| 44 | |
|---|
| 45 | virtual ~CManualSearchWin() |
|---|
| 46 | { |
|---|
| 47 | DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 48 | } |
|---|
| 49 | |
|---|
| 50 | void ClearChList() |
|---|
| 51 | { |
|---|
| 52 | memset(ch, 0, sizeof(ch)); |
|---|
| 53 | } |
|---|
| 54 | |
|---|
| 55 | void AddChList(int rf, int major, int minor, char* name) |
|---|
| 56 | { |
|---|
| 57 | int nPos = 4; |
|---|
| 58 | for (int i = 0; i < 4; i++) |
|---|
| 59 | { |
|---|
| 60 | if (strlen(ch[i].num) != 0) continue; |
|---|
| 61 | nPos = i; |
|---|
| 62 | break; |
|---|
| 63 | } |
|---|
| 64 | if (nPos > 3) |
|---|
| 65 | { |
|---|
| 66 | nPos = 3; |
|---|
| 67 | memcpy(&ch[0], &ch[1], sizeof(CHANNEL_DISPLAY)* 3); |
|---|
| 68 | } |
|---|
| 69 | if (minor == 0) |
|---|
| 70 | { |
|---|
| 71 | sprintf(ch[nPos].num, "%d(%d)", major, DST_GetFrequencyNumberbyIndex(rf)); |
|---|
| 72 | } |
|---|
| 73 | else |
|---|
| 74 | { |
|---|
| 75 | sprintf(ch[nPos].num, "%d-%d(%d)", major, minor, DST_GetFrequencyNumberbyIndex(rf)); |
|---|
| 76 | } |
|---|
| 77 | strcpy((char*)ch[nPos].name, (char*)name); |
|---|
| 78 | } |
|---|
| 79 | |
|---|
| 80 | void AddChList(int RF) |
|---|
| 81 | { |
|---|
| 82 | CDB db; |
|---|
| 83 | db.GetTable("select major, minor, name from channel_db where rf =%d order by major,minor", RF); |
|---|
| 84 | if (db.GetRow() < 1) return; |
|---|
| 85 | for (int i = 0; i < db.GetRow(); i++) |
|---|
| 86 | { |
|---|
| 87 | AddChList(RF, |
|---|
| 88 | atoi(db.GetResult((i+1)*db.GetCol()+0)), |
|---|
| 89 | atoi(db.GetResult((i+1)*db.GetCol()+1)), |
|---|
| 90 | db.GetResult((i+1)*db.GetCol()+2)); |
|---|
| 91 | } |
|---|
| 92 | } |
|---|
| 93 | |
|---|
| 94 | virtual void OnTimer(char nID) |
|---|
| 95 | { |
|---|
| 96 | switch (nID) |
|---|
| 97 | { |
|---|
| 98 | case 1: |
|---|
| 99 | KillTimer(1); |
|---|
| 100 | ClearChList(); |
|---|
| 101 | AddChList(m_nRF); |
|---|
| 102 | Show(); |
|---|
| 103 | break; |
|---|
| 104 | default: |
|---|
| 105 | break; |
|---|
| 106 | } |
|---|
| 107 | } |
|---|
| 108 | |
|---|
| 109 | virtual void OnMessage(SWinEventMsg event) |
|---|
| 110 | { |
|---|
| 111 | switch (event.cmd) |
|---|
| 112 | { |
|---|
| 113 | case WM_POWER_OFF: |
|---|
| 114 | Close(); |
|---|
| 115 | break; |
|---|
| 116 | |
|---|
| 117 | case WM_CT_MSG: |
|---|
| 118 | switch (event.data32[0]) |
|---|
| 119 | { |
|---|
| 120 | case CT_RECEIVE_TVCT: |
|---|
| 121 | case CT_RECEIVE_CVCT: |
|---|
| 122 | case CT_RECEIVE_PMT: |
|---|
| 123 | m_bReceiveSI = true; |
|---|
| 124 | SetTimer(1,100); |
|---|
| 125 | T(); |
|---|
| 126 | break; |
|---|
| 127 | case CT_SCAN_START: |
|---|
| 128 | T(); |
|---|
| 129 | DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 130 | break; |
|---|
| 131 | } |
|---|
| 132 | break; |
|---|
| 133 | } |
|---|
| 134 | } |
|---|
| 135 | |
|---|
| 136 | virtual void Show(void) |
|---|
| 137 | { |
|---|
| 138 | // ¹è°æ |
|---|
| 139 | DrawImage(0, 0, newcon2_gui_manulscan_back); |
|---|
| 140 | // ŸÀÌÆ² |
|---|
| 141 | setFontStyle(20,0xC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER); |
|---|
| 142 | // Ç׸ñ À̸§ ä³Î¹øÈ£ RF ä³ÎÀ̸§ |
|---|
| 143 | #if DESIGN_TYPE == 1 |
|---|
| 144 | DrawTextUni( 27, 10, 118, 29, pz_Scan_ChannelNumber[OSD_Lang], &font); |
|---|
| 145 | DrawTextUni(174, 10, 176, 29, pz_chName[OSD_Lang], &font); |
|---|
| 146 | #else |
|---|
| 147 | DrawTextUni( 15, 10, 160, 29, pz_Scan_ChannelNumber[OSD_Lang], &font); |
|---|
| 148 | DrawTextUni(187, 10, 160, 29, pz_chName[OSD_Lang], &font); |
|---|
| 149 | #endif |
|---|
| 150 | |
|---|
| 151 | // ¹öư ±×¸®±â |
|---|
| 152 | char rfNumberStr[10] = {0,}; |
|---|
| 153 | sprintf(rfNumberStr,"%d",DST_GetFrequencyNumberbyIndex(m_nRF)); |
|---|
| 154 | setFontStyle(19,0xC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER); |
|---|
| 155 | DrawTextUni(367, 18, 137, 35, pz_Scan_NoRF[OSD_Lang], &font); |
|---|
| 156 | DrawText(400, 57, 69, 35, rfNumberStr, &font); |
|---|
| 157 | |
|---|
| 158 | DrawImage(384, 122, newcon2_gui_depth3_button_small_selected,true); |
|---|
| 159 | DrawTextUni(384, 122, DST_GetImageWidth(newcon2_gui_depth3_button_small_selected), DST_GetImageHeight(newcon2_gui_depth3_button_small_selected), pz_Scan_ChannelSearch[OSD_Lang], &font); |
|---|
| 160 | #if DESIGN_TYPE == 1 |
|---|
| 161 | #else |
|---|
| 162 | setFontStyle(19,0x000000,ALIGN_MIDDLE,ALIGN_CENTER); |
|---|
| 163 | #endif |
|---|
| 164 | |
|---|
| 165 | DrawImage(384, 122, newcon2_gui_depth3_button_small_cursor,true); |
|---|
| 166 | DrawTextUni(384, 122, |
|---|
| 167 | DST_GetImageWidth(newcon2_gui_depth3_button_small_selected), |
|---|
| 168 | DST_GetImageHeight(newcon2_gui_depth3_button_small_selected), |
|---|
| 169 | m_bReceiveSI ? pz_Scan_ChannelSearch[OSD_Lang] : pz_Scan_Searching[OSD_Lang], |
|---|
| 170 | &font); |
|---|
| 171 | setFontStyle(20,0xC8C8C8,ALIGN_MIDDLE,ALIGN_CENTER); |
|---|
| 172 | // Ç׸ñ Ç¥½Ã |
|---|
| 173 | for (int i=0; i < 4; i++) |
|---|
| 174 | { |
|---|
| 175 | if (strlen(ch[i].num) == 0) continue; |
|---|
| 176 | DS_U32* strText32 = DST_UTF82Uni((DS_U8*)ch[i].name); // È£ÃâÇÑ ÂÊ¿¡¼ ¸Þ¸ð¸® ÇØÁ¦ |
|---|
| 177 | // ä³Î ¹øÈ£ , RF |
|---|
| 178 | #if DESIGN_TYPE == 1 |
|---|
| 179 | DrawText( 27, 10+(i+1)*36, 118, 29, ch[i].num, &font); |
|---|
| 180 | // ä³Î À̸§ |
|---|
| 181 | DrawText32(174, 10+(i+1)*36, 174, 29, strText32, &font); |
|---|
| 182 | #else |
|---|
| 183 | DrawText( 15, 10+(i+1)*36, 160, 29, ch[i].num, &font); |
|---|
| 184 | // ä³Î À̸§ |
|---|
| 185 | DrawText32(187, 10+(i+1)*36, 160, 29, strText32, &font); |
|---|
| 186 | #endif |
|---|
| 187 | } |
|---|
| 188 | } |
|---|
| 189 | |
|---|
| 190 | |
|---|
| 191 | virtual void KeyInput(unsigned char key, bool /*bRepeat*/) |
|---|
| 192 | { |
|---|
| 193 | switch(key) |
|---|
| 194 | { |
|---|
| 195 | case VK_UP: |
|---|
| 196 | m_bReceiveSI = true; |
|---|
| 197 | m_nRF+=10; |
|---|
| 198 | if (m_nRF > DST_MaxRF()) m_nRF = DST_MinRF(); |
|---|
| 199 | ClearChList(); |
|---|
| 200 | AddChList(m_nRF); |
|---|
| 201 | Show(); |
|---|
| 202 | DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 203 | break; |
|---|
| 204 | case VK_DN: |
|---|
| 205 | m_bReceiveSI = true; |
|---|
| 206 | m_nRF-=10; |
|---|
| 207 | if(m_nRF < DST_MinRF()) m_nRF = DST_MaxRF(); |
|---|
| 208 | ClearChList(); |
|---|
| 209 | AddChList(m_nRF); |
|---|
| 210 | Show(); |
|---|
| 211 | DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 212 | break; |
|---|
| 213 | case VK_RIGHT: |
|---|
| 214 | //JST_Stop(); |
|---|
| 215 | m_bReceiveSI = true; |
|---|
| 216 | m_nRF++; |
|---|
| 217 | if (m_nRF > DST_MaxRF()) m_nRF = DST_MinRF(); |
|---|
| 218 | ClearChList(); |
|---|
| 219 | AddChList(m_nRF); |
|---|
| 220 | Show(); |
|---|
| 221 | DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 222 | break; |
|---|
| 223 | case VK_LEFT: |
|---|
| 224 | //JST_Stop(); |
|---|
| 225 | m_bReceiveSI = true; |
|---|
| 226 | m_nRF--; |
|---|
| 227 | if(m_nRF < DST_MinRF()) m_nRF = DST_MaxRF(); |
|---|
| 228 | ClearChList(); |
|---|
| 229 | AddChList(m_nRF); |
|---|
| 230 | Show(); |
|---|
| 231 | DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 232 | break; |
|---|
| 233 | case VK_OK: |
|---|
| 234 | JST_Stop(); |
|---|
| 235 | m_bReceiveSI = false; |
|---|
| 236 | JST_DB_Del(m_nRF); |
|---|
| 237 | ClearChList(); |
|---|
| 238 | Show(); |
|---|
| 239 | //DST_UI_ChannelTune(m_nRF, 0); |
|---|
| 240 | // DST_UI_ChannelTuneÀ» »ç¿ëÇÏ¸é µ¿ÀÏ Ã¤³Î¿¡¼ µÎ ¹ø ½ÃµµÇÒ ¶§ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. |
|---|
| 241 | // ¿ì¼± ½ºÄµÀ» È£ÃâÇÏ°í ½ºÄµ ½ÃÀÛÇÏÁö¸¶ÀÚ Äݹ鿡¼ Æ©´×À» ÇÑ´Ù. |
|---|
| 242 | JST_Scan(m_nRF); |
|---|
| 243 | break; |
|---|
| 244 | case VK_CANCEL: |
|---|
| 245 | case VK_MENU: |
|---|
| 246 | Close(); |
|---|
| 247 | break; |
|---|
| 248 | } |
|---|
| 249 | } |
|---|
| 250 | }; |
|---|
| 251 | |
|---|
| 252 | void DST_CreateManualSearchWin(SWinEventMsg event) |
|---|
| 253 | { |
|---|
| 254 | DST_AddWin((WinID)(event.data[0]), new CManualSearchWin(event)); |
|---|
| 255 | } |
|---|
| 256 | |
|---|