public void JumpToPlaylistSubItem(PlaylistSubItem subItem) { bool doJump = false; if (subItem != null && subItem.Parent != null) { if (subItem.Parent != pnlScreens.PlaylistScreen.GetActivePlaylistItem()) { if (pnlScreens.PlaylistScreen.JumpToPlaylistItem(subItem.Parent)) { Stop(true); doJump = true; } } else { doJump = true; } if (doJump) { string strFile = pnlScreens.PlaylistScreen.GetActiveFile(); if (!string.IsNullOrEmpty(strFile)) { PlayFile(strFile, subItem); } else { PlayFile(subItem.ParentMediaPath, subItem); } } } }
internal void PlayFile(string strFile, PlaylistSubItem subItem) { if (!string.IsNullOrEmpty(strFile)) { if (subItem == null && MediaRenderer.DefaultInstance.FilterState != FilterState.Stopped) { Stop(false); } bool isVideoFile = false; bool isDVDVolume = false; string name = string.Empty; DvdMedia dvdDrive = DvdMedia.FromPath(strFile); if (dvdDrive != null) { isDVDVolume = true; name = dvdDrive.ToString(); if (subItem != null && subItem.StartHint != null) { name += Translator.Translate("TXT_PLAY_FROM", subItem.StartHint); } } else { MediaFileInfo mfi = MediaFileInfo.FromPath(strFile); isVideoFile = MediaRenderer.SupportedVideoTypes.Contains(mfi.MediaType); // PlaylistItem pli = pnlScreens.PlaylistScreen.GetActivePlaylistItem(); if (pli != null) { name = pli.DisplayName; } else { name = mfi.Name; } } if (isDVDVolume) { Logger.LogTrace("Played media appears to be a DVD volume ..."); } else if (isVideoFile) { Logger.LogTrace("Played media appears to be a video file ..."); } else { Logger.LogTrace("Played media appears to be an audio file..."); } if (isVideoFile || isDVDVolume) { ShowRenderingRegion(); } else { HideRenderingRegion(); } if (NotifyMediaStateChanged != null) { NotifyMediaStateChanged(isVideoFile || isDVDVolume); } MediaRenderer.DefaultInstance.SetRenderFile(strFile); bool rendererStarted = false; if (subItem != null && subItem.StartHint != null) { MediaRenderer.DefaultInstance.StartRendererWithHint(subItem.StartHint); rendererStarted = true; } if (!rendererStarted) { MediaRenderer.DefaultInstance.StartRenderer(); } if (MediaRenderer.DefaultInstance.HasRenderingErrors == false) { if (_renderingFrame != null && (isVideoFile || isDVDVolume)) { if (!_renderingFrame.Visible) { _renderingFrame.Show(); } } SetVolume(pnlRendering.ProjectedVolume); if (subItem != null && subItem.StartHint != null) { NotifyGUI("TXT_OSD_PLAY", subItem); } else { NotifyGUI("TXT_OSD_PLAY", name); } if (isVideoFile) { if (_delayedSubtitleLookupTimer == null) { _delayedSubtitleLookupTimer = new System.Windows.Forms.Timer(); _delayedSubtitleLookupTimer.Interval = 1000; _delayedSubtitleLookupTimer.Tick += new EventHandler(_delayedSubtitleLookupTimer_Tick); } _delayedSubtitleLookupTimer.Start(); } } else { HideRenderingRegion(); } } }
public void HandlePlaylistItemMenuClick(object sender, EventArgs e) { OPMToolStripMenuItem senderMenu = (sender as OPMToolStripMenuItem); if (senderMenu != null) { try { senderMenu.Enabled = false; if (senderMenu.Tag != null) { if (senderMenu.Tag is PlaylistSubItem) { if (senderMenu.Tag is DvdSubItem) { DvdSubItem si = senderMenu.Tag as DvdSubItem; DvdRenderingStartHint hint = (si != null) ? si.StartHint as DvdRenderingStartHint : null; if (hint != null && hint.IsSubtitleHint) { MediaRenderer.DefaultInstance.SubtitleStream = hint.SID; return; } } if (senderMenu.Tag is AudioCdSubItem) { CDAFileInfo cdfi = (senderMenu.Tag as AudioCdSubItem).Parent.MediaFileInfo as CDAFileInfo; if (cdfi != null) { cdfi.RefreshDisk(); EventDispatch.DispatchEvent(LocalEventNames.UpdatePlaylistNames, true); } } else { PlaylistSubItem psi = senderMenu.Tag as PlaylistSubItem; if (psi != null && psi.StartHint != null) { JumpToPlaylistSubItem(senderMenu.Tag as PlaylistSubItem); } } } else if (senderMenu.Tag is PlaylistItem) { JumpToPlaylistItem(senderMenu.Tag as PlaylistItem); } else { ShortcutMapper.DispatchCommand((OPMShortcut)senderMenu.Tag); } } } finally { senderMenu.Enabled = true; } } }