Exemple #1
0
 static void CreateShellHelperIfNull()
 {
     if (sHelper == null)
     {
         sHelper = new FatAttitude.ShellHelper();
     }
 }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
 }