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; }
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; } }
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; }