?? gui.cpp
字號:
status = HandleTrickMode(c); break; case RM_HW_SHUFFLE: status = HandleShuffle(); break; case RM_HW_LANGUAGE: status = HandleLanguage(); break; case RM_HW_PBC: if (m_pnav->ActivePageId() == 0) status = HandlePBC(); break;#ifdef WITH_WMVHD_SUPPORT case RM_HW_MENU: case RM_HW_TITLE: //case RM_HW_SETUP:// ShowPopup(m_pnav->SelectedObjectId(), FALSE);// status = HandleMenu(); break; case RM_HW_SETUP: if ((m_playMode != STATE_STOP) && (m_playMode != STATE_CLOSE)) { HandleReturn(); } { HandleSetup(); } break; case RM_HW_SC1: case RM_HW_SC2: case RM_HW_SC3: case RM_HW_SC4: case RM_HW_SC5: case RM_HW_SC6: case RM_HW_SC7: case RM_HW_SC8: if ((m_playMode != STATE_STOP) && (m_playMode != STATE_CLOSE)) { HandleReturn(); } { typeCommandInfo cmdInfo; // for cdda with osd on to accept activation; // secret menu keys can never use HW_SELECT/_ENTER anyway RMuint16 index = c - RM_HW_SC1; RMMemset(&cmdInfo, 0, sizeof(cmdInfo)); cmdInfo.id = shortcuts[index].command; cmdInfo.nValue = shortcuts[index].submenu; if (shortcuts[index].link[0]) { cmdInfo.validLink = TRUE; m_pnav->GetObjectIdByName(shortcuts[index].link, &cmdInfo.linkId); } else break; return CommandHandler(&cmdInfo); } break;#endif default: // printf("Unknown command for the main interpreter\n"); status = RM_UNKNOWN_KEY; break; } } else status = RM_OK;#ifdef GUI_REFID_2 CheckForSecretCode(c);#endif return status;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////RMstatus RMcuracaoGui::Notify(typeCuracaoMessage message, void *val){ RMstatus status; RMint8 speed; RMascii txt[20]; typeCommandInfo cmdInfo; switch (message) { case CURACAO_MESSAGE_DECODER_INITIALIZED: if (m_MediaList.active && m_pnav->WMVHDOn()) {#ifdef WITH_MONO InitPlayingMedia(m_MediaList.id[m_MediaList.numCurrentItem]);#endif } break; case CURACAO_MESSAGE_EOS: m_isNeroMP4 = FALSE;#ifdef WITH_WMVHD_SUPPORT if (m_MediaList.repeat != REPEAT_OFF) return CheckWMVHDRepeat();#endif break; case CURACAO_MESSAGE_CREATED_MEDIA_PLAYER: {#ifdef WITH_WMVHD_SUPPORT if (m_wmvHDRegionError) return Notify(CURACAO_MESSAGE_DVD_WRONG_REGION, &m_settings.dvdRegion); if (m_pnav->WMVHDOn()) { status = InitializeWMVHD(); if (RMFAILED(status)) { ReInitialize((RMnonAscii *) GUI_XML); ShowPage(m_pnav->MediaLibraryPageId()); } break; }#endif //WMV break; } case CURACAO_MESSAGE_DRM_ERROR: if (val != NULL) m_wmvHDDRMError = (*(RMuint32 *) val); else m_DRMError = 1; // no codes, just signal there was an error break;#ifdef WITH_WMVHD_SUPPORT case CURACAO_MESSAGE_DRM_OPL: m_protectType = RMWmvProtect; HandleDRMOPL((*(RMuint32 *) val)); break;#endif case CURACAO_MESSAGE_CSS_PROTECTION: m_protectType = RMCssProtect; HandleCSSProtection(); break; case CURACAO_MESSAGE_INVALID_OP: m_pnav->DisplayEvent(INVALIDOP_EVENT, TRUE, TIMER_EVENT, m_eventText, INVALIDOP_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); break; case CURACAO_MESSAGE_DISC_BLANK: m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, DISC_BLANK_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); // HandleEject(FALSE); // eject may redetects the disc... break; case CURACAO_MESSAGE_UNKNOWN_MEDIA: m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, UNKNOWN_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); // HandleEject(FALSE); // eject may redetects the disc... break; case CURACAO_MESSAGE_DRIVE_REGION: m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, DRIVE_REGION_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); // HandleEject(FALSE); break; case CURACAO_MESSAGE_FILE_ERROR: //m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, FILE_ERROR_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); // if(val != NULL && *(RMbool *)val) // HandleEject(FALSE); if(m_bTV) { printf("MISSING CHANNEL OR SERVER ERROR\n"); RMascii channel_name[256]; sprintf(channel_name, "No Signal"); m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, channel_name, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40, TRUE, PLAYER_NUMERICINPUT_TIMEOUT * 3); m_bMissingChannel = TRUE; //m_pnav->m_tvList.up = TRUE; //m_userSkipped = FALSE; //sleep(2); printf("bad channel %d current %d \n", m_pnav->m_tvList.badchannel, m_pnav->m_tvList.current); if(m_pnav->m_tvList.badchannel == -1) m_pnav->m_tvList.badchannel = m_pnav->m_tvList.current; //printf("bad channel %d\n", m_pnav->m_tvList.badchannel); // if(m_pnav->m_tvList.current == 0) // m_pnav->m_tvList.current = m_pnav->m_tvList.nbItems - 1; // else // m_pnav->m_tvList.current --; } break; case CURACAO_MESSAGE_FATAL_RESET: m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, FATALRESET_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); break; case CURACAO_MESSAGE_PLAY_MODE: { typePlayMode *playMode = (typePlayMode *) val; typeMediaPlayerSate prevplayMode;// if(BlockedKEY() && playMode->state != STATE_PLAY)// break; prevplayMode = m_playMode; m_playMode = playMode->state; switch (m_playMode) { case STATE_PLAY: // m_infoOn = FALSE; RMDBGLOG((GUIDBG, "Received PLAY MODE\n")); // make sure there's no popup left open if (ISPOPUP(m_pnav->SelectedObjectId())) ShowPopup(m_pnav->SelectedObjectId(), FALSE); if ((m_isoPlayList.active == TRUE /*&& m_isoPlayList.filetype != FILETYPE_AUDIO*/) || (m_pnav->WMVHDOn() && m_MediaList.active)) m_pnav->ShowOsd(FALSE); if (m_MediaList.active) { EndWaitCursor(); // skip Play event if first media in list and beginning playback if (m_MediaList.numCurrentItem != 0 && (prevplayMode == STATE_CLOSE || prevplayMode == STATE_STOP)) break; } // m_pnav->DisplayEvent(PLAY_EVENT, TRUE, TIMER_EVENT, m_eventText, PLAY_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); m_infoShow = m_infoOn; if (!m_bTV) { m_infoOn = 1; DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); if(m_isoPlayList.filetype != FILETYPE_AUDIO) SetTimer(TIMER_SLIDER); } else { RMascii channel_name[256]; sprintf(channel_name, "%.2d %s", (RMuint8) (m_pnav->m_tvList.items[m_pnav->m_tvList.current].number), m_pnav->m_tvList.items[m_pnav->m_tvList.current].name); m_pnav->DisplayEvent(GENERIC_EVENT, TRUE, TIMER_EVENT, TRUE, channel_name, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40, TRUE, PLAYER_NUMERICINPUT_TIMEOUT); } RestoreNonTimedEvent(); EndWaitCursor(); break; case STATE_STOP: RMDBGLOG((GUIDBG, "Received STOP MODE\n")); m_infoShow = m_infoOn; m_infoOn = 0; if(!m_bTV) DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); break; case STATE_PAUSE: if (!m_bTV) { RMDBGLOG((GUIDBG, "Received PAUSE MODE\n")); m_infoShow = m_infoOn; m_infoOn = 1; DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); m_gui.gui->KillTimer(TIMER_SLIDER, FALSE); } // m_pnav->DisplayEvent(PAUSE_EVENT, TRUE, TIMER_NONE, m_eventText, PAUSE_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); break; case STATE_STEP: if (!m_bTV) { RMDBGLOG((GUIDBG, "Received STEP MODE\n")); m_infoShow = m_infoOn; m_infoOn = 1; DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); m_gui.gui->KillTimer(TIMER_SLIDER, FALSE); } // m_pnav->DisplayEvent(STEP_EVENT, TRUE, TIMER_NONE, m_eventText, STEP_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); break; case STATE_CLOSE: RMDBGLOG((GUIDBG, "Received CLOSE MODE\n")); if (m_zoomOn) { ZoomVideo(FALSE); } // HandleMute(); if (m_context->needToExit == TRUE) break; if (m_infoOn) { m_gui.gui->KillTimer(TIMER_SLIDER, FALSE); m_infoShow = m_infoOn; m_infoOn = 0; DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); // HandleInfo(); } if (m_pnav->WMVHDOn()) { if (m_MediaList.active == TRUE) { return PlayNextMediaFile(); } } else { printf("close state\n"); if (m_isoPlayList.active == TRUE) { printf("no tv\n"); if (m_isoPlayList.previous == TRUE) status = PlayPreviousFile(m_userSkipped); else { status = PlayNextFile(m_userSkipped); } m_userSkipped = FALSE; return status; } else if (m_bTV) { printf("tv\n"); if (m_pnav->m_tvList.up) status = PlayNextFile(m_userSkipped); else status = PlayPreviousFile(m_userSkipped); m_userSkipped = FALSE; m_pnav->m_tvList.up = TRUE; } else { printf("real close\n"); RestoreOsd(); // m_pnav->DisplayEvent(STOP_EVENT, TRUE, TIMER_EVENT, m_eventText, STOP_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180, 40); } } break; case STATE_FAST_FORWARD: if (!m_bTV) { speed = *((RMint8*) playMode->val); sprintf(txt, "FWD %dX", speed); // m_pnav->DisplayEvent(FWD_EVENT, TRUE, TIMER_NONE, TRUE, txt, DISPLAY_TEXT_ON_EVENT_ARG, 8, 200, 40); m_infoOn = 1; DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); m_gui.gui->KillTimer(TIMER_SLIDER, FALSE); } break; case STATE_FAST_REWIND: if (!m_bTV) { speed = *((RMint8*) playMode->val); sprintf(txt, "REV %dX", speed); m_infoShow = m_infoOn; m_infoOn = 1; DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); m_gui.gui->KillTimer(TIMER_SLIDER, FALSE); } // m_pnav->DisplayEvent(REVERSE_EVENT, TRUE, TIMER_NONE, TRUE, txt, DISPLAY_TEXT_ON_EVENT_ARG, 8, 200, 40); break; case STATE_SLOW_FORWARD: if (!m_bTV) { speed = *((RMint8*) playMode->val); sprintf(txt, "SLOW 1/%dX", speed); m_infoShow = m_infoOn; m_infoOn = 1; DisplayFileInfo(PROGRESS_CONTROL, m_infoOn); m_gui.gui->KillTimer(TIMER_SLIDER, FALSE); } // m_pnav->DisplayEvent(SLOWFWD_EVENT, TRUE, TIMER_NONE, TRUE, txt, DISPLAY_TEXT_ON_EVENT_ARG, 8, 200, 40); break; default: return RM_ERROR; } SetfipPlayMode(); break; } case CURACAO_MESSAGE_UNSUPPORTED_MEDIA: status = m_pnav->GetCommandInfo(m_pnav->ActivePageId(), UNSUPPORTED_MEDIA_EVENT, &cmdInfo); if (RMSUCCEEDED(status)) { if (cmdInfo.validLink) m_pnav->ShowMessage(cmdInfo.linkId, TIMER_ERRORMESSAGE); } HandleEject(FALSE); break; case CURACAO_MESSAGE_DVD_WRONG_REGION:#ifdef GUI_REFID_2 HandleEject(FALSE); fprintf(stderr, "CURACAO_MESSAGE_DVD_WRONG_REGION\n"); ShowPage(m_pnav->MainPageId()); status = m_pnav->GetCommandInfo(m_pnav->ActivePageId(), INVALID_REGION_EVENT, &cmdInfo); if(RMSUCCEEDED(status)) { if(cmdInfo.validLink) { m_pnav->ShowMessage(cmdInfo.linkId, TIMER_NONE); } }#else status = m_pnav->GetCommandInfo(m_pnav->ActivePageId(), INVALID_REGION_EVENT, &cmdInfo); if (RMSUCCEEDED(status)) { if (cmdInfo.validLink) { m_pnav->ShowMessage(cmdInfo.linkId, TIMER_ERRORMESSAGE); } } HandleEject(FALSE);#endif break; case CURACAO_MESSAGE_DISPLAY_INFO: { if (m_isNeroMP4 && g_timer[TIMER_GENERIC]) { break; } // stop scrolling strings because they'll interfere with time display!! m_scrollOn = FALSE; } break; case CURACAO_MESSAGE_MEDIA_INFO: // stop scrolling strings because they'll interfere with time display!! m_scrollOn = FALSE; // printf("bfore update\n"); // RMMemcpy(&m_fileInfo, (typeCuracaoFileInfo *)val, sizeof(typeCuracaoFileInfo)); m_fileInfo.time = ((typeCuracaoFileInfo *) (val))->time;#ifdef WITH_WMVHD_SUPPORT // check wmvhd chapter repeat if (m_pnav->WMVHDOn() && m_MediaList.repeat == REPEAT_CHAPTER) { CheckWMVHDChapterRepeat(); }#endif if (m_infoOn == FALSE) break;#ifdef WITH_WMVHD_SUPPORT if (m_pnav->WMVHDOn()) { UpdateWMVHDInfo(); break; }#endif // printf("update\n"); UpdateFileInfo(&m_fileInfo); break; case CURACAO_MESSAGE_NERO_MPEG4: m_isNeroMP4 = TRUE; fipWriteScrollText("Nero Digital <tm>"); SetTimer(TIMER_GENERIC, 50); // 5 secs. break; case CURACAO_MESSAGE_DVD_SUBTITLE_CHANGE: { typeCuracaoDvdSubpicStreamAttr *attr = (typeCuracaoDvdSubpicStreamAttr *) val; RMascii lang[MAX_GUI_TEXT_VALUE]; if (attr->subpicStreamNumber == 0) RMCopyAscii(lang, OFF_STR); else { if (attr->subpicStreamAttr.isLanguage)#ifdef GUI_REFID_3 sprintf(lang, "%d - %c%c", attr->subpicStreamNumber, (RMascii)(HIBYTE(attr->subpicStreamAttr.languageCode) - 32), (RMascii)LOBYTE(attr->subpicStreamAttr.languageCode) - 32);#else sprintf(lang, "%c%c", (RMascii) (HIBYTE(attr->subpicStreamAttr.languageCode) - 32), (RMascii) LOBYTE(attr->subpicStreamAttr.languageCode) - 32);#endif else sprintf(lang, "%02d", attr->subpicStreamNumber); } m_pnav->DisplayEvent(SUBTITLECHANGE_EVENT, TRUE, TIMER_EVENT, TRUE, lang, DISPLAY_TEXT_ON_EVENT_ARG2, 8, 90, 40); break; } case CURACAO_MESSAGE_DVD_AUDIOSTREAM_CHANGE: { typeCuracaoDvdAudioStreamAttr *attr = (typeCuracaoDvdAudioStreamAttr *) val; RMascii lang[MAX_GUI_TEXT_VALUE], dircomm[MAX_GUI_TEXT_VALUE]; RMuint8 channels, sub; RMMemset(dircomm, 0, sizeof(dircomm)); channels = attr->audioStreamAttr.numberOfChannels; channels = (channels == 0 || channels == 1) ? channels + 1 : channels; sub = (RMuint8) (channels == attr->audioStreamAttr.numberOfChannels); // see if there are director comments if (attr->audioStreamAttr.languageCodeExtension == 3 || attr->audioStreamAttr.languageCodeExtension == 4) RMCopyAscii(dircomm, "Com."); if (attr->audioStreamAttr.isLanguage)#ifdef GUI_REFID_3 sprintf(lang, "%d - %c%c %d.%d %s", attr->audioStreamNumber, (RMascii)(HIBYTE(attr->audioStreamAttr.languageCode) - 32), (RMascii)LOBYTE(attr->audioStreamAttr.languageCode) - 32, channels, sub, dircomm);#else sprintf(lang, "%c%c %d.%d %s", (RMascii) (HIBYTE(attr->audioStreamAttr.languageCode) - 32), (RMascii) LOBYTE(attr->audioStreamAttr.languageCode) - 32, channels, sub, dircomm);#endif else sprintf(lang, "%02d %d.%d %s", attr->audioStreamNumber, channels, sub, dircomm); m_pnav->DisplayEvent(AUDIOCHANGE_EVENT, TRUE, TIMER_EVENT, TRUE, lang, DISPLAY_TEXT_ON_EVENT_ARG3, 8, 130, 40, FALSE); break; } case CURACAO_MESSAGE_DVD_ANGLE_CHANGE: { RMascii angle[2]; sprintf(angle, "%d", (RMascii) (*(RMuint8 *) val)); m_pnav->DisplayEvent(ANGLECHANGE_EVENT, TRUE, TIMER_EVENT, TRUE, angle, DISPLAY_TEXT_ON_EVENT_ARG2, 8, 90, 40); break; } case CURACAO_MESSAGE_REPEAT_RANDOM: m_pnav->DisplayEvent(REPEATRANDOM_EVENT, TRUE, TIMER_EVENT, m_eventText, REPEAT_RANDOM_STR, DISPLAY_TEXT_ON_EVENT_ARG, 8, 180,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -