00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "stdafx.h"
00026 #include "mplayerc.h"
00027 #include "PPageAccelTbl.h"
00028
00029
00030
00031 IMPLEMENT_DYNAMIC(CPPageAccelTbl, CPPageBase)
00032 CPPageAccelTbl::CPPageAccelTbl()
00033 : CPPageBase(CPPageAccelTbl::IDD, CPPageAccelTbl::IDD)
00034 , m_list(0)
00035 , m_counter(0)
00036 , m_fWinLirc(FALSE)
00037 , m_WinLircLink(_T("http:
00038 , m_fUIce(FALSE)
00039 , m_UIceLink(_T("http:
00040 {
00041 }
00042
00043 CPPageAccelTbl::~CPPageAccelTbl()
00044 {
00045 }
00046
00047 BOOL CPPageAccelTbl::PreTranslateMessage(MSG* pMsg)
00048 {
00049 if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN
00050 && (pMsg->hwnd == m_WinLircEdit.m_hWnd || pMsg->hwnd == m_UIceEdit.m_hWnd))
00051 {
00052 OnApply();
00053 return TRUE;
00054 }
00055
00056 return __super::PreTranslateMessage(pMsg);
00057 }
00058
00059
00060 void CPPageAccelTbl::SetupList()
00061 {
00062 for(int row = 0; row < m_list.GetItemCount(); row++)
00063 {
00064 wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(row));
00065
00066 CString mod = MakeAccelModLabel(wc.fVirt);
00067 m_list.SetItemText(row, COL_MOD, mod);
00068
00069 CString key = MakeAccelVkeyLabel(wc.key, wc.fVirt&FVIRTKEY);
00070 m_list.SetItemText(row, COL_KEY, key);
00071
00072 CString type = (wc.fVirt&FVIRTKEY)?_T("VIRTKEY"):_T("ASCII");
00073 m_list.SetItemText(row, COL_TYPE, type);
00074
00075 CString id;
00076 id.Format(_T("%d"), wc.cmd);
00077 m_list.SetItemText(row, COL_ID, id);
00078
00079 m_list.SetItemText(row, COL_MOUSE, MakeMouseButtonLabel(wc.mouse));
00080
00081 m_list.SetItemText(row, COL_APPCMD, MakeAppCommandLabel(wc.appcmd));
00082
00083 m_list.SetItemText(row, COL_RMCMD, CString(wc.rmcmd));
00084
00085 CString repcnt;
00086 repcnt.Format(_T("%d"), wc.rmrepcnt);
00087 m_list.SetItemText(row, COL_RMREPCNT, repcnt);
00088 }
00089 }
00090
00091 CString CPPageAccelTbl::MakeAccelModLabel(BYTE fVirt)
00092 {
00093 CString str;
00094 if(fVirt&FCONTROL) {if(!str.IsEmpty()) str += _T(" + "); str += _T("Ctrl");}
00095 if(fVirt&FALT) {if(!str.IsEmpty()) str += _T(" + "); str += _T("Alt");}
00096 if(fVirt&FSHIFT) {if(!str.IsEmpty()) str += _T(" + "); str += _T("Shift");}
00097 if(str.IsEmpty()) str = _T("None");
00098 return(str);
00099 }
00100
00101 CString CPPageAccelTbl::MakeAccelVkeyLabel(WORD key, bool fVirtKey)
00102 {
00103 CString str;
00104
00105 if(fVirtKey)
00106 switch(key)
00107 {
00108 case VK_LBUTTON: str = _T("VK_LBUTTON"); break;
00109 case VK_RBUTTON: str = _T("VK_RBUTTON"); break;
00110 case VK_CANCEL: str = _T("VK_CANCEL"); break;
00111 case VK_MBUTTON: str = _T("VK_MBUTTON"); break;
00112 case VK_XBUTTON1: str = _T("VK_XBUTTON1"); break;
00113 case VK_XBUTTON2: str = _T("VK_XBUTTON2"); break;
00114 case VK_BACK: str = _T("VK_BACK"); break;
00115 case VK_TAB: str = _T("VK_TAB"); break;
00116 case VK_CLEAR: str = _T("VK_CLEAR"); break;
00117 case VK_RETURN: str = _T("VK_RETURN"); break;
00118 case VK_SHIFT: str = _T("VK_SHIFT"); break;
00119 case VK_CONTROL: str = _T("VK_CONTROL"); break;
00120 case VK_MENU: str = _T("VK_MENU"); break;
00121 case VK_PAUSE: str = _T("VK_PAUSE"); break;
00122 case VK_CAPITAL: str = _T("VK_CAPITAL"); break;
00123
00124
00125 case VK_HANGUL: str = _T("VK_HANGUL"); break;
00126 case VK_JUNJA: str = _T("VK_JUNJA"); break;
00127 case VK_FINAL: str = _T("VK_FINAL"); break;
00128
00129 case VK_KANJI: str = _T("VK_KANJI"); break;
00130 case VK_ESCAPE: str = _T("VK_ESCAPE"); break;
00131 case VK_CONVERT: str = _T("VK_CONVERT"); break;
00132 case VK_NONCONVERT: str = _T("VK_NONCONVERT"); break;
00133 case VK_ACCEPT: str = _T("VK_ACCEPT"); break;
00134 case VK_MODECHANGE: str = _T("VK_MODECHANGE"); break;
00135 case VK_SPACE: str = _T("VK_SPACE"); break;
00136 case VK_PRIOR: str = _T("VK_PRIOR"); break;
00137 case VK_NEXT: str = _T("VK_NEXT"); break;
00138 case VK_END: str = _T("VK_END"); break;
00139 case VK_HOME: str = _T("VK_HOME"); break;
00140 case VK_LEFT: str = _T("VK_LEFT"); break;
00141 case VK_UP: str = _T("VK_UP"); break;
00142 case VK_RIGHT: str = _T("VK_RIGHT"); break;
00143 case VK_DOWN: str = _T("VK_DOWN"); break;
00144 case VK_SELECT: str = _T("VK_SELECT"); break;
00145 case VK_PRINT: str = _T("VK_PRINT"); break;
00146 case VK_EXECUTE: str = _T("VK_EXECUTE"); break;
00147 case VK_SNAPSHOT: str = _T("VK_SNAPSHOT"); break;
00148 case VK_INSERT: str = _T("VK_INSERT"); break;
00149 case VK_DELETE: str = _T("VK_DELETE"); break;
00150 case VK_HELP: str = _T("VK_HELP"); break;
00151 case VK_LWIN: str = _T("VK_LWIN"); break;
00152 case VK_RWIN: str = _T("VK_RWIN"); break;
00153 case VK_APPS: str = _T("VK_APPS"); break;
00154 case VK_SLEEP: str = _T("VK_SLEEP"); break;
00155 case VK_NUMPAD0: str = _T("VK_NUMPAD0"); break;
00156 case VK_NUMPAD1: str = _T("VK_NUMPAD1"); break;
00157 case VK_NUMPAD2: str = _T("VK_NUMPAD2"); break;
00158 case VK_NUMPAD3: str = _T("VK_NUMPAD3"); break;
00159 case VK_NUMPAD4: str = _T("VK_NUMPAD4"); break;
00160 case VK_NUMPAD5: str = _T("VK_NUMPAD5"); break;
00161 case VK_NUMPAD6: str = _T("VK_NUMPAD6"); break;
00162 case VK_NUMPAD7: str = _T("VK_NUMPAD7"); break;
00163 case VK_NUMPAD8: str = _T("VK_NUMPAD8"); break;
00164 case VK_NUMPAD9: str = _T("VK_NUMPAD9"); break;
00165 case VK_MULTIPLY: str = _T("VK_MULTIPLY"); break;
00166 case VK_ADD: str = _T("VK_ADD"); break;
00167 case VK_SEPARATOR: str = _T("VK_SEPARATOR"); break;
00168 case VK_SUBTRACT: str = _T("VK_SUBTRACT"); break;
00169 case VK_DECIMAL: str = _T("VK_DECIMAL"); break;
00170 case VK_DIVIDE: str = _T("VK_DIVIDE"); break;
00171 case VK_F1: str = _T("VK_F1"); break;
00172 case VK_F2: str = _T("VK_F2"); break;
00173 case VK_F3: str = _T("VK_F3"); break;
00174 case VK_F4: str = _T("VK_F4"); break;
00175 case VK_F5: str = _T("VK_F5"); break;
00176 case VK_F6: str = _T("VK_F6"); break;
00177 case VK_F7: str = _T("VK_F7"); break;
00178 case VK_F8: str = _T("VK_F8"); break;
00179 case VK_F9: str = _T("VK_F9"); break;
00180 case VK_F10: str = _T("VK_F10"); break;
00181 case VK_F11: str = _T("VK_F11"); break;
00182 case VK_F12: str = _T("VK_F12"); break;
00183 case VK_F13: str = _T("VK_F13"); break;
00184 case VK_F14: str = _T("VK_F14"); break;
00185 case VK_F15: str = _T("VK_F15"); break;
00186 case VK_F16: str = _T("VK_F16"); break;
00187 case VK_F17: str = _T("VK_F17"); break;
00188 case VK_F18: str = _T("VK_F18"); break;
00189 case VK_F19: str = _T("VK_F19"); break;
00190 case VK_F20: str = _T("VK_F20"); break;
00191 case VK_F21: str = _T("VK_F21"); break;
00192 case VK_F22: str = _T("VK_F22"); break;
00193 case VK_F23: str = _T("VK_F23"); break;
00194 case VK_F24: str = _T("VK_F24"); break;
00195 case VK_NUMLOCK: str = _T("VK_NUMLOCK"); break;
00196 case VK_SCROLL: str = _T("VK_SCROLL"); break;
00197
00198 case VK_OEM_FJ_JISHO: str = _T("VK_OEM_FJ_JISHO"); break;
00199 case VK_OEM_FJ_MASSHOU: str = _T("VK_OEM_FJ_MASSHOU"); break;
00200 case VK_OEM_FJ_TOUROKU: str = _T("VK_OEM_FJ_TOUROKU"); break;
00201 case VK_OEM_FJ_LOYA: str = _T("VK_OEM_FJ_LOYA"); break;
00202 case VK_OEM_FJ_ROYA: str = _T("VK_OEM_FJ_ROYA"); break;
00203 case VK_LSHIFT: str = _T("VK_LSHIFT"); break;
00204 case VK_RSHIFT: str = _T("VK_RSHIFT"); break;
00205 case VK_LCONTROL: str = _T("VK_LCONTROL"); break;
00206 case VK_RCONTROL: str = _T("VK_RCONTROL"); break;
00207 case VK_LMENU: str = _T("VK_LMENU"); break;
00208 case VK_RMENU: str = _T("VK_RMENU"); break;
00209 case VK_BROWSER_BACK: str = _T("VK_BROWSER_BACK"); break;
00210 case VK_BROWSER_FORWARD: str = _T("VK_BROWSER_FORWARD"); break;
00211 case VK_BROWSER_REFRESH: str = _T("VK_BROWSER_REFRESH"); break;
00212 case VK_BROWSER_STOP: str = _T("VK_BROWSER_STOP"); break;
00213 case VK_BROWSER_SEARCH: str = _T("VK_BROWSER_SEARCH"); break;
00214 case VK_BROWSER_FAVORITES: str = _T("VK_BROWSER_FAVORITES"); break;
00215 case VK_BROWSER_HOME: str = _T("VK_BROWSER_HOME"); break;
00216 case VK_VOLUME_MUTE: str = _T("VK_VOLUME_MUTE"); break;
00217 case VK_VOLUME_DOWN: str = _T("VK_VOLUME_DOWN"); break;
00218 case VK_VOLUME_UP: str = _T("VK_VOLUME_UP"); break;
00219 case VK_MEDIA_NEXT_TRACK: str = _T("VK_MEDIA_NEXT_TRACK"); break;
00220 case VK_MEDIA_PREV_TRACK: str = _T("VK_MEDIA_PREV_TRACK"); break;
00221 case VK_MEDIA_STOP: str = _T("VK_MEDIA_STOP"); break;
00222 case VK_MEDIA_PLAY_PAUSE: str = _T("VK_MEDIA_PLAY_PAUSE"); break;
00223 case VK_LAUNCH_MAIL: str = _T("VK_LAUNCH_MAIL"); break;
00224 case VK_LAUNCH_MEDIA_SELECT: str = _T("VK_LAUNCH_MEDIA_SELECT"); break;
00225 case VK_LAUNCH_APP1: str = _T("VK_LAUNCH_APP1"); break;
00226 case VK_LAUNCH_APP2: str = _T("VK_LAUNCH_APP2"); break;
00227 case VK_OEM_1: str = _T("VK_OEM_1"); break;
00228 case VK_OEM_PLUS: str = _T("VK_OEM_PLUS"); break;
00229 case VK_OEM_COMMA: str = _T("VK_OEM_COMMA"); break;
00230 case VK_OEM_MINUS: str = _T("VK_OEM_MINUS"); break;
00231 case VK_OEM_PERIOD: str = _T("VK_OEM_PERIOD"); break;
00232 case VK_OEM_2: str = _T("VK_OEM_2"); break;
00233 case VK_OEM_3: str = _T("VK_OEM_3"); break;
00234 case VK_OEM_4: str = _T("VK_OEM_4"); break;
00235 case VK_OEM_5: str = _T("VK_OEM_5"); break;
00236 case VK_OEM_6: str = _T("VK_OEM_6"); break;
00237 case VK_OEM_7: str = _T("VK_OEM_7"); break;
00238 case VK_OEM_8: str = _T("VK_OEM_8"); break;
00239 case VK_OEM_AX: str = _T("VK_OEM_AX"); break;
00240 case VK_OEM_102: str = _T("VK_OEM_102"); break;
00241 case VK_ICO_HELP: str = _T("VK_ICO_HELP"); break;
00242 case VK_ICO_00: str = _T("VK_ICO_00"); break;
00243 case VK_PROCESSKEY: str = _T("VK_PROCESSKEY"); break;
00244 case VK_ICO_CLEAR: str = _T("VK_ICO_CLEAR"); break;
00245 case VK_PACKET: str = _T("VK_PACKET"); break;
00246 case VK_OEM_RESET: str = _T("VK_OEM_RESET"); break;
00247 case VK_OEM_JUMP: str = _T("VK_OEM_JUMP"); break;
00248 case VK_OEM_PA1: str = _T("VK_OEM_PA1"); break;
00249 case VK_OEM_PA2: str = _T("VK_OEM_PA2"); break;
00250 case VK_OEM_PA3: str = _T("VK_OEM_PA3"); break;
00251 case VK_OEM_WSCTRL: str = _T("VK_OEM_WSCTRL"); break;
00252 case VK_OEM_CUSEL: str = _T("VK_OEM_CUSEL"); break;
00253 case VK_OEM_ATTN: str = _T("VK_OEM_ATTN"); break;
00254 case VK_OEM_FINISH: str = _T("VK_OEM_FINISH"); break;
00255 case VK_OEM_COPY: str = _T("VK_OEM_COPY"); break;
00256 case VK_OEM_AUTO: str = _T("VK_OEM_AUTO"); break;
00257 case VK_OEM_ENLW: str = _T("VK_OEM_ENLW"); break;
00258 case VK_OEM_BACKTAB: str = _T("VK_OEM_BACKTAB"); break;
00259 case VK_ATTN: str = _T("VK_ATTN"); break;
00260 case VK_CRSEL: str = _T("VK_CRSEL"); break;
00261 case VK_EXSEL: str = _T("VK_EXSEL"); break;
00262 case VK_EREOF: str = _T("VK_EREOF"); break;
00263 case VK_PLAY: str = _T("VK_PLAY"); break;
00264 case VK_ZOOM: str = _T("VK_ZOOM"); break;
00265 case VK_NONAME: str = _T("VK_NONAME"); break;
00266 case VK_PA1: str = _T("VK_PA1"); break;
00267 case VK_OEM_CLEAR: str = _T("VK_OEM_CLEAR"); break;
00268 default:
00269 if('0' <= key && key <= '9' || 'A' <= key && key <= 'Z')
00270 str.Format(_T("%c"), (TCHAR)key);
00271 break;
00272 }
00273
00274 if(str.IsEmpty() || !fVirtKey)
00275 {
00276 str.Format(_T("%c, 0x%02x"), (TCHAR)key, key);
00277 return(str);
00278 }
00279
00280 return(str);
00281 }
00282
00283 CString CPPageAccelTbl::MakeAccelShortcutLabel(UINT id)
00284 {
00285 CList<wmcmd>& wmcmds = AfxGetAppSettings().wmcmds;
00286 POSITION pos = wmcmds.GetHeadPosition();
00287 while(pos)
00288 {
00289 ACCEL& a = wmcmds.GetNext(pos);
00290 if(a.cmd == id)
00291 return(MakeAccelShortcutLabel(a));
00292 }
00293
00294 return(_T(""));
00295 }
00296
00297 CString CPPageAccelTbl::MakeAccelShortcutLabel(ACCEL& a)
00298 {
00299 CString str;
00300
00301 if(a.fVirt&1)
00302 switch(a.key)
00303 {
00304 case VK_LBUTTON: str = _T("LBtn"); break;
00305 case VK_RBUTTON: str = _T("RBtn"); break;
00306 case VK_CANCEL: str = _T("Cancel"); break;
00307 case VK_MBUTTON: str = _T("MBtn"); break;
00308 case VK_XBUTTON1: str = _T("X1Btn"); break;
00309 case VK_XBUTTON2: str = _T("X2Btn"); break;
00310 case VK_BACK: str = _T("Back"); break;
00311 case VK_TAB: str = _T("Tab"); break;
00312 case VK_CLEAR: str = _T("Clear"); break;
00313 case VK_RETURN: str = _T("Return"); break;
00314 case VK_SHIFT: str = _T("Shift"); break;
00315 case VK_CONTROL: str = _T("Ctrl"); break;
00316 case VK_MENU: str = _T("Alt"); break;
00317 case VK_PAUSE: str = _T("Pause"); break;
00318 case VK_CAPITAL: str = _T("Capital"); break;
00319
00320
00321 case VK_HANGUL: str = _T("Hangul"); break;
00322 case VK_JUNJA: str = _T("Junja"); break;
00323 case VK_FINAL: str = _T("Final"); break;
00324
00325 case VK_KANJI: str = _T("Kanji"); break;
00326 case VK_ESCAPE: str = _T("Escape"); break;
00327 case VK_CONVERT: str = _T("Convert"); break;
00328 case VK_NONCONVERT: str = _T("Non Convert"); break;
00329 case VK_ACCEPT: str = _T("Accept"); break;
00330 case VK_MODECHANGE: str = _T("Mode Change"); break;
00331 case VK_SPACE: str = _T("Space"); break;
00332 case VK_PRIOR: str = _T("PgUp"); break;
00333 case VK_NEXT: str = _T("PgDn"); break;
00334 case VK_END: str = _T("End"); break;
00335 case VK_HOME: str = _T("Home"); break;
00336 case VK_LEFT: str = _T("Left"); break;
00337 case VK_UP: str = _T("Up"); break;
00338 case VK_RIGHT: str = _T("Right"); break;
00339 case VK_DOWN: str = _T("Down"); break;
00340 case VK_SELECT: str = _T("Select"); break;
00341 case VK_PRINT: str = _T("Print"); break;
00342 case VK_EXECUTE: str = _T("Execute"); break;
00343 case VK_SNAPSHOT: str = _T("Snapshot"); break;
00344 case VK_INSERT: str = _T("Insert"); break;
00345 case VK_DELETE: str = _T("Delete"); break;
00346 case VK_HELP: str = _T("Help"); break;
00347 case VK_LWIN: str = _T("LWin"); break;
00348 case VK_RWIN: str = _T("RWin"); break;
00349 case VK_APPS: str = _T("Apps"); break;
00350 case VK_SLEEP: str = _T("Sleep"); break;
00351 case VK_NUMPAD0: str = _T("Numpad 0"); break;
00352 case VK_NUMPAD1: str = _T("Numpad 1"); break;
00353 case VK_NUMPAD2: str = _T("Numpad 2"); break;
00354 case VK_NUMPAD3: str = _T("Numpad 3"); break;
00355 case VK_NUMPAD4: str = _T("Numpad 4"); break;
00356 case VK_NUMPAD5: str = _T("Numpad 5"); break;
00357 case VK_NUMPAD6: str = _T("Numpad 6"); break;
00358 case VK_NUMPAD7: str = _T("Numpad 7"); break;
00359 case VK_NUMPAD8: str = _T("Numpad 8"); break;
00360 case VK_NUMPAD9: str = _T("Numpad 9"); break;
00361 case VK_MULTIPLY: str = _T("Multiply"); break;
00362 case VK_ADD: str = _T("Add"); break;
00363 case VK_SEPARATOR: str = _T("Separator"); break;
00364 case VK_SUBTRACT: str = _T("Subtract"); break;
00365 case VK_DECIMAL: str = _T("Decimal"); break;
00366 case VK_DIVIDE: str = _T("Divide"); break;
00367 case VK_F1: str = _T("F1"); break;
00368 case VK_F2: str = _T("F2"); break;
00369 case VK_F3: str = _T("F3"); break;
00370 case VK_F4: str = _T("F4"); break;
00371 case VK_F5: str = _T("F5"); break;
00372 case VK_F6: str = _T("F6"); break;
00373 case VK_F7: str = _T("F7"); break;
00374 case VK_F8: str = _T("F8"); break;
00375 case VK_F9: str = _T("F9"); break;
00376 case VK_F10: str = _T("F10"); break;
00377 case VK_F11: str = _T("F11"); break;
00378 case VK_F12: str = _T("F12"); break;
00379 case VK_F13: str = _T("F13"); break;
00380 case VK_F14: str = _T("F14"); break;
00381 case VK_F15: str = _T("F15"); break;
00382 case VK_F16: str = _T("F16"); break;
00383 case VK_F17: str = _T("F17"); break;
00384 case VK_F18: str = _T("F18"); break;
00385 case VK_F19: str = _T("F19"); break;
00386 case VK_F20: str = _T("F20"); break;
00387 case VK_F21: str = _T("F21"); break;
00388 case VK_F22: str = _T("F22"); break;
00389 case VK_F23: str = _T("F23"); break;
00390 case VK_F24: str = _T("F24"); break;
00391 case VK_NUMLOCK: str = _T("Numlock"); break;
00392 case VK_SCROLL: str = _T("Scroll"); break;
00393
00394 case VK_OEM_FJ_JISHO: str = _T("OEM FJ Jisho"); break;
00395 case VK_OEM_FJ_MASSHOU: str = _T("OEM FJ Msshou"); break;
00396 case VK_OEM_FJ_TOUROKU: str = _T("OEM FJ Touroku"); break;
00397 case VK_OEM_FJ_LOYA: str = _T("OEM FJ Loya"); break;
00398 case VK_OEM_FJ_ROYA: str = _T("OEM FJ Roya"); break;
00399 case VK_LSHIFT: str = _T("LShift"); break;
00400 case VK_RSHIFT: str = _T("RShift"); break;
00401 case VK_LCONTROL: str = _T("LCtrl"); break;
00402 case VK_RCONTROL: str = _T("RCtrl"); break;
00403 case VK_LMENU: str = _T("LAlt"); break;
00404 case VK_RMENU: str = _T("RAlt"); break;
00405 case VK_BROWSER_BACK: str = _T("Browser Back"); break;
00406 case VK_BROWSER_FORWARD: str = _T("Browser Forward"); break;
00407 case VK_BROWSER_REFRESH: str = _T("Browser Refresh"); break;
00408 case VK_BROWSER_STOP: str = _T("Browser Stop"); break;
00409 case VK_BROWSER_SEARCH: str = _T("Browser Search"); break;
00410 case VK_BROWSER_FAVORITES: str = _T("Browser Favorites"); break;
00411 case VK_BROWSER_HOME: str = _T("Browser Home"); break;
00412 case VK_VOLUME_MUTE: str = _T("Volume Mute"); break;
00413 case VK_VOLUME_DOWN: str = _T("Volume Down"); break;
00414 case VK_VOLUME_UP: str = _T("Volume Up"); break;
00415 case VK_MEDIA_NEXT_TRACK: str = _T("Media Next Track"); break;
00416 case VK_MEDIA_PREV_TRACK: str = _T("Media Prev Track"); break;
00417 case VK_MEDIA_STOP: str = _T("Media Stop"); break;
00418 case VK_MEDIA_PLAY_PAUSE: str = _T("Media Play/Pause"); break;
00419 case VK_LAUNCH_MAIL: str = _T("Launch Mail"); break;
00420 case VK_LAUNCH_MEDIA_SELECT: str = _T("Launch Media Select"); break;
00421 case VK_LAUNCH_APP1: str = _T("Launch App1"); break;
00422 case VK_LAUNCH_APP2: str = _T("Launch App2"); break;
00423 case VK_OEM_1: str = _T("OEM 1"); break;
00424 case VK_OEM_PLUS: str = _T("Plus"); break;
00425 case VK_OEM_COMMA: str = _T("Comma"); break;
00426 case VK_OEM_MINUS: str = _T("Minus"); break;
00427 case VK_OEM_PERIOD: str = _T("Period"); break;
00428 case VK_OEM_2: str = _T("OEM 2"); break;
00429 case VK_OEM_3: str = _T("OEM 3"); break;
00430 case VK_OEM_4: str = _T("OEM 4"); break;
00431 case VK_OEM_5: str = _T("OEM 5"); break;
00432 case VK_OEM_6: str = _T("OEM 6"); break;
00433 case VK_OEM_7: str = _T("OEM 7"); break;
00434 case VK_OEM_8: str = _T("OEM 8"); break;
00435 case VK_OEM_AX: str = _T("OEM AX"); break;
00436 case VK_OEM_102: str = _T("OEM 102"); break;
00437 case VK_ICO_HELP: str = _T("ICO Help"); break;
00438 case VK_ICO_00: str = _T("ICO 00"); break;
00439 case VK_PROCESSKEY: str = _T("Process Key"); break;
00440 case VK_ICO_CLEAR: str = _T("ICO Clear"); break;
00441 case VK_PACKET: str = _T("Packet"); break;
00442 case VK_OEM_RESET: str = _T("OEM Reset"); break;
00443 case VK_OEM_JUMP: str = _T("OEM Jump"); break;
00444 case VK_OEM_PA1: str = _T("OEM PA1"); break;
00445 case VK_OEM_PA2: str = _T("OEM PA2"); break;
00446 case VK_OEM_PA3: str = _T("OEM PA3"); break;
00447 case VK_OEM_WSCTRL: str = _T("OEM WSCtrl"); break;
00448 case VK_OEM_CUSEL: str = _T("OEM CUSEL"); break;
00449 case VK_OEM_ATTN: str = _T("OEM ATTN"); break;
00450 case VK_OEM_FINISH: str = _T("OEM Finish"); break;
00451 case VK_OEM_COPY: str = _T("OEM Copy"); break;
00452 case VK_OEM_AUTO: str = _T("OEM Auto"); break;
00453 case VK_OEM_ENLW: str = _T("OEM ENLW"); break;
00454 case VK_OEM_BACKTAB: str = _T("OEM Backtab"); break;
00455 case VK_ATTN: str = _T("ATTN"); break;
00456 case VK_CRSEL: str = _T("CRSEL"); break;
00457 case VK_EXSEL: str = _T("EXSEL"); break;
00458 case VK_EREOF: str = _T("EREOF"); break;
00459 case VK_PLAY: str = _T("Play"); break;
00460 case VK_ZOOM: str = _T("Zoom"); break;
00461 case VK_NONAME: str = _T("Noname"); break;
00462 case VK_PA1: str = _T("PA1"); break;
00463 case VK_OEM_CLEAR: str = _T("OEM Clear"); break;
00464 default:
00465 if('0' <= a.key && a.key <= '9' || 'A' <= a.key && a.key <= 'Z')
00466 str.Format(_T("%c"), (TCHAR)a.key);
00467 break;
00468 }
00469
00470 if(str.IsEmpty() || !(a.fVirt&1))
00471 str.Format(_T("%c"), (TCHAR)a.key);
00472
00473 if(a.fVirt&(FCONTROL|FALT|FSHIFT))
00474 str = MakeAccelModLabel(a.fVirt) + _T(" + ") + str;
00475
00476 str.Replace(_T(" + "), _T("+"));
00477
00478 return(str);
00479 }
00480
00481 CString CPPageAccelTbl::MakeMouseButtonLabel(UINT mouse)
00482 {
00483 CString ret;
00484 switch(mouse)
00485 {
00486 case wmcmd::NONE: default: ret = _T("None"); break;
00487 case wmcmd::LDOWN: ret = _T("Left Down"); break;
00488 case wmcmd::LUP: ret = _T("Left Up"); break;
00489 case wmcmd::LDBLCLK: ret = _T("Left DblClk"); break;
00490 case wmcmd::MDOWN: ret = _T("Middle Down"); break;
00491 case wmcmd::MUP: ret = _T("Middle Up"); break;
00492 case wmcmd::MDBLCLK: ret = _T("Middle DblClk"); break;
00493 case wmcmd::RDOWN: ret = _T("Right Down"); break;
00494 case wmcmd::RUP: ret = _T("Right Up"); break;
00495 case wmcmd::RDBLCLK: ret = _T("Right DblClk"); break;
00496 case wmcmd::X1DOWN: ret = _T("X1 Down"); break;
00497 case wmcmd::X1UP: ret = _T("X1 Up"); break;
00498 case wmcmd::X1DBLCLK: ret = _T("X1 DblClk"); break;
00499 case wmcmd::X2DOWN: ret = _T("X2 Down"); break;
00500 case wmcmd::X2UP: ret = _T("X2 Up"); break;
00501 case wmcmd::X2DBLCLK: ret = _T("X2 DblClk"); break;
00502 case wmcmd::WUP: ret = _T("Wheel Up"); break;
00503 case wmcmd::WDOWN: ret = _T("Wheel Down"); break;
00504 }
00505 return ret;
00506 }
00507
00508 CString CPPageAccelTbl::MakeAppCommandLabel(UINT id)
00509 {
00510 CString str;
00511
00512 ASSERT(id <= APPCOMMAND_LAST);
00513
00514 switch(id)
00515 {
00516 default: str = _T(""); break;
00517 case APPCOMMAND_BROWSER_BACKWARD: str = _T("BROWSER_BACKWARD"); break;
00518 case APPCOMMAND_BROWSER_FORWARD: str = _T("BROWSER_FORWARD"); break;
00519 case APPCOMMAND_BROWSER_REFRESH: str = _T("BROWSER_REFRESH"); break;
00520 case APPCOMMAND_BROWSER_STOP: str = _T("BROWSER_STOP"); break;
00521 case APPCOMMAND_BROWSER_SEARCH: str = _T("BROWSER_SEARCH"); break;
00522 case APPCOMMAND_BROWSER_FAVORITES: str = _T("BROWSER_FAVORITES"); break;
00523 case APPCOMMAND_BROWSER_HOME: str = _T("BROWSER_HOME"); break;
00524 case APPCOMMAND_VOLUME_MUTE: str = _T("VOLUME_MUTE"); break;
00525 case APPCOMMAND_VOLUME_DOWN: str = _T("VOLUME_DOWN"); break;
00526 case APPCOMMAND_VOLUME_UP: str = _T("VOLUME_UP"); break;
00527 case APPCOMMAND_MEDIA_NEXTTRACK: str = _T("MEDIA_NEXTTRACK"); break;
00528 case APPCOMMAND_MEDIA_PREVIOUSTRACK: str = _T("MEDIA_PREVIOUSTRACK"); break;
00529 case APPCOMMAND_MEDIA_STOP: str = _T("MEDIA_STOP"); break;
00530 case APPCOMMAND_MEDIA_PLAY_PAUSE: str = _T("MEDIA_PLAY_PAUSE"); break;
00531 case APPCOMMAND_LAUNCH_MAIL: str = _T("LAUNCH_MAIL"); break;
00532 case APPCOMMAND_LAUNCH_MEDIA_SELECT: str = _T("LAUNCH_MEDIA_SELECT"); break;
00533 case APPCOMMAND_LAUNCH_APP1: str = _T("LAUNCH_APP1"); break;
00534 case APPCOMMAND_LAUNCH_APP2: str = _T("LAUNCH_APP2"); break;
00535 case APPCOMMAND_BASS_DOWN: str = _T("BASS_DOWN"); break;
00536 case APPCOMMAND_BASS_BOOST: str = _T("BASS_BOOST"); break;
00537 case APPCOMMAND_BASS_UP: str = _T("BASS_UP"); break;
00538 case APPCOMMAND_TREBLE_DOWN: str = _T("TREBLE_DOWN"); break;
00539 case APPCOMMAND_TREBLE_UP: str = _T("TREBLE_UP"); break;
00540 case APPCOMMAND_MICROPHONE_VOLUME_MUTE: str = _T("MICROPHONE_VOLUME_MUTE"); break;
00541 case APPCOMMAND_MICROPHONE_VOLUME_DOWN: str = _T("MICROPHONE_VOLUME_DOWN"); break;
00542 case APPCOMMAND_MICROPHONE_VOLUME_UP: str = _T("MICROPHONE_VOLUME_UP"); break;
00543 case APPCOMMAND_HELP: str = _T("HELP"); break;
00544 case APPCOMMAND_FIND: str = _T("FIND"); break;
00545 case APPCOMMAND_NEW: str = _T("NEW"); break;
00546 case APPCOMMAND_OPEN: str = _T("OPEN"); break;
00547 case APPCOMMAND_CLOSE: str = _T("CLOSE"); break;
00548 case APPCOMMAND_SAVE: str = _T("SAVE"); break;
00549 case APPCOMMAND_PRINT: str = _T("PRINT"); break;
00550 case APPCOMMAND_UNDO: str = _T("UNDO"); break;
00551 case APPCOMMAND_REDO: str = _T("REDO"); break;
00552 case APPCOMMAND_COPY: str = _T("COPY"); break;
00553 case APPCOMMAND_CUT: str = _T("CUT"); break;
00554 case APPCOMMAND_PASTE: str = _T("PASTE"); break;
00555 case APPCOMMAND_REPLY_TO_MAIL: str = _T("REPLY_TO_MAIL"); break;
00556 case APPCOMMAND_FORWARD_MAIL: str = _T("FORWARD_MAIL"); break;
00557 case APPCOMMAND_SEND_MAIL: str = _T("SEND_MAIL"); break;
00558 case APPCOMMAND_SPELL_CHECK: str = _T("SPELL_CHECK"); break;
00559 case APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE: str = _T("DICTATE_OR_COMMAND_CONTROL_TOGGLE"); break;
00560 case APPCOMMAND_MIC_ON_OFF_TOGGLE: str = _T("MIC_ON_OFF_TOGGLE"); break;
00561 case APPCOMMAND_CORRECTION_LIST: str = _T("CORRECTION_LIST"); break;
00562 case APPCOMMAND_MEDIA_PLAY: str = _T("MEDIA_PLAY"); break;
00563 case APPCOMMAND_MEDIA_PAUSE: str = _T("MEDIA_PAUSE"); break;
00564 case APPCOMMAND_MEDIA_RECORD: str = _T("MEDIA_RECORD"); break;
00565 case APPCOMMAND_MEDIA_FAST_FORWARD: str = _T("MEDIA_FAST_FORWARD"); break;
00566 case APPCOMMAND_MEDIA_REWIND: str = _T("MEDIA_REWIND"); break;
00567 case APPCOMMAND_MEDIA_CHANNEL_UP: str = _T("MEDIA_CHANNEL_UP"); break;
00568 case APPCOMMAND_MEDIA_CHANNEL_DOWN: str = _T("MEDIA_CHANNEL_DOWN"); break;
00569 }
00570
00571 return str;
00572 }
00573 void CPPageAccelTbl::DoDataExchange(CDataExchange* pDX)
00574 {
00575 __super::DoDataExchange(pDX);
00576 DDX_Text(pDX, IDC_EDIT1, m_WinLircAddr);
00577 DDX_Control(pDX, IDC_EDIT1, m_WinLircEdit);
00578 DDX_Control(pDX, IDC_STATICLINK, m_WinLircLink);
00579 DDX_Check(pDX, IDC_CHECK1, m_fWinLirc);
00580 DDX_Text(pDX, IDC_EDIT2, m_UIceAddr);
00581 DDX_Control(pDX, IDC_EDIT2, m_UIceEdit);
00582 DDX_Control(pDX, IDC_STATICLINK2, m_UIceLink);
00583 DDX_Check(pDX, IDC_CHECK9, m_fUIce);
00584 }
00585
00586 BEGIN_MESSAGE_MAP(CPPageAccelTbl, CPPageBase)
00587 ON_NOTIFY(LVN_BEGINLABELEDIT, IDC_LIST1, OnBeginlabeleditList)
00588 ON_NOTIFY(LVN_DOLABELEDIT, IDC_LIST1, OnDolabeleditList)
00589 ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST1, OnEndlabeleditList)
00590 ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
00591 ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
00592 ON_WM_TIMER()
00593 ON_WM_CTLCOLOR()
00594 END_MESSAGE_MAP()
00595
00596
00597
00598 BOOL CPPageAccelTbl::OnInitDialog()
00599 {
00600 __super::OnInitDialog();
00601
00602 AppSettings& s = AfxGetAppSettings();
00603
00604 m_wmcmds.RemoveAll();
00605 m_wmcmds.AddTail(&s.wmcmds);
00606 m_fWinLirc = s.fWinLirc;
00607 m_WinLircAddr = s.WinLircAddr;
00608 m_fUIce = s.fUIce;
00609 m_UIceAddr = s.UIceAddr;
00610
00611 UpdateData(FALSE);
00612
00613 CRect r;
00614 GetDlgItem(IDC_PLACEHOLDER)->GetWindowRect(r);
00615 ScreenToClient(r);
00616
00617 m_list.CreateEx(
00618 WS_EX_CLIENTEDGE,
00619 WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_TABSTOP|LVS_REPORT|LVS_AUTOARRANGE|LVS_SHOWSELALWAYS,
00620 r, this, IDC_LIST1);
00621
00622 m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_DOUBLEBUFFER);
00623
00624 for(int i = 0, j = m_list.GetHeaderCtrl()->GetItemCount(); i < j; i++) m_list.DeleteColumn(0);
00625 m_list.InsertColumn(COL_CMD, _T("Command"), LVCFMT_LEFT, 80);
00626 m_list.InsertColumn(COL_MOD, _T("Modifier"), LVCFMT_LEFT, 40);
00627 m_list.InsertColumn(COL_KEY, _T("Key"), LVCFMT_LEFT, 40);
00628 m_list.InsertColumn(COL_TYPE, _T("Type"), LVCFMT_LEFT, 40);
00629 m_list.InsertColumn(COL_ID, _T("ID"), LVCFMT_LEFT, 40);
00630 m_list.InsertColumn(COL_MOUSE, _T("Mouse"), LVCFMT_LEFT, 80);
00631 m_list.InsertColumn(COL_APPCMD, _T("App Command"), LVCFMT_LEFT, 120);
00632 m_list.InsertColumn(COL_RMCMD, _T("RemoteCmd"), LVCFMT_LEFT, 80);
00633 m_list.InsertColumn(COL_RMREPCNT, _T("RepCnt"), LVCFMT_CENTER, 60);
00634
00635 POSITION pos = m_wmcmds.GetHeadPosition();
00636 for(int i = 0; pos; i++)
00637 {
00638 int row = m_list.InsertItem(m_list.GetItemCount(), m_wmcmds.GetAt(pos).name, COL_CMD);
00639 m_list.SetItemData(row, (DWORD_PTR)pos);
00640 m_wmcmds.GetNext(pos);
00641 }
00642
00643 SetupList();
00644
00645 m_list.SetColumnWidth(COL_CMD, LVSCW_AUTOSIZE);
00646 m_list.SetColumnWidth(COL_MOD, LVSCW_AUTOSIZE);
00647 m_list.SetColumnWidth(COL_KEY, LVSCW_AUTOSIZE);
00648 m_list.SetColumnWidth(COL_TYPE, LVSCW_AUTOSIZE);
00649 m_list.SetColumnWidth(COL_ID, LVSCW_AUTOSIZE_USEHEADER);
00650
00651 return TRUE;
00652
00653 }
00654
00655 BOOL CPPageAccelTbl::OnApply()
00656 {
00657 UpdateData();
00658
00659 AppSettings& s = AfxGetAppSettings();
00660
00661 s.wmcmds.RemoveAll();
00662 s.wmcmds.AddTail(&m_wmcmds);
00663
00664 CArray<ACCEL> pAccel;
00665 pAccel.SetSize(m_wmcmds.GetCount());
00666 POSITION pos = m_wmcmds.GetHeadPosition();
00667 for(int i = 0; pos; i++) pAccel[i] = m_wmcmds.GetNext(pos);
00668 if(s.hAccel) DestroyAcceleratorTable(s.hAccel);
00669 s.hAccel = CreateAcceleratorTable(pAccel.GetData(), pAccel.GetCount());
00670
00671 GetParentFrame()->m_hAccelTable = s.hAccel;
00672
00673 s.fWinLirc = !!m_fWinLirc;
00674 s.WinLircAddr = m_WinLircAddr;
00675 if(s.fWinLirc) s.WinLircClient.Connect(m_WinLircAddr);
00676 s.fUIce = !!m_fUIce;
00677 s.UIceAddr = m_UIceAddr;
00678 if(s.fUIce) s.UIceClient.Connect(m_UIceAddr);
00679
00680 return __super::OnApply();
00681 }
00682
00683 void CPPageAccelTbl::OnBnClickedButton1()
00684 {
00685 m_list.SetFocus();
00686
00687 for(int i = 0, j = m_list.GetItemCount(); i < j; i++)
00688 {
00689 m_list.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
00690 }
00691 }
00692
00693 void CPPageAccelTbl::OnBnClickedButton2()
00694 {
00695 m_list.SetFocus();
00696
00697 POSITION pos = m_list.GetFirstSelectedItemPosition();
00698 if(!pos) return;
00699
00700 AppSettings& s = AfxGetAppSettings();
00701
00702 while(pos)
00703 {
00704 wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(m_list.GetNextSelectedItem(pos)));
00705 wc.Restore();
00706 }
00707
00708 SetupList();
00709
00710 SetModified();
00711 }
00712
00713 void CPPageAccelTbl::OnBeginlabeleditList(NMHDR* pNMHDR, LRESULT* pResult)
00714 {
00715 LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
00716 LV_ITEM* pItem = &pDispInfo->item;
00717
00718 *pResult = FALSE;
00719
00720 if(pItem->iItem < 0)
00721 return;
00722
00723 if(pItem->iSubItem == COL_MOD || pItem->iSubItem == COL_KEY || pItem->iSubItem == COL_TYPE
00724 || pItem->iSubItem == COL_MOUSE || pItem->iSubItem == COL_APPCMD
00725 || pItem->iSubItem == COL_RMCMD || pItem->iSubItem == COL_RMREPCNT)
00726 {
00727 *pResult = TRUE;
00728 }
00729 }
00730
00731 static BYTE s_mods[] = {0,FALT,FCONTROL,FSHIFT,FCONTROL|FALT,FCONTROL|FSHIFT,FALT|FSHIFT,FCONTROL|FALT|FSHIFT};
00732
00733 void CPPageAccelTbl::OnDolabeleditList(NMHDR* pNMHDR, LRESULT* pResult)
00734 {
00735 LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
00736 LV_ITEM* pItem = &pDispInfo->item;
00737
00738 *pResult = FALSE;
00739
00740 if(pItem->iItem < 0)
00741 return;
00742
00743 wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(pItem->iItem));
00744 ACCEL& a = wc;
00745
00746 CList<CString> sl;
00747 int nSel = -1;
00748
00749 if(pItem->iSubItem == COL_MOD)
00750 {
00751 for(int i = 0; i < countof(s_mods); i++)
00752 {
00753 sl.AddTail(MakeAccelModLabel(s_mods[i]));
00754 if((a.fVirt&~3) == s_mods[i]) nSel = i;
00755 }
00756
00757 m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
00758
00759 *pResult = TRUE;
00760 }
00761 else if(pItem->iSubItem == COL_KEY)
00762 {
00763 for(int i = 0; i < 256; i++)
00764 {
00765 sl.AddTail(MakeAccelVkeyLabel(i, a.fVirt&FVIRTKEY));
00766 if(a.key == i) nSel = i;
00767 }
00768
00769 m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
00770
00771 *pResult = TRUE;
00772 }
00773 else if(pItem->iSubItem == COL_TYPE)
00774 {
00775 sl.AddTail(_T("VIRTKEY"));
00776 sl.AddTail(_T("ASCII"));
00777
00778 nSel = !(a.fVirt&FVIRTKEY);
00779
00780 m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
00781
00782 *pResult = TRUE;
00783 }
00784 else if(pItem->iSubItem == COL_MOUSE)
00785 {
00786 for(UINT i = 0; i < wmcmd::LAST; i++)
00787 {
00788 sl.AddTail(MakeMouseButtonLabel(i));
00789 if(wc.mouse == i) nSel = i;
00790 }
00791
00792 m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
00793
00794 *pResult = TRUE;
00795 }
00796 else if(pItem->iSubItem == COL_APPCMD)
00797 {
00798 for(int i = 0; i <= APPCOMMAND_LAST; i++)
00799 {
00800 sl.AddTail(MakeAppCommandLabel(i));
00801 if(wc.appcmd == i) nSel = i;
00802 }
00803
00804 m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
00805
00806 *pResult = TRUE;
00807 }
00808 else if(pItem->iSubItem == COL_RMCMD)
00809 {
00810 m_list.ShowInPlaceEdit(pItem->iItem, pItem->iSubItem);
00811
00812 *pResult = TRUE;
00813 }
00814 else if(pItem->iSubItem == COL_RMREPCNT)
00815 {
00816 m_list.ShowInPlaceEdit(pItem->iItem, pItem->iSubItem);
00817
00818 *pResult = TRUE;
00819 }
00820 }
00821
00822 void CPPageAccelTbl::OnEndlabeleditList(NMHDR* pNMHDR, LRESULT* pResult)
00823 {
00824 LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
00825 LV_ITEM* pItem = &pDispInfo->item;
00826
00827 *pResult = FALSE;
00828
00829 if(!m_list.m_fInPlaceDirty)
00830 return;
00831
00832 if(pItem->iItem < 0)
00833 return;
00834
00835 wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(pItem->iItem));
00836
00837 if(pItem->iSubItem == COL_MOD)
00838 {
00839 if(pItem->lParam >= 0 && pItem->lParam < countof(s_mods))
00840 {
00841 wc.fVirt = (wc.fVirt&3) | (s_mods[pItem->lParam]&~3);
00842 m_list.SetItemText(pItem->iItem, COL_MOD, pItem->pszText);
00843 *pResult = TRUE;
00844 }
00845 }
00846 else if(pItem->iSubItem == COL_KEY)
00847 {
00848 int i = pItem->lParam;
00849 if(i >= 0 && i < 256)
00850 {
00851 wc.key = (WORD)i;
00852 m_list.SetItemText(pItem->iItem, COL_KEY, pItem->pszText);
00853 *pResult = TRUE;
00854 }
00855 }
00856 else if(pItem->iSubItem == COL_TYPE)
00857 {
00858 int i = pItem->lParam;
00859 if(i >= 0 && i < 2)
00860 {
00861 wc.fVirt = (wc.fVirt&~FVIRTKEY) | (i == 0 ? FVIRTKEY : 0);
00862 m_list.SetItemText(pItem->iItem, COL_KEY, MakeAccelVkeyLabel(wc.key, wc.fVirt&FVIRTKEY));
00863 m_list.SetItemText(pItem->iItem, COL_TYPE, (wc.fVirt&FVIRTKEY)?_T("VIRTKEY"):_T("ASCII"));
00864 *pResult = TRUE;
00865 }
00866 }
00867 else if(pItem->iSubItem == COL_APPCMD)
00868 {
00869 int i = pItem->lParam;
00870 if(i >= 0 && i <= APPCOMMAND_LAST)
00871 {
00872 wc.appcmd = (WORD)i;
00873 m_list.SetItemText(pItem->iItem, COL_APPCMD, pItem->pszText);
00874 *pResult = TRUE;
00875 }
00876 }
00877 else if(pItem->iSubItem == COL_MOUSE)
00878 {
00879 wc.mouse = pItem->lParam;
00880 m_list.SetItemText(pItem->iItem, COL_MOUSE, pItem->pszText);
00881 }
00882 else if(pItem->iSubItem == COL_RMCMD)
00883 {
00884 wc.rmcmd = CStringA(CString(pItem->pszText)).Trim();
00885 wc.rmcmd.Replace(' ', '_');
00886 m_list.SetItemText(pItem->iItem, pItem->iSubItem, CString(wc.rmcmd));
00887 *pResult = TRUE;
00888 }
00889 else if(pItem->iSubItem == COL_RMREPCNT)
00890 {
00891 CString str = CString(pItem->pszText).Trim();
00892 wc.rmrepcnt = _tcstol(str, NULL, 10);
00893 str.Format(_T("%d"), wc.rmrepcnt);
00894 m_list.SetItemText(pItem->iItem, pItem->iSubItem, str);
00895 *pResult = TRUE;
00896 }
00897
00898 if(*pResult)
00899 SetModified();
00900 }
00901
00902
00903 void CPPageAccelTbl::OnTimer(UINT nIDEvent)
00904 {
00905 UpdateData();
00906
00907 if(m_fWinLirc)
00908 {
00909 CString addr;
00910 m_WinLircEdit.GetWindowText(addr);
00911 AfxGetAppSettings().WinLircClient.Connect(addr);
00912 }
00913
00914 m_WinLircEdit.Invalidate();
00915
00916 if(m_fUIce)
00917 {
00918 CString addr;
00919 m_UIceEdit.GetWindowText(addr);
00920 AfxGetAppSettings().UIceClient.Connect(addr);
00921 }
00922
00923 m_UIceEdit.Invalidate();
00924
00925 m_counter++;
00926
00927 __super::OnTimer(nIDEvent);
00928 }
00929
00930 HBRUSH CPPageAccelTbl::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
00931 {
00932 HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor);
00933
00934 int status = -1;
00935
00936 if(*pWnd == m_WinLircEdit)
00937 status = AfxGetAppSettings().WinLircClient.GetStatus();
00938 else if(*pWnd == m_UIceEdit)
00939 status = AfxGetAppSettings().UIceClient.GetStatus();
00940
00941 if(status == 0 || status == 2 && (m_counter&1))
00942 pDC->SetTextColor(0x0000ff);
00943 else if(status == 1)
00944 pDC->SetTextColor(0x008000);
00945
00946 return hbr;
00947 }
00948
00949 BOOL CPPageAccelTbl::OnSetActive()
00950 {
00951 SetTimer(1, 1000, NULL);
00952
00953 return CPPageBase::OnSetActive();
00954 }
00955
00956 BOOL CPPageAccelTbl::OnKillActive()
00957 {
00958 KillTimer(1);
00959
00960 return CPPageBase::OnKillActive();
00961 }
00962