protected override void OnClicked(int controlId, GUIControl control, Action.ActionType actionType) { base.OnClicked(controlId, control, actionType); if (control == btnSavedPlaylists) { OnShowSavedPlaylists(m_strPlayListPath); } if (control == btnPlayDVD) { ISelectDVDHandler selectDVDHandler; if (GlobalServiceProvider.IsRegistered <ISelectDVDHandler>()) { selectDVDHandler = GlobalServiceProvider.Get <ISelectDVDHandler>(); } else { selectDVDHandler = new SelectDVDHandler(); GlobalServiceProvider.Add <ISelectDVDHandler>(selectDVDHandler); } string dvdToPlay = selectDVDHandler.ShowSelectDVDDialog(GetID); if (dvdToPlay != null) { OnPlayDVD(dvdToPlay, GetID); } return; } }
protected void OnPlayBD(String drive, int parentId) { ISelectBDHandler selectBDHandler; if (GlobalServiceProvider.IsRegistered <ISelectBDHandler>()) { selectBDHandler = GlobalServiceProvider.Get <ISelectBDHandler>(); } else { selectBDHandler = new SelectBDHandler(); GlobalServiceProvider.Add <ISelectBDHandler>(selectBDHandler); } selectBDHandler.OnPlayBD(drive, GetID); }
protected override void OnClicked(int controlId, GUIControl control, Action.ActionType actionType) { base.OnClicked(controlId, control, actionType); if (control == btnSavedPlaylists) { OnShowSavedPlaylists(m_strPlayListPath); } if (control == btnPlayDVD) { ISelectDVDHandler selectDVDHandler; if (GlobalServiceProvider.IsRegistered <ISelectDVDHandler>()) { selectDVDHandler = GlobalServiceProvider.Get <ISelectDVDHandler>(); } else { selectDVDHandler = new SelectDVDHandler(); GlobalServiceProvider.Add <ISelectDVDHandler>(selectDVDHandler); } string dvdToPlay = selectDVDHandler.ShowSelectDVDDialog(GetID); if (dvdToPlay != null) { OnPlayDVD(dvdToPlay, GetID); } return; } if (control == btnScanNew) { // Check Internet connection if (!Win32API.IsConnectedToInternet()) { GUIDialogOK dlgOk = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); dlgOk.SetHeading(257); dlgOk.SetLine(1, GUILocalizeStrings.Get(703)); dlgOk.DoModal(GUIWindowManager.ActiveWindow); return; } OnSearchNew(); } }
public override bool OnMessage(GUIMessage message) { Log.Info("DVDFullscreen: Message: {0}", message.Message.ToString()); if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_INIT) { if (!bINIT_from_MyVideosFullScreen) { //if viz is on, this hides the DVD select dialog: GUIWindowManager.ReplaceWindow((int)GUIWindow.Window.WINDOW_FULLSCREEN_VIDEO); ISelectDVDHandler selectDVDHandler; if (GlobalServiceProvider.IsRegistered <ISelectDVDHandler>()) { selectDVDHandler = GlobalServiceProvider.Get <ISelectDVDHandler>(); } else { selectDVDHandler = new SelectDVDHandler(); GlobalServiceProvider.Add <ISelectDVDHandler>(selectDVDHandler); } string dvdToPlay = selectDVDHandler.ShowSelectDVDDialog(GetID); if (dvdToPlay == null || !selectDVDHandler.OnPlayDVD(dvdToPlay, GetID)) { Log.Info("DVDFullscreen: Returning from DVD screen"); GUIWindowManager.ShowPreviousWindow(); /*GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT, this.GetID, 0, 0, GetID, 0, null); * return this.OnMessage(msg); // Send a de-init msg*/ } else { g_Player.ShowFullScreenWindow(); bINIT_from_MyVideosFullScreen = true; } } else { bINIT_from_MyVideosFullScreen = false; Log.Info("DVDFullscreen: Returning from DVD screen"); GUIWindowManager.ShowPreviousWindow(); } return(true); } return(base.OnMessage(message)); }
private void bttnClearBlaclistedThumbs_Click(object sender, EventArgs e) { IVideoThumbBlacklist blacklist; if (GlobalServiceProvider.IsRegistered <IVideoThumbBlacklist>()) { blacklist = GlobalServiceProvider.Get <IVideoThumbBlacklist>(); } else { blacklist = new VideoThumbBlacklistDBImpl(); GlobalServiceProvider.Add <IVideoThumbBlacklist>(blacklist); } if (blacklist != null) { blacklist.Clear(); } }
private void ClearBlacklistedThumbs() { IVideoThumbBlacklist blacklist; if (GlobalServiceProvider.IsRegistered <IVideoThumbBlacklist>()) { blacklist = GlobalServiceProvider.Get <IVideoThumbBlacklist>(); } else { blacklist = new VideoThumbBlacklistDBImpl(); GlobalServiceProvider.Add <IVideoThumbBlacklist>(blacklist); } if (blacklist != null) { blacklist.Clear(); } }
protected override void OnPageLoad() { GUIWindowManager.ShowPreviousWindow(); ISelectDVDHandler selectDVDHandler; if (GlobalServiceProvider.IsRegistered <ISelectDVDHandler>()) { selectDVDHandler = GlobalServiceProvider.Get <ISelectDVDHandler>(); } else { selectDVDHandler = new SelectDVDHandler(); GlobalServiceProvider.Add <ISelectDVDHandler>(selectDVDHandler); } string dvdToPlay = selectDVDHandler.ShowSelectDriveDialog(GetID, false); if (!String.IsNullOrEmpty(dvdToPlay) && !g_Player.CurrentFile.StartsWith(dvdToPlay)) { MediaPortal.Ripper.AutoPlay.ExamineCD(dvdToPlay, true); } }
// Changed - cover for movies with the same name public void SetIMDBThumbs(IList items, bool markWatchedFiles) { try { GUIListItem pItem; ISelectBDHandler selectBdHandler; bool dedicatedMovieFolderChecked = false; bool isDedicatedMovieFolder = false; if (GlobalServiceProvider.IsRegistered <ISelectBDHandler>()) { selectBdHandler = GlobalServiceProvider.Get <ISelectBDHandler>(); } else { selectBdHandler = new SelectBDHandler(); GlobalServiceProvider.Add <ISelectBDHandler>(selectBdHandler); } for (int x = 0; x < items.Count; x++) { string strThumb = string.Empty; pItem = (GUIListItem)items[x]; string file = string.Empty; bool isFolderPinProtected = (pItem.IsFolder && IsFolderPinProtected(pItem.Path)); IMDBMovie movie = pItem.AlbumInfoTag as IMDBMovie; if (movie == null) { IMDBMovie.SetMovieData(pItem); movie = pItem.AlbumInfoTag as IMDBMovie; } // Check for everymovieinitsownfolder only once for all items (defined share is the same for all) if (!dedicatedMovieFolderChecked && !string.IsNullOrEmpty(pItem.Path)) { if (!pItem.IsRemote && !VirtualDirectories.Instance.Movies.IsRootShare(pItem.Path)) { dedicatedMovieFolderChecked = true; isDedicatedMovieFolder = Util.Utils.IsFolderDedicatedMovieFolder(pItem.Path); } } // Skip DVD & BD backup folder if (pItem.IsFolder && !pItem.IsBdDvdFolder) { if (pItem.Label == "..") { continue; } if (isFolderPinProtected) { // hide maybe rated content Util.Utils.SetDefaultIcons(pItem); continue; } // If this is enabled you'll see the thumb of the first movie in that dir - but if you put serveral movies into that dir you'll be irritated... if (!pItem.IsRemote && isDedicatedMovieFolder) { string[] strFiles = null; try { strFiles = Directory.GetFiles(pItem.Path); } catch (Exception) { } if (strFiles != null) { for (int i = 0; i < strFiles.Length; ++i) { string extension = Path.GetExtension(strFiles[i]); if (VirtualDirectory.IsImageFile(extension)) { if (DaemonTools.IsEnabled) { file = strFiles[i]; break; } continue; } if (VirtualDirectory.IsValidExtension(strFiles[i], Util.Utils.VideoExtensions, false)) { // Skip hidden files if ((File.GetAttributes(strFiles[i]) & FileAttributes.Hidden) == FileAttributes.Hidden) { continue; } file = strFiles[i]; break; } } } } } // Check for DVD folder else if (pItem.IsBdDvdFolder && IsDvdDirectory(pItem.Path)) { file = GetFolderVideoFile(pItem.Path); } // Check for BD folder else if (pItem.IsBdDvdFolder && selectBdHandler.IsBDDirectory(pItem.Path)) { file = selectBdHandler.GetFolderVideoFile(pItem.Path); } else if (!pItem.IsFolder || (pItem.IsFolder && VirtualDirectory.IsImageFile(Path.GetExtension(pItem.Path).ToLower()))) { file = pItem.Path; } else { continue; } if (!string.IsNullOrEmpty(file)) { int id = movie.ID; // Set thumb for movies if (id > 0 && !movie.IsEmpty) { if (Util.Utils.IsDVD(pItem.Path)) { pItem.Label = String.Format("({0}:) {1}", pItem.Path.Substring(0, 1), movie.Title); } string titleExt = movie.Title + "{" + id + "}"; strThumb = Util.Utils.GetCoverArt(Thumbs.MovieTitle, titleExt); } if (!Util.Utils.FileExistsInCache(strThumb) || string.IsNullOrEmpty(strThumb)) { string fPic = string.Empty; string fPicTbn = string.Empty; string path = pItem.Path; Util.Utils.RemoveStackEndings(ref path); Util.Utils.RemoveStackEndings(ref file); string jpgExt = ".jpg"; string tbnExt = ".tbn"; string folderJpg = @"\folder.jpg"; if (pItem.IsBdDvdFolder) { fPic = string.Concat(pItem.Path, @"\", Path.GetFileNameWithoutExtension(path), jpgExt); fPicTbn = string.Concat(pItem.Path, @"\", Path.GetFileNameWithoutExtension(path), tbnExt); } else { fPic = Path.ChangeExtension(file, jpgExt); fPicTbn = Path.ChangeExtension(file, tbnExt); } if (File.Exists(fPic)) { strThumb = fPic; } else if (File.Exists(fPicTbn)) { strThumb = fPicTbn; } else { if (!pItem.IsFolder && isDedicatedMovieFolder) { fPic = Path.GetDirectoryName(pItem.Path) + folderJpg; if (File.Exists(fPic)) { strThumb = fPic; } else { continue; } } else { continue; } } } pItem.ThumbnailImage = strThumb; pItem.IconImageBig = strThumb; pItem.IconImage = strThumb; strThumb = Util.Utils.ConvertToLargeCoverArt(strThumb); if (Util.Utils.FileExistsInCache(strThumb)) { pItem.ThumbnailImage = strThumb; } movie = null; } // <-- file == empty } // of for (int x = 0; x < items.Count; ++x) } catch (ThreadAbortException) { // Will be logged in thread main code } catch (Exception ex) { Log.Error("SelectDVDHandler: SetIMDbThumbs: {0}", ex.Message); } }
/// <summary> /// Examines the current playing movie and fills in all the properties for the skin. /// For movies it will look in the video database for any IMDB info /// For record TV programs it will look in the TVDatabase for recording info /// </summary> /// <param name="fileName">Filename of the current playing movie</param> /// <remarks> /// Function will fill in the following properties for TV programs /// #Play.Current.Title, #Play.Current.Plot, #Play.Current.PlotOutline #Play.Current.File, #Play.Current.Thumb, #Play.Current.Year, #Play.Current.Channel, /// /// Function will fill in the following properties for movies /// #Play.Current.Title, #Play.Current.Plot, #Play.Current.PlotOutline #Play.Current.File, #Play.Current.Thumb, #Play.Current.Year /// #Play.Current.Director, #cast, #dvdlabel, #imdbnumber, #Play.Current.Plot, #Play.Current.PlotOutline, #rating, #tagline, #votes, #credits /// </remarks> private void SetCurrentFile(string fileName) { // Clear all player properties and the audio / video properties GUIPropertyManager.RemovePlayerProperties(); GUIPropertyManager.SetProperty("#Play.Current.VideoCodec.Texture", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.VideoResolution", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.AudioCodec.Texture", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.AudioChannels", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.HasSubtitles", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.AspectRatio", string.Empty); // Preset title and file GUIPropertyManager.SetProperty("#Play.Current.Title", Util.Utils.GetFilename(fileName)); GUIPropertyManager.SetProperty("#Play.Current.File", Util.Utils.GetFileNameWithExtension(fileName)); // Set audio / video properties if ((g_Player.IsVideo || g_Player.IsDVD) && !g_Player.IsTV && g_Player.MediaInfo != null) { GUIPropertyManager.SetProperty("#Play.Current.VideoCodec.Texture", Util.Utils.MakeFileName(g_Player.MediaInfo.VideoCodec)); GUIPropertyManager.SetProperty("#Play.Current.VideoResolution", g_Player.MediaInfo.VideoResolution); GUIPropertyManager.SetProperty("#Play.Current.AudioCodec.Texture", Util.Utils.MakeFileName(g_Player.MediaInfo.AudioCodec)); GUIPropertyManager.SetProperty("#Play.Current.AudioChannels", g_Player.MediaInfo.AudioChannelsFriendly); GUIPropertyManager.SetProperty("#Play.Current.HasSubtitles", g_Player.MediaInfo.HasSubtitles.ToString()); GUIPropertyManager.SetProperty("#Play.Current.AspectRatio", g_Player.MediaInfo.AspectRatio); } // Set the properties and thumb path for movies played with the tv plugin if (g_Player.IsTVRecording) { // Set the thumb path to the tv recorded thumbs cache or to the channel logo string thumb = string.Format("{0}\\{1}{2}", Thumbs.TVRecorded, Path.ChangeExtension(Util.Utils.SplitFilename(g_Player.currentFileName), null), Util.Utils.GetThumbExtension()); if (!Util.Utils.FileExistsInCache(thumb)) { thumb = Util.Utils.GetCoverArt(Thumbs.TVChannel, GUIPropertyManager.GetProperty("#TV.RecordedTV.Channel")); } GUIPropertyManager.SetProperty("#Play.Current.Thumb", thumb); // Set the properties to the #TV.Recorded properties GUIPropertyManager.SetProperty("#Play.Current.Title", GUIPropertyManager.GetProperty("#TV.RecordedTV.Title")); GUIPropertyManager.SetProperty("#Play.Current.Plot", GUIPropertyManager.GetProperty("#TV.RecordedTV.Description")); GUIPropertyManager.SetProperty("#Play.Current.Genre", GUIPropertyManager.GetProperty("#TV.RecordedTV.Genre")); GUIPropertyManager.SetProperty("#Play.Current.Channel", GUIPropertyManager.GetProperty("#TV.RecordedTV.Channel")); return; } // Set title and file for DVD if (g_Player.IsDVD) { // for dvd's the file is in the form c:\media\movies\the matrix\video_ts\video_ts.ifo // first strip the \video_ts\video_ts.ifo string lowPath = fileName.ToLowerInvariant(); int index = lowPath.IndexOf("video_ts/"); if (index < 0) { index = lowPath.IndexOf(@"video_ts\"); } if (index >= 0) { fileName = fileName.Substring(0, index); fileName = Util.Utils.RemoveTrailingSlash(fileName); // get the name by stripping the first part : c:\media\movies string strName = fileName; int pos = fileName.LastIndexOfAny(new char[] { '\\', '/' }); if (pos >= 0 && pos + 1 < fileName.Length - 1) { strName = fileName.Substring(pos + 1); } // get the name when play DVD directly from Drive letter List <GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt(); for (int i = rootDrives.Count - 1; i >= 0; i--) { GUIListItem itemDVDroot = (GUIListItem)rootDrives[i]; string itemDVD = Path.GetPathRoot(itemDVDroot.Path); itemDVD = Util.Utils.RemoveTrailingSlash(itemDVD); if (itemDVD == strName && !String.IsNullOrEmpty(itemDVDroot.DVDLabel)) //cd or dvd drive { strName = itemDVDroot.DVDLabel; } } GUIPropertyManager.SetProperty("#Play.Current.Title", strName); GUIPropertyManager.SetProperty("#Play.Current.File", strName); // construct full filename as imdb info is stored... fileName += @"\VIDEO_TS\VIDEO_TS.IFO"; } } // Get the BD handler ISelectBDHandler selectBdHandler; if (GlobalServiceProvider.IsRegistered <ISelectBDHandler>()) { selectBdHandler = GlobalServiceProvider.Get <ISelectBDHandler>(); } else { selectBdHandler = new SelectBDHandler(); GlobalServiceProvider.Add <ISelectBDHandler>(selectBdHandler); } // Adapt filename for image files if (Util.Utils.IsISOImage(fileName)) { fileName = DaemonTools.MountedIsoFile; } // ------------------------------------------------------- // Try to set the properties and the thumb path in 5 steps bool movieInfoFound = false; bool thumbInfoFound = false; // Step 1 ------------------------------- ------------------------- // Try to set the properties and thumb path from the video database IMDBMovie movie = new IMDBMovie(); string name = fileName; if (fileName.ToLowerInvariant().Contains(".mpls")) // BD folder title check (playlist) { int index = fileName.ToLowerInvariant().LastIndexOf(@"\playlist"); name = fileName.Remove(index) + @"\index.bdmv"; } if (VideoDatabase.HasMovieInfo(name)) { // Set the properties (incuding cover thumb) from the movie info VideoDatabase.GetMovieInfo(name, ref movie); if (movie.ThumbURL.ToLowerInvariant().StartsWith("file://")) { movie.ThumbURL = movie.ThumbURL.Substring(7); } movie.SetPlayProperties(true); movieInfoFound = true; if (!string.IsNullOrEmpty(movie.ThumbURL)) { thumbInfoFound = true; return; } } // Step 2 -------------------------------------------------------- // Try to set the properties and the thumb path from the .nfo file string path = string.Empty; int pathIndex = 0; if (fileName.ToUpperInvariant().Contains(@"\BDMV")) { pathIndex = fileName.ToUpperInvariant().LastIndexOf(@"\BDMV"); path = fileName.Remove(pathIndex); } else if (fileName.ToUpperInvariant().Contains(@"\VIDEO_TS\")) { pathIndex = fileName.ToUpperInvariant().LastIndexOf(@"\VIDEO_TS\"); path = fileName.Remove(pathIndex); } else if (!String.IsNullOrEmpty(fileName)) { path = Path.GetDirectoryName(fileName); } IMDBMovie.FetchMovieNfo(path, fileName, ref movie); if (!movie.IsEmpty) { // Set the properties (incuding cover thumb) from the .nfo file movie.SetPlayProperties(true); movieInfoFound = true; if (!string.IsNullOrEmpty(movie.ThumbURL)) { thumbInfoFound = true; return; } } // Step 3 ------------------------------------- // Try to set the properties from the .xml file if (File.Exists(Path.ChangeExtension(fileName, ".xml"))) { MatroskaTagInfo info = MatroskaTagHandler.Fetch(Path.ChangeExtension(fileName, ".xml")); if (info != null) { // Set properties from the .xml file movieInfoFound = true; movie.Title = info.Title; movie.Plot = info.Description; movie.Genre = info.Genre; if (thumbInfoFound) { // take previously found thumb movie.ThumbURL = GUIPropertyManager.GetProperty("#Play.Current.Thumb"); } else { // take channel logo (better than nothing, but do not set thumbInfoFound) movie.ThumbURL = Util.Utils.GetCoverArt(Thumbs.TVChannel, info.ChannelName); } movie.SetPlayProperties(true); GUIPropertyManager.SetProperty("#Play.Current.Channel", info.ChannelName); } } // Step 4 ------------------------------------------------------------ // If nothing else helps, try to set the thumb path from the file name if (!thumbInfoFound) { GUIListItem item = new GUIListItem(); item.IsFolder = false; item.Path = fileName; Util.Utils.SetThumbnails(ref item); if (!string.IsNullOrEmpty(item.ThumbnailImage)) { GUIPropertyManager.SetProperty("#Play.Current.Thumb", item.ThumbnailImage); } } // Step 5 -------------------------------- // All is done if the movie info was found if (movieInfoFound) { return; } // Fallback ---------------------------------------------- // If no movie info could be found, set at least the title if (!movieInfoFound && g_Player.IsTV && g_Player.IsTimeShifting) { // Set the title for live TV GUIPropertyManager.SetProperty("#Play.Current.Title", GUIPropertyManager.GetProperty("#TV.View.title")); return; } if (!movieInfoFound && VirtualDirectory.IsImageFile(Path.GetExtension(fileName))) { // Set the title for images string title = Util.Utils.GetFilename(fileName, true); GUIPropertyManager.SetProperty("#Play.Current.Title", title); return; } if (fileName.ToLowerInvariant().Contains("index.bdmv")) { // Set the title for BDs string title = selectBdHandler.GetDiscTitle(fileName); if (String.IsNullOrEmpty(title)) { // get the name when play BD directly from Drive letter List <GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt(); title = Path.GetPathRoot(fileName); title = Util.Utils.RemoveTrailingSlash(title); for (int i = rootDrives.Count - 1; i >= 0; i--) { GUIListItem itemBDroot = (GUIListItem)rootDrives[i]; string itemBD = Path.GetPathRoot(itemBDroot.Path); itemBD = Util.Utils.RemoveTrailingSlash(itemBD); if (itemBD == title && !String.IsNullOrEmpty(itemBDroot.DVDLabel)) { title = itemBDroot.DVDLabel; } } } GUIPropertyManager.SetProperty("#Play.Current.Title", title); } else if (fileName.ToLowerInvariant().Contains(".mpls")) { // Set the title for BD playlist string title = selectBdHandler.GetDiscTitle(fileName); if (String.IsNullOrEmpty(title)) { // get the name when play BD directly from Drive letter List <GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt(); title = Path.GetPathRoot(fileName); title = Util.Utils.RemoveTrailingSlash(title); for (int i = rootDrives.Count - 1; i >= 0; i--) { GUIListItem itemBDroot = (GUIListItem)rootDrives[i]; string itemBD = Path.GetPathRoot(itemBDroot.Path); itemBD = Util.Utils.RemoveTrailingSlash(itemBD); if (itemBD == title && !String.IsNullOrEmpty(itemBDroot.DVDLabel)) { title = itemBDroot.DVDLabel; } } } GUIPropertyManager.SetProperty("#Play.Current.Title", title); } }
/// <summary> /// Examines the current playing movie and fills in all the #tags for the skin. /// For movies it will look in the video database for any IMDB info /// For record TV programs it will look in the TVDatabase for recording info /// </summary> /// <param name="fileName">Filename of the current playing movie</param> /// <remarks> /// Function will fill in the following tags for TV programs /// #Play.Current.Title, #Play.Current.Plot, #Play.Current.PlotOutline #Play.Current.File, #Play.Current.Thumb, #Play.Current.Year, #Play.Current.Channel, /// /// Function will fill in the following tags for movies /// #Play.Current.Title, #Play.Current.Plot, #Play.Current.PlotOutline #Play.Current.File, #Play.Current.Thumb, #Play.Current.Year /// #Play.Current.Director, #cast, #dvdlabel, #imdbnumber, #Play.Current.Plot, #Play.Current.PlotOutline, #rating, #tagline, #votes, #credits /// </remarks> private void SetCurrentFile(string fileName) { GUIPropertyManager.RemovePlayerProperties(); GUIPropertyManager.SetProperty("#Play.Current.Title", Util.Utils.GetFilename(fileName)); GUIPropertyManager.SetProperty("#Play.Current.File", Util.Utils.GetFileNameWithExtension(fileName)); GUIPropertyManager.SetProperty("#Play.Current.Thumb", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.VideoCodec.Texture", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.VideoResolution", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.AudioCodec.Texture", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.AudioChannels", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.HasSubtitles", string.Empty); GUIPropertyManager.SetProperty("#Play.Current.AspectRatio", string.Empty); if ((g_Player.IsVideo || g_Player.IsDVD) && !g_Player.IsTV && g_Player.MediaInfo != null) { GUIPropertyManager.SetProperty("#Play.Current.VideoCodec.Texture", Util.Utils.MakeFileName(g_Player.MediaInfo.VideoCodec)); GUIPropertyManager.SetProperty("#Play.Current.VideoResolution", g_Player.MediaInfo.VideoResolution); GUIPropertyManager.SetProperty("#Play.Current.AudioCodec.Texture", Util.Utils.MakeFileName(g_Player.MediaInfo.AudioCodec)); GUIPropertyManager.SetProperty("#Play.Current.AudioChannels", g_Player.MediaInfo.AudioChannelsFriendly); GUIPropertyManager.SetProperty("#Play.Current.HasSubtitles", g_Player.MediaInfo.HasSubtitles.ToString()); GUIPropertyManager.SetProperty("#Play.Current.AspectRatio", g_Player.MediaInfo.AspectRatio); } if (g_Player.IsDVD) { // for dvd's the file is in the form c:\media\movies\the matrix\video_ts\video_ts.ifo // first strip the \video_ts\video_ts.ifo string lowPath = fileName.ToLowerInvariant(); int index = lowPath.IndexOf("video_ts/"); if (index < 0) { index = lowPath.IndexOf(@"video_ts\"); } if (index >= 0) { fileName = fileName.Substring(0, index); fileName = Util.Utils.RemoveTrailingSlash(fileName); // get the name by stripping the first part : c:\media\movies string strName = fileName; int pos = fileName.LastIndexOfAny(new char[] { '\\', '/' }); if (pos >= 0 && pos + 1 < fileName.Length - 1) { strName = fileName.Substring(pos + 1); } // get the name when play DVD directly from Drive letter List <GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt(); for (int i = rootDrives.Count - 1; i >= 0; i--) { GUIListItem itemDVDroot = (GUIListItem)rootDrives[i]; string itemDVD = Path.GetPathRoot(itemDVDroot.Path); itemDVD = Util.Utils.RemoveTrailingSlash(itemDVD); if (itemDVD == strName && !String.IsNullOrEmpty(itemDVDroot.DVDLabel)) //cd or dvd drive { strName = itemDVDroot.DVDLabel; } } GUIPropertyManager.SetProperty("#Play.Current.Title", strName); GUIPropertyManager.SetProperty("#Play.Current.File", strName); // construct full filename as imdb info is stored... fileName += @"\VIDEO_TS\VIDEO_TS.IFO"; } } bool isLive = g_Player.IsTimeShifting; string extension = Util.Utils.GetFileExtension(fileName).ToLowerInvariant(); if (extension.Equals(".sbe") || extension.Equals(".dvr-ms") || (extension.Equals(".ts") && !isLive || g_Player.IsTVRecording)) { // this is a recorded movie. // check the TVDatabase for the description,genre,title,... if (g_Player.currentTitle != "") { GUIPropertyManager.SetProperty("#Play.Current.Title", g_Player.currentTitle); GUIPropertyManager.SetProperty("#Play.Current.Plot", g_Player.currentTitle + "\n" + g_Player.currentDescription); GUIPropertyManager.SetProperty("#Play.Current.PlotOutline", g_Player.currentDescription); } } /*if (fileName.Substring(0, 4) == "rtsp") * { * GUIPropertyManager.SetProperty("#Play.Current.Title", g_Player.currentTitle); * GUIPropertyManager.SetProperty("#Play.Current.Plot", g_Player.currentTitle + "\n" + g_Player.currentDescription); * GUIPropertyManager.SetProperty("#Play.Current.PlotOutline", g_Player.currentDescription); * }*/ IMDBMovie movieDetails = new IMDBMovie(); bool bMovieInfoFound = false; ISelectBDHandler selectBdHandler; if (GlobalServiceProvider.IsRegistered <ISelectBDHandler>()) { selectBdHandler = GlobalServiceProvider.Get <ISelectBDHandler>(); } else { selectBdHandler = new SelectBDHandler(); GlobalServiceProvider.Add <ISelectBDHandler>(selectBdHandler); } bool playingRemoteUrl = Util.Utils.IsRemoteUrl(fileName); if (!g_Player.IsTVRecording && !playingRemoteUrl) { // Check if we play image file to search db with the proper filename if (Util.Utils.IsISOImage(fileName)) { fileName = DaemonTools.MountedIsoFile; } if (VideoDatabase.HasMovieInfo(fileName)) { VideoDatabase.GetMovieInfo(fileName, ref movieDetails); bMovieInfoFound = true; } else if (File.Exists(Path.ChangeExtension(fileName, ".xml"))) { MatroskaTagInfo info = MatroskaTagHandler.Fetch(Path.ChangeExtension(fileName, ".xml")); movieDetails.Title = info.title; movieDetails.Plot = info.description; movieDetails.Genre = info.genre; GUIPropertyManager.SetProperty("#Play.Current.Channel", info.channelName); string logo = Util.Utils.GetCoverArt(Thumbs.TVChannel, info.channelName); if (!Util.Utils.FileExistsInCache(logo)) { logo = "defaultVideoBig.png"; } GUIPropertyManager.SetProperty("#Play.Current.Thumb", logo); _thumbLogo = logo; bMovieInfoFound = true; } else // Nfo support { string path = string.Empty; int pathIndex = 0; if (fileName.ToUpperInvariant().Contains(@"\BDMV")) { pathIndex = fileName.ToUpperInvariant().LastIndexOf(@"\BDMV"); path = fileName.Remove(pathIndex); } else if (fileName.ToUpperInvariant().Contains(@"\VIDEO_TS\")) { pathIndex = fileName.ToUpperInvariant().LastIndexOf(@"\VIDEO_TS\"); path = fileName.Remove(pathIndex); } else if (!String.IsNullOrEmpty(fileName)) { path = Path.GetDirectoryName(fileName); } IMDBMovie.FetchMovieNfo(path, fileName, ref movieDetails); if (!movieDetails.IsEmpty) { bMovieInfoFound = true; } } if (bMovieInfoFound) { movieDetails.SetPlayProperties(true); } else { GUIListItem item = new GUIListItem(); item.IsFolder = false; item.Path = fileName; Util.Utils.SetThumbnails(ref item); GUIPropertyManager.SetProperty("#Play.Current.Thumb", item.ThumbnailImage); // Image file check to set title for OSD (non db) if (VirtualDirectory.IsImageFile(Path.GetExtension(fileName))) { string title = Util.Utils.GetFilename(fileName, true); GUIPropertyManager.SetProperty("#Play.Current.Title", title); } else if (fileName.ToLowerInvariant().Contains("index.bdmv")) // BD folder title check { string title = selectBdHandler.GetDiscTitle(fileName); // get the name when play BD directly from Drive letter if (String.IsNullOrEmpty(title)) { List <GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt(); title = Path.GetPathRoot(fileName); title = Util.Utils.RemoveTrailingSlash(title); for (int i = rootDrives.Count - 1; i >= 0; i--) { GUIListItem itemBDroot = (GUIListItem)rootDrives[i]; string itemBD = Path.GetPathRoot(itemBDroot.Path); itemBD = Util.Utils.RemoveTrailingSlash(itemBD); if (itemBD == title && !String.IsNullOrEmpty(itemBDroot.DVDLabel)) //cd or dvd drive { title = itemBDroot.DVDLabel; } } } GUIPropertyManager.SetProperty("#Play.Current.Title", title); } else if (fileName.ToLowerInvariant().Contains(".mpls")) // BD folder title check (playlist) { // Check if index.bdmv is in the VDB int index = fileName.ToLowerInvariant().LastIndexOf(@"\playlist"); string name = fileName.Remove(index); name = name + @"\index.bdmv"; if (VideoDatabase.HasMovieInfo(name)) { VideoDatabase.GetMovieInfo(name, ref movieDetails); movieDetails.SetPlayProperties(); } else { string title = selectBdHandler.GetDiscTitle(fileName); // get the name when play BD directly from Drive letter if (String.IsNullOrEmpty(title)) { List <GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt(); title = Path.GetPathRoot(fileName); title = Util.Utils.RemoveTrailingSlash(title); for (int i = rootDrives.Count - 1; i >= 0; i--) { GUIListItem itemBDroot = (GUIListItem)rootDrives[i]; string itemBD = Path.GetPathRoot(itemBDroot.Path); itemBD = Util.Utils.RemoveTrailingSlash(itemBD); if (itemBD == title && !String.IsNullOrEmpty(itemBDroot.DVDLabel)) //cd or dvd drive { title = itemBDroot.DVDLabel; } } } GUIPropertyManager.SetProperty("#Play.Current.Title", title); } } } } else if (g_Player.IsTV && g_Player.IsTimeShifting) { GUIPropertyManager.SetProperty("#Play.Current.Title", GUIPropertyManager.GetProperty("#TV.View.channel")); GUIPropertyManager.SetProperty("#Play.Current.Genre", GUIPropertyManager.GetProperty("#TV.View.title")); } else { GUIListItem item = new GUIListItem(); item.IsFolder = false; item.Path = fileName; Util.Utils.SetThumbnails(ref item); GUIPropertyManager.SetProperty("#Play.Current.Thumb", item.ThumbnailImage); } _thumbLogo = GUIPropertyManager.GetProperty("#Play.Current.Thumb"); }