예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
        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();
                }
            }
        }
예제 #3
0
        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;
                }
            }
        }