Ejemplo n.º 1
0
        static BrowseItem stringToBrowseItem(string strPath, bool isDirectory, List <string> Filters)
        {
            if (isDirectory)
            {
                if (!Directory.Exists(strPath))
                {
                    return(null);
                }
                DirectoryInfo di         = new DirectoryInfo(strPath);
                BrowseItem    folderItem = directoryInfoToBrowseItem(di, Filters);
                // Override normal behaviour, which is not to include the full path in the name
                // (because this current method is used by the root folder selection, so there is no base folder to set)
                folderItem.Name = strPath;
                return(folderItem);
            }
            else
            {
                if (!File.Exists(strPath))
                {
                    return(null);
                }

                BrowseItem output = new BrowseItem();
                output.Name        = strPath;
                output.IsDirectory = false;

                return(output);
            }
        }
Ejemplo n.º 2
0
        static BrowseItem fileInfoToBrowseItem(FileInfo fi, bool getMediaDuration, bool setNameToFullPath)
        {
            BrowseItem output = new BrowseItem();

            // Name / path
            if (setNameToFullPath)
            {
                output.Name = fi.FullName;
            }
            else
            {
                output.Name = fi.Name;
            }

            output.Size        = fi.Length;
            output.IsDirectory = false;

            if (getMediaDuration)
            {
                try
                {
                    TimeSpan mDuration = DurationOfMediaFile_OSSpecific(fi.FullName);
                    output.Duration = mDuration.TotalSeconds;
                }
                catch (Exception ex)
                {
                    Functions.WriteLineToLogFileIfAdvanced("Could not get duration of media file: " + fi.FullName + " :");
                    Functions.WriteExceptionToLogFileIfAdvanced(ex);
                }
            }

            return(output);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
        static BrowseItem directoryInfoToBrowseItem(DirectoryInfo di, List <string> Filters)
        {
            BrowseItem output = new BrowseItem();

            output.Name        = di.Name;
            output.IsDirectory = true;

            // Number of Items
            int numberOfSubdirectories = di.GetDirectories().Count();
            int numberOfFiles          = 0;

            foreach (string filter in Filters)
            {
                numberOfFiles += di.GetFiles(filter).Count();
            }
            output.Items = numberOfSubdirectories + numberOfFiles;

            return(output);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Recursing function to browse a folder
        /// </summary>
        /// <param name="browseItems"></param>
        /// <param name="Filters"></param>
        static void browseFolderForFiles(string folderPath, ref List <BrowseItem> browseItems, List <string> Filters, bool getMediaDuration)
        {
            DirectoryInfo diThis = new DirectoryInfo(folderPath);

            // RECURSE
            foreach (DirectoryInfo diChild in diThis.GetDirectories())
            {
                browseFolderForFiles(diChild.FullName, ref browseItems, Filters, getMediaDuration);
            }

            // Now add my files
            foreach (string filter in Filters)
            {
                foreach (FileInfo fiChild in diThis.GetFiles(filter))
                {
                    BrowseItem newItem = fileInfoToBrowseItem(fiChild, getMediaDuration, true);
                    browseItems.Add(newItem);
                }
            }
        }
Ejemplo n.º 6
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);
        }