bool CGUIWindowFullScreen::OnMouse(const CPoint &point) { if (g_Mouse.bClick[MOUSE_RIGHT_BUTTON]) { // no control found to absorb this click - go back to GUI CAction action; action.wID = ACTION_SHOW_GUI; OnAction(action); return true; } if (g_Mouse.bClick[MOUSE_LEFT_BUTTON]) { // no control found to absorb this click - pause video CAction action; action.wID = ACTION_PAUSE; return g_application.OnAction(action); } if (g_Mouse.HasMoved()) { // movement - toggle the OSD CGUIWindowOSD *pOSD = (CGUIWindowOSD *)m_gWindowManager.GetWindow(WINDOW_OSD); if (pOSD) { pOSD->SetAutoClose(3000); pOSD->DoModal(); } } return true; }
bool CGUIWindowFullScreen::OnAction(const CAction &action) { if (g_application.m_pPlayer != NULL && g_application.m_pPlayer->OnAction(action)) return true; switch (action.wID) { case ACTION_SHOW_GUI: { // switch back to the menu OutputDebugString("Switching to GUI\n"); m_gWindowManager.PreviousWindow(); OutputDebugString("Now in GUI\n"); return true; } break; case ACTION_STEP_BACK: Seek(false, false); return true; break; case ACTION_STEP_FORWARD: Seek(true, false); return true; break; case ACTION_BIG_STEP_BACK: SeekChapter(g_application.m_pPlayer->GetChapter() - 1); return true; break; case ACTION_BIG_STEP_FORWARD: SeekChapter(g_application.m_pPlayer->GetChapter() + 1); return true; break; case ACTION_NEXT_SCENE: if (g_application.m_pPlayer->SeekScene(true)) g_infoManager.SetDisplayAfterSeek(); return true; break; case ACTION_PREV_SCENE: if (g_application.m_pPlayer->SeekScene(false)) g_infoManager.SetDisplayAfterSeek(); return true; break; case ACTION_SHOW_OSD_TIME: m_bShowCurrentTime = !m_bShowCurrentTime; if(!m_bShowCurrentTime) g_infoManager.SetDisplayAfterSeek(0); //Force display off g_infoManager.SetShowTime(m_bShowCurrentTime); return true; break; case ACTION_SHOW_OSD: // Show the OSD { CGUIWindowOSD *pOSD = (CGUIWindowOSD *)m_gWindowManager.GetWindow(WINDOW_OSD); if (pOSD) pOSD->DoModal(); return true; } break; case ACTION_SHOW_SUBTITLES: { g_application.m_pPlayer->SetSubtitleVisible(!g_application.m_pPlayer->GetSubtitleVisible()); } return true; break; case ACTION_NEXT_SUBTITLE: { if (g_application.m_pPlayer->GetSubtitleCount() == 1) return true; g_stSettings.m_currentVideoSettings.m_SubtitleStream++; if (g_stSettings.m_currentVideoSettings.m_SubtitleStream >= g_application.m_pPlayer->GetSubtitleCount()) g_stSettings.m_currentVideoSettings.m_SubtitleStream = 0; g_application.m_pPlayer->SetSubtitle(g_stSettings.m_currentVideoSettings.m_SubtitleStream); return true; } return true; break; case ACTION_SUBTITLE_DELAY_MIN: g_stSettings.m_currentVideoSettings.m_SubtitleDelay -= 0.1f; if (g_stSettings.m_currentVideoSettings.m_SubtitleDelay < -g_advancedSettings.m_videoSubsDelayRange) g_stSettings.m_currentVideoSettings.m_SubtitleDelay = -g_advancedSettings.m_videoSubsDelayRange; if (g_application.m_pPlayer) g_application.m_pPlayer->SetSubTitleDelay(g_stSettings.m_currentVideoSettings.m_SubtitleDelay); return true; break; case ACTION_SUBTITLE_DELAY_PLUS: g_stSettings.m_currentVideoSettings.m_SubtitleDelay += 0.1f; if (g_stSettings.m_currentVideoSettings.m_SubtitleDelay > g_advancedSettings.m_videoSubsDelayRange) g_stSettings.m_currentVideoSettings.m_SubtitleDelay = g_advancedSettings.m_videoSubsDelayRange; if (g_application.m_pPlayer) g_application.m_pPlayer->SetSubTitleDelay(g_stSettings.m_currentVideoSettings.m_SubtitleDelay); return true; break; case ACTION_AUDIO_DELAY_MIN: g_stSettings.m_currentVideoSettings.m_AudioDelay -= 0.1f; if (g_stSettings.m_currentVideoSettings.m_AudioDelay < -g_advancedSettings.m_videoAudioDelayRange) g_stSettings.m_currentVideoSettings.m_AudioDelay = -g_advancedSettings.m_videoAudioDelayRange; if (g_application.m_pPlayer) g_application.m_pPlayer->SetAVDelay(g_stSettings.m_currentVideoSettings.m_AudioDelay); return true; break; case ACTION_AUDIO_DELAY_PLUS: g_stSettings.m_currentVideoSettings.m_AudioDelay += 0.1f; if (g_stSettings.m_currentVideoSettings.m_AudioDelay > g_advancedSettings.m_videoAudioDelayRange) g_stSettings.m_currentVideoSettings.m_AudioDelay = g_advancedSettings.m_videoAudioDelayRange; if (g_application.m_pPlayer) g_application.m_pPlayer->SetAVDelay(g_stSettings.m_currentVideoSettings.m_AudioDelay); return true; break; case ACTION_AUDIO_NEXT_LANGUAGE: if (g_application.m_pPlayer->GetAudioStreamCount() == 1) return true; g_stSettings.m_currentVideoSettings.m_AudioStream++; if (g_stSettings.m_currentVideoSettings.m_AudioStream >= g_application.m_pPlayer->GetAudioStreamCount()) g_stSettings.m_currentVideoSettings.m_AudioStream = 0; g_application.m_pPlayer->SetAudioStream(g_stSettings.m_currentVideoSettings.m_AudioStream); // Set the audio stream to the one selected return true; break; case REMOTE_0: case REMOTE_1: case REMOTE_2: case REMOTE_3: case REMOTE_4: case REMOTE_5: case REMOTE_6: case REMOTE_7: case REMOTE_8: case REMOTE_9: ChangetheTimeCode(action.wID); return true; break; case ACTION_ASPECT_RATIO: { // toggle the aspect ratio mode (only if the info is onscreen) if (m_bShowViewModeInfo) { #ifdef HAS_VIDEO_PLAYBACK g_renderManager.SetViewMode(++g_stSettings.m_currentVideoSettings.m_ViewMode); #endif } m_bShowViewModeInfo = true; m_dwShowViewModeTimeout = timeGetTime(); } return true; break; case ACTION_SMALL_STEP_BACK: { int orgpos = (int)g_application.GetTime(); int triesleft = g_advancedSettings.m_videoSmallStepBackTries; int jumpsize = g_advancedSettings.m_videoSmallStepBackSeconds; // secs int setpos = (orgpos > jumpsize) ? orgpos - jumpsize : 0; // First jump = 2*jumpsize int newpos; do { setpos = (setpos > jumpsize) ? setpos - jumpsize : 0; g_application.SeekTime((double)setpos); Sleep(g_advancedSettings.m_videoSmallStepBackDelay); // delay to let mplayer finish its seek (in ms) newpos = (int)g_application.GetTime(); } while ( (newpos > orgpos - jumpsize) && (setpos > 0) && (--triesleft > 0)); //Make sure gui items are visible g_infoManager.SetDisplayAfterSeek(); } return true; break; } return CGUIWindow::OnAction(action); }