private int GetTimeStopped(string fileName) { IMDBMovie movieDetails = new IMDBMovie(); VideoDatabase.GetMovieInfo(fileName, ref movieDetails); int idFile = VideoDatabase.GetFileId(fileName); int idMovie = VideoDatabase.GetMovieId(fileName); byte[] resumeData = null; if ((idMovie >= 0) && (idFile >= 0)) { return(VideoDatabase.GetMovieStopTimeAndResumeData(idFile, out resumeData)); } return(0); }
protected virtual void SetLabels() { bool isShareView = false; if (GUIWindowManager.ActiveWindow == (int)Window.WINDOW_VIDEOS) { isShareView = true; } bool _stackedFolder = true; if (isShareView) { _currentFolder = GUIVideoFiles.GetCurrentFolder; object o; MediaPortal.Database.FolderSettings.GetFolderSetting(_currentFolder, "VideoFiles", typeof(GUIVideoFiles.MapSettings), out o); if (o != null) { GUIVideoFiles.MapSettings mapSettings = o as GUIVideoFiles.MapSettings; _stackedFolder = mapSettings.Stack; } } else { _currentFolder = GUIVideoTitle.GetCurrentView; object o; // MediaPortal.Database.FolderSettings.GetFolderSetting(_currentFolder, "VideoViews", typeof(GUIVideoTitle.MapSettings), out o); MediaPortal.Database.FolderSettings.GetViewSetting(_currentFolder, "VideoViews", typeof(GUIVideoTitle.MapSettings), out o); if (o != null) { GUIVideoTitle.MapSettings mapSettings = o as GUIVideoTitle.MapSettings; if (mapSettings != null) { CurrentSortMethod = (VideoSort.SortMethod)mapSettings.SortBy; CurrentSortAsc = mapSettings.SortAscending; } } } for (int i = 0; i < facadeLayout.Count; ++i) { GUIListItem item = facadeLayout[i]; IMDBMovie movie = item.AlbumInfoTag as IMDBMovie; if (movie != null && movie.ID > 0 && !isShareView && (!item.IsFolder || CurrentSortMethod == VideoSort.SortMethod.NameAll)) { if (CurrentSortMethod == VideoSort.SortMethod.Name || CurrentSortMethod == VideoSort.SortMethod.NameAll || CurrentSortMethod == VideoSort.SortMethod.Name_With_Duration) { if (item.IsFolder) { item.Label2 = string.Empty; } else { // Show real movie duration (from video file) int mDuration = VideoDatabase.GetMovieDuration(movie.ID); if (mDuration <= 0) { ArrayList mFiles = new ArrayList(); VideoDatabase.GetFilesForMovie(movie.ID, ref mFiles); mDuration = GUIVideoFiles.MovieDuration(mFiles, true); if (mDuration <= 0) { item.Label2 = Util.Utils.SecondsToHMString(movie.RunTime * 60); } else { item.Label2 = Util.Utils.SecondsToHMString(mDuration); } } else { item.Label2 = Util.Utils.SecondsToHMString(mDuration); } } } else if (CurrentSortMethod == VideoSort.SortMethod.Year) { item.Label2 = movie.Year.ToString(); } else if (CurrentSortMethod == VideoSort.SortMethod.Rating) { item.Label2 = movie.Rating.ToString(); } else if (CurrentSortMethod == VideoSort.SortMethod.Label) { item.Label2 = movie.DVDLabel.ToString(); } else if (CurrentSortMethod == VideoSort.SortMethod.Size) { if (item.FileInfo != null) { item.Label2 = Util.Utils.GetSize(item.FileInfo.Length); } else { item.Label2 = Util.Utils.SecondsToHMString(movie.RunTime * 60); } } else if (!isShareView && CurrentSortMethod == VideoSort.SortMethod.Date) { string strDate = string.Empty; if (!item.IsFolder && movie != null) { if (movie.DateAdded != "0001-01-01 00:00:00") { strDate = movie.DateAdded; } else { strDate = movie.LastUpdate; } } item.Label2 = strDate; } } else { string strSize1 = string.Empty, strDate = string.Empty; if (item.FileInfo != null && !item.IsFolder) { strSize1 = Util.Utils.GetSize(item.FileInfo.Length); } if (item.FileInfo != null && !item.IsFolder) { if (CurrentSortMethod == VideoSort.SortMethod.Modified) { strDate = item.FileInfo.ModificationTime.ToShortDateString() + " " + item.FileInfo.ModificationTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat); } else { strDate = item.FileInfo.CreationTime.ToShortDateString() + " " + item.FileInfo.CreationTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat); } } if (CurrentSortMethod == VideoSort.SortMethod.Name || CurrentSortMethod == VideoSort.SortMethod.NameAll) { if (item.IsFolder) { item.Label2 = string.Empty; } else { item.Label2 = strSize1; } } if (CurrentSortMethod == VideoSort.SortMethod.Name_With_Duration && !item.IsFolder && item.Label != "..") { if (_stackedFolder) { int newMovieId = VideoDatabase.GetMovieId(item.Path); item.Duration = VideoDatabase.GetMovieDuration(newMovieId); } else { int fileID = VideoDatabase.GetFileId(item.Path); item.Duration = VideoDatabase.GetVideoDuration(fileID); } if (item.Duration > 0) { item.Label2 = Util.Utils.SecondsToShortHMSString(item.Duration); } else { item.Label2 = string.Empty; } } else if (CurrentSortMethod == VideoSort.SortMethod.Created || CurrentSortMethod == VideoSort.SortMethod.Date || CurrentSortMethod == VideoSort.SortMethod.Modified) { if (!isShareView && CurrentSortMethod == VideoSort.SortMethod.Date && string.IsNullOrWhiteSpace(strDate)) { if (!item.IsFolder && movie != null) { if (movie.DateAdded != "0001-01-01 00:00:00") { strDate = movie.DateAdded; } else { strDate = movie.LastUpdate; } } } item.Label2 = strDate; } else { if (item.IsFolder) { item.Label2 = string.Empty; } else { item.Label2 = strSize1; } } } } }
public bool OnPlayDVD(String drive, int parentId) { Log.Info("SelectDVDHandler: OnPlayDVD() playing DVD {0}", drive); if (g_Player.Playing && g_Player.IsDVD) { if (g_Player.CurrentFile.Equals(drive + @"\VIDEO_TS\VIDEO_TS.IFO")) { return(true); } } if (Util.Utils.getDriveType(drive) == 5) //cd or dvd drive { string driverLetter = drive.Substring(0, 1); string fileName = String.Format(@"{0}:\VIDEO_TS\VIDEO_TS.IFO", driverLetter); if (!VirtualDirectories.Instance.Movies.RequestPin(fileName)) { return(false); } if (File.Exists(fileName)) { IMDBMovie movieDetails = new IMDBMovie(); VideoDatabase.GetMovieInfo(fileName, ref movieDetails); int idFile = VideoDatabase.GetFileId(fileName); int idMovie = VideoDatabase.GetMovieId(fileName); int timeMovieStopped = 0; byte[] resumeData = null; if ((idMovie >= 0) && (idFile >= 0)) { timeMovieStopped = VideoDatabase.GetMovieStopTimeAndResumeData(idFile, out resumeData); //Log.Info("GUIVideoFiles: OnPlayBackStopped for DVD - idFile={0} timeMovieStopped={1} resumeData={2}", idFile, timeMovieStopped, resumeData); if (timeMovieStopped > 0) { string title = Path.GetFileName(fileName); VideoDatabase.GetMovieInfoById(idMovie, ref movieDetails); if (movieDetails.Title != string.Empty) { title = movieDetails.Title; } GUIResumeDialog.Result result = GUIResumeDialog.ShowResumeDialog(title, timeMovieStopped, GUIResumeDialog.MediaType.DVD); if (result == GUIResumeDialog.Result.Abort) { return(false); } if (result == GUIResumeDialog.Result.PlayFromBeginning) { timeMovieStopped = 0; } } } if (g_Player.Playing) { g_Player.Stop(); } g_Player.PlayDVD(drive + @"\VIDEO_TS\VIDEO_TS.IFO"); g_Player.ShowFullScreenWindow(); if (g_Player.Playing && timeMovieStopped > 0) { if (g_Player.IsDVD) { g_Player.Player.SetResumeState(resumeData); } else { Log.Debug("SelectDVDHandler.OnPlayDVD - skipping"); g_Player.SeekAbsolute(timeMovieStopped); } } return(true); } } //no disc in drive... GUIDialogOK dlgOk = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); dlgOk.SetHeading(3); //my videos Log.Error("SelectDVDHandler: OnPlayDVD() Plz Insert Disk (ShowSelectDriveDialog)"); dlgOk.SetLine(1, 219); //no disc dlgOk.DoModal(parentId); return(false); }
// Image play method public bool OnPlayBD(String drive, int parentId) { Log.Info("SelectBDHandler: OnPlayBD() playing BD {0}", drive); string currentFile = g_Player.CurrentFile; if (g_Player.Playing && Util.Utils.IsISOImage(currentFile) && IsBDPlayList(ref currentFile)) //if (g_Player.Playing && IsBDPlayList(ref currentFile)) { return(true); } if (Util.Utils.getDriveType(drive) == 5) //cd or dvd drive { string driverLetter = drive.Substring(0, 1); string fileName = String.Format(@"{0}:\BDMV\index.bdmv", driverLetter); if (File.Exists(fileName)) { IMDBMovie movieDetails = new IMDBMovie(); //string name = DaemonTools._MountedIsoFile; int idFileImg = VideoDatabase.GetFileId(fileName); int idMovieImg = VideoDatabase.GetMovieId(fileName); ///* int timeMovieStopped = 0; byte[] resumeData = null; if ((idMovieImg >= 0) && (idFileImg >= 0)) { timeMovieStopped = VideoDatabase.GetMovieStopTimeAndResumeData(idFileImg, out resumeData, g_Player.SetResumeBDTitleState); if (timeMovieStopped > 0) { string title = Path.GetFileName(fileName); VideoDatabase.GetMovieInfoById(idMovieImg, ref movieDetails); if (movieDetails.Title != string.Empty) { title = movieDetails.Title; } GUIResumeDialog.Result result = GUIResumeDialog.ShowResumeDialog(title, timeMovieStopped, GUIResumeDialog.MediaType.DVD); if (result == GUIResumeDialog.Result.Abort) { return(false); } if (result == GUIResumeDialog.Result.PlayFromBeginning) { timeMovieStopped = 0; } } } //*/ if (g_Player.Playing) { g_Player.Stop(); } g_Player.PlayBD(drive + @"\BDMV\index.bdmv"); g_Player.ShowFullScreenWindow(); ///* if (g_Player.Playing && timeMovieStopped > 0) { g_Player.SeekAbsolute(timeMovieStopped); } //*/ return(true); } } //no disc in drive... GUIDialogOK dlgOk = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); dlgOk.SetHeading(3); //my videos Log.Error("SelectBDHandler: OnPlayBD() Plz Insert Disk"); dlgOk.SetLine(1, 219); //no disc dlgOk.DoModal(parentId); return(true); }
// Changed - cover for movies with the same name public void SetIMDBThumbs(IList items, bool markWatchedFiles, bool eachMovieHasDedicatedFolder) { GUIListItem pItem; IMDBMovie movieDetails = new IMDBMovie(); 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)); // Skip DVD backup folder if (pItem.IsFolder && !IsDvdDirectory(pItem.Path)) { 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... else { if (eachMovieHasDedicatedFolder) { file = GetFolderVideoFile(pItem.Path); } } } // If folder is DVD backup folder then take it for watched status else if (pItem.IsFolder && IsDvdDirectory(pItem.Path)) { file = 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 fileId = VideoDatabase.GetFileId(file); int id = VideoDatabase.GetMovieInfo(file, ref movieDetails); bool foundWatched = false; // Set thumb for movies if (id >= 0) { if (Util.Utils.IsDVD(pItem.Path)) { pItem.Label = String.Format("({0}:) {1}", pItem.Path.Substring(0, 1), movieDetails.Title); } string titleExt = movieDetails.Title + "{" + movieDetails.ID + "}"; strThumb = Util.Utils.GetCoverArt(Thumbs.MovieTitle, titleExt); } // Find watched status for videos if (fileId >= 0 && markWatchedFiles) { if (VideoDatabase.GetmovieWatchedStatus(VideoDatabase.GetMovieId(file))) { foundWatched = true; } } // Set watched status for list item if (!pItem.IsFolder || (IsDvdDirectory(pItem.Path) && foundWatched)) { pItem.IsPlayed = foundWatched; } if (!Util.Utils.FileExistsInCache(strThumb) || string.IsNullOrEmpty(strThumb)) { strThumb = string.Format(@"{0}\{1}", Thumbs.MovieTitle, Util.Utils.MakeFileName(Util.Utils.SplitFilename(Path.ChangeExtension(file, ".jpg")))); if (!Util.Utils.FileExistsInCache(strThumb)) { continue; } } pItem.ThumbnailImage = strThumb; pItem.IconImageBig = strThumb; pItem.IconImage = strThumb; strThumb = Util.Utils.ConvertToLargeCoverArt(strThumb); if (Util.Utils.FileExistsInCache(strThumb)) { pItem.ThumbnailImage = strThumb; } } // <-- file == empty } // of for (int x = 0; x < items.Count; ++x) }
// Changed - covers and the same movie name protected override void OnClicked(int controlId, GUIControl control, Action.ActionType actionType) { base.OnClicked(controlId, control, actionType); if (control == btnRefresh) { // 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; } string title = currentMovie.Title; int id = currentMovie.ID; string file = currentMovie.Path + "\\" + currentMovie.File; // Delete covers FanArt.DeleteCovers(title, id); //Delete fanarts FanArt.DeleteFanarts(file, title); if (IMDBFetcher.RefreshIMDB(this, ref currentMovie, false, false, true)) { if ((imageSearchThread != null) && (imageSearchThread.IsAlive)) { imageSearchThread.Abort(); imageSearchThread = null; } imdbCoverArtUrl = currentMovie.ThumbURL; coverArtUrls = new string[1]; coverArtUrls[0] = imdbCoverArtUrl; ResetSpinControl(); Refresh(false); Update(); // Start images search thread SearchImages(); } return; } if (control == spinImages) { int item = spinImages.Value - 1; if (item < 0 || item >= coverArtUrls.Length) { item = 0; } if (currentMovie.ThumbURL == coverArtUrls[item]) { return; } currentMovie.ThumbURL = coverArtUrls[item]; // Title suffix for problem with covers and movie with the same name string titleExt = currentMovie.Title + "{" + currentMovie.ID + "}"; string coverArtImage = Util.Utils.GetCoverArtName(Thumbs.MovieTitle, titleExt); string largeCoverArtImage = Util.Utils.GetLargeCoverArtName(Thumbs.MovieTitle, titleExt); Util.Utils.FileDelete(coverArtImage); // // 07.11.2010 Deda: Cache entry Flag change for cover thumb file // Util.Utils.DoInsertNonExistingFileIntoCache(coverArtImage); // Util.Utils.FileDelete(largeCoverArtImage); Refresh(false); Update(); int idMovie = currentMovie.ID; if (idMovie >= 0) { VideoDatabase.SetThumbURL(idMovie, currentMovie.ThumbURL); } return; } if (control == btnCast) { viewmode = ViewMode.Cast; Update(); } if (control == btnPlot) { viewmode = ViewMode.Plot; Update(); } if (control == btnReview) { viewmode = ViewMode.Review; Update(); } if (control == btnWatched) { if (currentMovie.Watched > 0) { GUIPropertyManager.SetProperty("#iswatched", "no"); currentMovie.Watched = 0; VideoDatabase.SetMovieWatchedStatus(currentMovie.ID, false); ArrayList files = new ArrayList(); VideoDatabase.GetFiles(currentMovie.ID, ref files); foreach (string file in files) { int fileId = VideoDatabase.GetFileId(file); VideoDatabase.DeleteMovieStopTime(fileId); } } else { GUIPropertyManager.SetProperty("#iswatched", "yes"); currentMovie.Watched = 1; VideoDatabase.SetMovieWatchedStatus(currentMovie.ID, true); } VideoDatabase.SetWatched(currentMovie); } if (control == spinDisc) { string selectedItem = spinDisc.GetLabel(); int idMovie = currentMovie.ID; if (idMovie > 0) { if (selectedItem != "HD" && selectedItem != "share") { VideoDatabase.SetDVDLabel(idMovie, selectedItem); } else { VideoDatabase.SetDVDLabel(idMovie, "HD"); } } } if (control == btnPlay) { int id = currentMovie.ID; ArrayList files = new ArrayList(); VideoDatabase.GetFiles(id, ref files); if (files.Count > 1) { GUIVideoFiles._stackedMovieFiles = files; GUIVideoFiles._isStacked = true; GUIVideoFiles.MovieDuration(files); } GUIVideoFiles.PlayMovie(id, false); return; } }