static void CreateShellHelperIfNull() { if (sHelper == null) { sHelper = new FatAttitude.ShellHelper(); } }
/// <summary> /// Retrieve the files in all registered 7MC movie library folders, with extensions from Settings.Default.VideoFileExtensions /// </summary> /// <returns></returns> static FileBrowseResult GetMoviesInMovieLibrary() { FileBrowseResult output = new FileBrowseResult(); CreateShellHelperIfNull(); output.Directories = new List <BrowseItem>(); MCLibraryFolderHelper fHelper = new MCLibraryFolderHelper(); List <string> movieFolders = fHelper.MediaCenterLibraryFolders(MCLibraryFolderHelper.Libraries.Movie); List <string> VideoFilters = filtersForMediaType(MediaFileTypes.Video); List <BrowseItem> filesFound = new List <BrowseItem>(); foreach (string movieFolder in movieFolders) { browseFolderForFiles(movieFolder, ref filesFound, VideoFilters, true); } // Now add recorded TV shows that are movies foreach (TVProgramme tvp in RecTV.Default.RecordedTVProgrammes.Values) { if (tvp.ProgramType != TVProgrammeType.Movie) { continue; // movies only } FileInfo fi = new FileInfo(tvp.Filename); BrowseItem newItem = fileInfoToBrowseItem(fi, true, true); filesFound.Add(newItem); } // Sort the list of movies alphabetically by filename (NAME not file path, path is stripped away by the comparer) CommonEPG.Comparers.BrowseItemComparer bComparer = new CommonEPG.Comparers.BrowseItemComparer(); filesFound.Sort(bComparer); output.Files = filesFound; // Set base directory flag output.BaseDirectory = "MOVIE_LIBRARY"; output.Success = true; sHelper = null; return(output); }
static FileBrowseResult GetFoldersForLibrary(string libraryName, List <string> Filters) // music, videos, pictures, documents { FileBrowseResult output = new FileBrowseResult(); CreateShellHelperIfNull(); try { List <String> folders = new List <string>(); folders = FoldersForLibrary(libraryName); foreach (string folder in folders) { BrowseItem folderItem = stringToBrowseItem(folder, true, Filters); if (folderItem != null) { output.Directories.Add(folderItem); } } output.ErrorText = "OK"; output.Success = true; } catch (ArgumentException) { output.Success = false; output.ErrorText = "NO LIBRARY"; } catch (Exception ex) { output.Success = false; output.ErrorText = ex.Message; } sHelper = null; return(output); }
public static FileBrowseResult BrowsePath(string FullPath, List <string> Filters, bool getMediaDuration) { // Libraries if (FullPath.Equals("VIDEO_LIBRARY")) { return(GetFoldersForLibrary("videos", Filters)); } if (FullPath.Equals("DOCUMENTS_LIBRARY")) { return(GetFoldersForLibrary("documents", Filters)); } if (FullPath.Equals("MUSIC_LIBRARY")) { return(GetFoldersForLibrary("music", Filters)); } if (FullPath.Equals("PICTURES_LIBRARY")) { return(GetFoldersForLibrary("pictures", Filters)); } // 'Faux' library (collection) if (FullPath.Equals("MOVIE_LIBRARY")) { return(GetMoviesInMovieLibrary()); } FileBrowseResult output = new FileBrowseResult(); output.BaseDirectory = FullPath; // Exists if (!Directory.Exists(FullPath)) { output.ErrorText = "Directory not found."; output.Success = false; return(output); } if (Filters.Count < 1) { Filters = new List <string>() { "*.*" } } ; DirectoryInfo masterDi = new DirectoryInfo(FullPath); // 1. Files List <FileInfo> tempOutputFiles = new List <FileInfo>(); foreach (string filter in Filters) { tempOutputFiles.AddRange(masterDi.GetFiles(filter)); } // Sort by name var orderedFiles = tempOutputFiles.OrderBy(f => f.Name); if (getMediaDuration) { CreateShellHelperIfNull(); // use a shell helper to get duration of media files } foreach (FileInfo fi in orderedFiles) { output.Files.Add(fileInfoToBrowseItem(fi, getMediaDuration, false)); } sHelper = null; // 2. Directories DirectoryInfo[] directoryInfos = masterDi.GetDirectories(); var orderedDirectories = directoryInfos.OrderBy(d => d.Name); foreach (DirectoryInfo di in orderedDirectories) { output.Directories.Add(directoryInfoToBrowseItem(di, Filters)); } // Success output.Success = true; output.ErrorText = "OK"; return(output); }
public static FileBrowseResult BrowsePath(string FullPath, List<string> Filters, bool getMediaDuration) { // Libraries if (FullPath.Equals("VIDEO_LIBRARY")) return GetFoldersForLibrary("videos", Filters); if (FullPath.Equals("DOCUMENTS_LIBRARY")) return GetFoldersForLibrary("documents", Filters); if (FullPath.Equals("MUSIC_LIBRARY")) return GetFoldersForLibrary("music", Filters); if (FullPath.Equals("PICTURES_LIBRARY")) return GetFoldersForLibrary("pictures", Filters); // 'Faux' library (collection) if (FullPath.Equals("MOVIE_LIBRARY")) return GetMoviesInMovieLibrary(); FileBrowseResult output = new FileBrowseResult(); output.BaseDirectory = FullPath; // Exists if (! Directory.Exists(FullPath)) { output.ErrorText = "Directory not found."; output.Success = false; return output; } if (Filters.Count < 1) Filters = new List<string>() {"*.*"}; DirectoryInfo masterDi = new DirectoryInfo(FullPath); // 1. Files List<FileInfo> tempOutputFiles = new List<FileInfo>(); foreach (string filter in Filters) tempOutputFiles.AddRange(masterDi.GetFiles(filter)); // Sort by name var orderedFiles = tempOutputFiles.OrderBy(f => f.Name); if (getMediaDuration) CreateShellHelperIfNull(); // use a shell helper to get duration of media files foreach (FileInfo fi in orderedFiles) output.Files.Add(fileInfoToBrowseItem(fi, getMediaDuration, false)); sHelper = null; // 2. Directories DirectoryInfo[] directoryInfos = masterDi.GetDirectories(); var orderedDirectories = directoryInfos.OrderBy(d => d.Name); foreach (DirectoryInfo di in orderedDirectories) output.Directories.Add( directoryInfoToBrowseItem(di, Filters)); // Success output.Success = true; output.ErrorText = "OK"; return output; }
/// <summary> /// Retrieve the files in all registered 7MC movie library folders, with extensions from Settings.Default.VideoFileExtensions /// </summary> /// <returns></returns> static FileBrowseResult GetMoviesInMovieLibrary() { FileBrowseResult output = new FileBrowseResult(); CreateShellHelperIfNull(); output.Directories = new List<BrowseItem>(); MCLibraryFolderHelper fHelper = new MCLibraryFolderHelper(); List<string> movieFolders = fHelper.MediaCenterLibraryFolders(MCLibraryFolderHelper.Libraries.Movie); List<string> VideoFilters = filtersForMediaType(MediaFileTypes.Video); List<BrowseItem> filesFound = new List<BrowseItem>(); foreach (string movieFolder in movieFolders) { browseFolderForFiles(movieFolder, ref filesFound, VideoFilters, true); } // Now add recorded TV shows that are movies foreach (TVProgramme tvp in RecTV.Default.RecordedTVProgrammes.Values) { if (tvp.ProgramType != TVProgrammeType.Movie) continue; // movies only FileInfo fi = new FileInfo(tvp.Filename); BrowseItem newItem = fileInfoToBrowseItem(fi, true, true); filesFound.Add(newItem); } // Sort the list of movies alphabetically by filename (NAME not file path, path is stripped away by the comparer) CommonEPG.Comparers.BrowseItemComparer bComparer = new CommonEPG.Comparers.BrowseItemComparer(); filesFound.Sort(bComparer); output.Files = filesFound; // Set base directory flag output.BaseDirectory = "MOVIE_LIBRARY"; output.Success = true; sHelper = null; return output; }
// music, videos, pictures, documents static FileBrowseResult GetFoldersForLibrary(string libraryName, List<string> Filters) { FileBrowseResult output = new FileBrowseResult(); CreateShellHelperIfNull(); try { List<String> folders = new List<string>(); folders = FoldersForLibrary(libraryName); foreach (string folder in folders) { BrowseItem folderItem = stringToBrowseItem(folder, true, Filters); if (folderItem != null) output.Directories.Add(folderItem); } output.ErrorText = "OK"; output.Success = true; } catch (ArgumentException ) { output.Success = false; output.ErrorText = "NO LIBRARY"; } catch (Exception ex) { output.Success = false; output.ErrorText = ex.Message; } sHelper = null; return output; }
static void CreateShellHelperIfNull() { if (sHelper == null) sHelper = new FatAttitude.ShellHelper(); }