?? gui.cpp
字號:
RMstatus RMcuracaoGui::HandleSelection(RMremoteKey key){ RMstatus status = RM_ERROR; RMuint32 objectId; RMGuiObjectSelectDirection direction; switch (key) { case RM_HW_UP: direction = SELECT_UP; // if(subs.data) // { // subs.vPos -= 5; // if(subs.vPos <= 5 ) // subs.vPos = 5; // } break; case RM_HW_DOWN: direction = SELECT_DOWN; // if(subs.data) // { // subs.vPos += 5; // if(subs.vPos >= 100 ) // subs.vPos = 100; // } break; case RM_HW_LEFT: direction = SELECT_LEFT; break; case RM_HW_RIGHT: direction = SELECT_RIGHT; break; default: // selection not done through hardware return RM_UNKNOWN_KEY; } //printf("handle select\n"); //BeginWaitCursor(); if (IsTv()) { status = m_pnav->GetNextObjectId(m_pnav->SelectedObjectId(), direction, &objectId); } if (m_pnav->SelectedObjectId() != 0) { status = m_pnav->GetNextObjectId(m_pnav->SelectedObjectId(), direction, &objectId); if (RMSUCCEEDED(status)) status = m_pnav->SelectObject(objectId); } else { if (m_zoomOn == TRUE) return PanVideo(direction); if (m_pnav->OsdOn() == FALSE) return RM_UNKNOWN_KEY; } //EndWaitCursor(); // secret menu stuff#ifndef GUI_REFID_2 CheckForSecretCode(key);#endif return status;}RMstatus RMcuracaoGui::HandleActivation(){ RMstatus status = RM_OK; typeCommandInfo cmdInfo; KillTimer(TIMER_WAIT_ANIMATION, FALSE); printf("activate\n"); if (m_bTV) { EndWaitCursor(); if (m_bTVMenuOn) { m_pnav->DisplayOSDList(FALSE); if (m_pnav->m_tvList.previous != m_pnav->m_tvList.current) { m_pnav->m_tvList.badchannel = -1; m_bMissingChannel = FALSE; m_pnav->m_tvList.starting = TRUE; // if (m_pnav->m_tvList.current == 0) // m_pnav->m_tvList.current = m_pnav->m_tvList.nbItems - 1; // else // m_pnav->m_tvList.current--; m_pnav->m_tvList.up = TRUE; // if (m_pnav->m_tvList.current == 0) // { // m_pnav->m_tvList.firstvisible = m_pnav->m_tvList.nbItems - 1; // } // else // { // m_pnav->m_tvList.firstvisible = m_pnav->m_tvList.current - 1; // } printf("current %d\n", m_pnav->m_tvList.current); HandleNext(); } m_bTVMenuOn = FALSE; } else { //BeginWaitCursor(); if (m_infoOn) { m_infoOn = 0; status = m_pnav->RemoveSlider(m_pnav->SelectedObjectId()); } m_pnav->DisplayOSDList(TRUE); m_bTVMenuOn = TRUE; m_pnav->m_tvList.previous = m_pnav->m_tvList.current; if (m_pnav->m_tvList.current == 0) m_pnav->m_tvList.rotate = TRUE; else m_pnav->m_tvList.rotate = FALSE; } } else {#ifndef __NUMSEL if(m_pnav->OsdOn() == FALSE && !ISPOPUP(m_pnav->SelectedObjectId())) {#else // for cdda with osd on to accept activation; // secret menu keys can never use HW_SELECT/_ENTER anyway if (m_pnav->ActivePageId() == m_pnav->MainPageId() && !ISPOPUP(m_pnav->SelectedObjectId())) {#endif if (m_numericInputCount > 0 && m_context->player) return SendNumericInput(); else return RM_UNKNOWN_KEY; } if (ISPOPUP(m_pnav->SelectedObjectId())) { if (m_pnav->PopupSelectedObjectId() != 0) { status = m_pnav->GetCommandInfo(m_pnav->PopupSelectedObjectId(), ACTIVATE_EVENT, &cmdInfo); if (RMSUCCEEDED(status)) { return CommandHandler(&cmdInfo); } } } BeginWaitCursor(); status = m_pnav->GetCommandInfo(m_pnav->SelectedObjectId(), ACTIVATE_EVENT, &cmdInfo); if (RMFAILED(status)) { // if activation command is not present, check for default activation for some objects status = m_pnav->DefaultActivateCurrentObject(); EndWaitCursor(); return status; } EndWaitCursor(); return CommandHandler(&cmdInfo); } return RM_OK;}RMstatus RMcuracaoGui::HandleVolume(RMremoteKey key){ RMstatus status = RM_OK; typeCommandInfo cmdInfo; RMuint32 objectId; if (IsTv() && IsOSDMenu()) { m_pnav->DisplayOSDList(FALSE); m_bTVMenuOn = FALSE; m_pnav->m_tvList.current = m_pnav->m_tvList.previous; if (m_pnav->m_tvList.current == 0) m_pnav->m_tvList.firstvisible = m_pnav->m_tvList.nbItems - 1; else m_pnav->m_tvList.firstvisible = m_pnav->m_tvList.current - 1; } if (ISPOPUP(m_pnav->SelectedObjectId())) { status = m_pnav->GetCommandInfo(m_pnav->SelectedObjectId(), (key == RM_HW_VOL_PLUS) ? (RMascii*) VOLUME_UP_EVENT : (RMascii*) VOLUME_DOWN_EVENT, &cmdInfo); if (RMFAILED(status)) return RM_ERROR; return CommandHandler(&cmdInfo); } if (m_pnav->SelectedObjectId() == VOLUME_CONTROL || m_pnav->SelectedObjectId() != m_pnav->BCSSliderId()) { objectId = VOLUME_CONTROL; } else { objectId = m_pnav->BCSSliderId(); } status = m_pnav->GetCommandInfo(objectId, (key == RM_HW_VOL_PLUS) ? (RMascii*) VOLUME_UP_EVENT : (RMascii*) VOLUME_DOWN_EVENT, &cmdInfo); if (RMFAILED(status)) { return RM_ERROR; } status = CommandHandler(&cmdInfo); // save settings (if changed) after a timeout amount of time from the last level change if (RMSUCCEEDED(status)) SetTimer(TIMER_SAVESETTINGS); return status;}RMstatus RMcuracaoGui::HandleReturn(){ RMstatus status = RM_OK; typeCommandInfo cmdInfo; if (m_bTV) { if (m_bTVMenuOn) { m_pnav->DisplayOSDList(FALSE); m_bTVMenuOn = FALSE; m_pnav->m_tvList.current = m_pnav->m_tvList.previous; if (m_pnav->m_tvList.current == 0) m_pnav->m_tvList.firstvisible = m_pnav->m_tvList.nbItems - 1; else m_pnav->m_tvList.firstvisible = m_pnav->m_tvList.current - 1; } else { HandleStop(); } } else { if ((m_playMode != STATE_STOP) && (m_playMode != STATE_CLOSE)) return HandleStop(); // check if popup if (ISPOPUP(m_pnav->SelectedObjectId())) { status = m_pnav->GetCommandInfo(m_pnav->SelectedObjectId(), RETURN_EVENT, &cmdInfo); if (RMSUCCEEDED(status)) return CommandHandler(&cmdInfo); else { // default to removal return ShowPopup(m_pnav->SelectedObjectId(), FALSE); } } // no popup handling Return, try other alternatives if (m_isoPlayList.active == TRUE && m_isoPlayList.filetype == FILETYPE_PICTURE) return StopFiles(TRUE); else if (m_playMode != STATE_STOP && m_playMode != STATE_CLOSE) return RM_UNKNOWN_KEY; // see if current page handles the key otherwise pass it to selected object status = m_pnav->GetCommandInfo(m_pnav->ActivePageId(), RETURN_EVENT, &cmdInfo); if (RMFAILED(status)) { status = m_pnav->GetCommandInfo(m_pnav->SelectedObjectId(), RETURN_EVENT, &cmdInfo); if (RMFAILED(status)) return RM_ERROR; } return CommandHandler(&cmdInfo); } return RM_OK;}RMstatus RMcuracaoGui::HandleMute(){ RMbool mute; RMstatus status; mute = m_muteOn ^ 1; if (mute) { status = SetVolume(0); if (m_infoOn) { m_infoOn = 0; status = m_pnav->RemoveSlider(m_pnav->SelectedObjectId()); } } else { status = SetVolume(m_settings.volume); } if(IsTv()) m_pnav->RemoveEventBitmap(GENERIC_EVENT); if (RMFAILED(status) && m_playMode != STATE_CLOSE) return RM_ERROR; m_muteOn = mute; if (m_muteOn) { status = m_pnav->DisplayEvent(MUTE_EVENT, m_muteOn, TIMER_NONE, m_eventText, MUTE_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); } else { status = m_pnav->RemoveEventBitmap(); RestoreNonTimedEvent(); } return status;}RMstatus RMcuracaoGui::ResetMute(){ if (m_muteOn) { return HandleMute(); } return RM_ERROR;}RMstatus RMcuracaoGui::HandleNumericInput(RMremoteKey key){ RMascii input; RMstatus status; switch (key) { case RM_HW_KEY_0: input = '0'; break; case RM_HW_KEY_1: input = '1'; break; case RM_HW_KEY_2: input = '2'; break; case RM_HW_KEY_3: input = '3'; break; case RM_HW_KEY_4: input = '4'; break; case RM_HW_KEY_5: input = '5'; break; case RM_HW_KEY_6: input = '6'; break; case RM_HW_KEY_7: input = '7'; break; case RM_HW_KEY_8: input = '8'; break; case RM_HW_KEY_9: input = '9'; break; default: return RM_ERROR; } // handle popup case -- looking for strings only!!!!!!!!!!!!!!!!!!!!!!!!!! status = m_pnav->CharacterInput(input); if (RMSUCCEEDED(status)) return status; if (m_bTV) { if (m_numericInputCount < 2) { m_numericInput[m_numericInputCount] = input; m_numericInputCount++;#ifdef __NUMSEL if (m_numericInputCount < 2) { if (m_infoOn) { m_infoOn = 0; status = m_pnav->RemoveSlider(m_pnav->SelectedObjectId()); } m_numericInput[m_numericInputCount] = '_'; m_numericInput[m_numericInputCount + 1] = '\0'; m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, m_numericInput, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40, TRUE, PLAYER_NUMERICINPUT_TIMEOUT); SetTimer(TIMER_PLAYER_NUMERIC_INPUT); } else { m_numericInput[m_numericInputCount] = '\0'; // don't clear on TIMER_PLAYER_NUMERIC_INPUT timeout because player's state event/other bitmaps may be present m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, m_numericInput, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40, TRUE, 10);#endif SetTimer(TIMER_PLAYER_NUMERIC_INPUT, 10); RMint8 _temp = atoi(m_numericInput); if(_temp >= 1 && _temp <= m_pnav->m_tvList.nbItems) { _temp --; if(_temp < 0) { _temp = m_pnav->m_tvList.nbItems - 1; } m_pnav->m_tvList.current = _temp; m_pnav->m_tvList.starting = TRUE; HandleNext(); } } printf("gore\n"); return RM_OK; } else {#ifndef __NUMSEL ResetNumericInput();#else m_numericInput[0] = input; m_numericInput[1] = '_'; m_numericInput[2] = '\0'; m_numericInputCount = 1; m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, m_numericInput, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40, TRUE, PLAYER_NUMERICINPUT_TIMEOUT); SetTimer(TIMER_PLAYER_NUMERIC_INPUT); printf("dolu\n"); return RM_OK; // so gui interpretcommand won't return RM_UNKNOWN_KEY and pass the single numeric key to player#endif } } return RM_ERROR;}RMstatus RMcuracaoGui::HandleInfo(){ RMstatus status = RM_OK; typeCommandInfo cmdInfo; if (((m_playMode == STATE_CLOSE || m_playMode == STATE_STOP) || ISPOPUP(m_pnav->SelectedObjectId())) && m_infoOn == FALSE) { return RM_ERROR; } if (m_pnav->WMVHDOn()) { status = m_pnav->GetCommandInfo(m_pnav->GlobalEventId(), WMVHDINFO_EVENT, &cmdInfo); } else if (m_isoPlayList.filetype == FILETYPE_PICTURE) return RM_ERROR; status = m_pnav->GetCommandInfo(m_pnav->GlobalEventId(), FILEINFO_EVENT, &cmdInfo); if (RMFAILED(status)) { return RM_ERROR; } return CommandHandler(&cmdInfo);}RMstatus RMcuracaoGui::HandleEvent(RMascii *event){ typeCommandInfo cmdInfo; RMstatus status = RM_ERROR; status = m_pnav->GetCommandInfo(m_pnav->ActivePageId(), event, &cmdInfo); if (RMSUCCEEDED(status)) { status = CommandHandler(&cmdInfo); } return status;}RMstatus RMcuracaoGui::HandleClear(){ typeCommandInfo cmdInfo; RMstatus status = RM_ERROR; status = m_pnav->GetCommandInfo(m_pnav->SelectedObjectId(), CLEAR_EVENT, &cmdInfo); if (RMSUCCEEDED(status)) { return CommandHandler(&cmdInfo); } if (RMSUCCEEDED(m_pnav->HandleDefaultClear())) return RM_OK; status = m_pnav->GetCommandInfo(m_pnav->GlobalEventId(), CLEAR_EVENT, &cmdInfo); if (RMSUCCEEDED(status)) { return CommandHandler(&cmdInfo); } return RM_ERROR;}RMstatus RMcuracaoGui::HandleTimeSearch(){ RMstatus status = RM_OK; typeCommandInfo cmdInfo; if (m_playMode == STATE_CLOSE /*|| m_playMode == STATE_STOP*/) { m_pnav->DisplayEvent(INVALIDOP_EVENT, TRUE, TIMER_EVENT, m_eventText, INVALIDOP_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); return RM_ERROR; } if (m_playMode != STATE_STOP) {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -