Exemple #1
0
        private PlainFolder(FileServer server, DlnaMediaTypes types, VirtualFolder parent, DirectoryInfo dir, IEnumerable<string> exts)
            : base(parent, dir.Name)
        {
            Server = server;
              this.dir = dir;
              folders = (from d in dir.GetDirectories()
                 let m = TryGetFolder(server, types, d)
                 where m != null && m.ChildCount > 0
                 select m as IMediaFolder).ToList();

              var rawfiles = from f in dir.GetFiles("*.*")
                     select f;
              var files = new List<BaseFile>();
              foreach (var f in rawfiles) {
            var ext = f.Extension;
            if (string.IsNullOrEmpty(ext) ||
              !exts.Contains(ext.Substring(1), StringComparer.InvariantCultureIgnoreCase)) {
              continue;
            }
            try {
              files.Add(server.GetFile(this, f));
            }
            catch (Exception ex) {
              server.Warn(f, ex);
            }
              }
              resources.AddRange(files);
        }
Exemple #2
0
        internal PlainFolder(FileServer server, VirtualFolder parent, DirectoryInfo dir)
            : base(parent, dir.Name)
        {
            Server = server;
              this.dir = dir;
              var rawfiles = from f in dir.GetFiles("*.*")
                     select f;
              var files = new List<BaseFile>();
              foreach (var f in rawfiles) {
            var ext = f.Extension;
            if (string.IsNullOrEmpty(ext) ||
            !server.Filter.Filtered(ext.Substring(1))) {
              continue;
            }
            try {
              var file = server.GetFile(this, f);
              if (server.Allowed(file)) {
            files.Add(file);
              }
            }
            catch (Exception ex) {
              server.Warn(f, ex);
            }
              }
              Resources.AddRange(files);

              Folders = (from d in dir.GetDirectories()
                 let m = TryGetFolder(server, d)
                 where m != null && m.ChildCount > 0
                 select m as IMediaFolder).ToList();
        }
 public void Merge(IMediaFolder folder)
 {
     if (folder == null) {
     throw new ArgumentNullException("folder");
       }
       merged.Add(folder);
       foreach (var item in folder.ChildItems) {
     AddResource(item);
       }
       foreach (var cf in folder.ChildFolders) {
     var ownFolder = (from f in folders
                  where f is VirtualFolder && f.Title == cf.Title
                  select f as VirtualFolder
     ).FirstOrDefault();
     if (ownFolder == null) {
       ownFolder = new VirtualFolder(this, cf.Title, cf.Id);
       AdoptFolder(ownFolder);
     }
     ownFolder.Merge(cf);
       }
 }
Exemple #4
0
        private void DoRoot()
        {
            lock (this) {
            IMediaFolder newMaster;
            if (directories.Length == 1) {
              newMaster = new PlainRootFolder(
            this,
            types,
            directories[0]
            );
            }
            else {
              var virtualMaster = new VirtualFolder(
            null,
            FriendlyName,
            Identifiers.GeneralRoot
            );
              foreach (var d in directories) {
            virtualMaster.Merge(
              new PlainRootFolder(this, types, d)
              );
              }
              newMaster = virtualMaster;
            }
            lock (ids) {
              ids.RegisterFolder(Identifiers.GeneralRoot, newMaster);
              ids.RegisterFolder(
            Identifiers.SamsungImages,
            new VirtualClonedFolder(
              newMaster,
              Identifiers.SamsungImages,
              types & DlnaMediaTypes.Image
              )
            );
              ids.RegisterFolder(
            Identifiers.SamsungAudio,
            new VirtualClonedFolder(
              newMaster,
              Identifiers.SamsungAudio,
              types & DlnaMediaTypes.Audio
              )
            );
              ids.RegisterFolder(
            Identifiers.SamsungVideo,
            new VirtualClonedFolder(
              newMaster,
              Identifiers.SamsungVideo,
              types & DlnaMediaTypes.Video
              )
            );
            }
              }

              Thumbnail();
        }
Exemple #5
0
 protected PlainFolder(FileServer server, DlnaMediaTypes types, VirtualFolder parent, DirectoryInfo dir)
     : this(server, types, parent, dir, GetExtensions(types))
 {
 }