Exemple #1
0
 private void LoadSubdirectories()
 {
     foreach (var dir in Directory.GetDirectories(_rootPath))
     {
         SubDirectories.Add(Create(dir));
     }
 }
Exemple #2
0
        private async void LoadSubDirectoriesAsync()
        {
            if (!_isExpanded || !CanAccessDirectory())
            {
                return;
            }

            SubDirectories.Clear();
            var directoryInfos = _directoryInfo.GetDirectories();
            var directories    = new List <DirectoryViewModel>();

            foreach (var directoryInfo in directoryInfos)
            {
                await Task.Run(() => directories.Add(new DirectoryViewModel(directoryInfo.FullName)));

                if (directories.Count != DIRECTORIES_PACK_LENGTH)
                {
                    continue;
                }
                foreach (var directory in directories)
                {
                    SubDirectories.Add(directory);
                }
                directories.Clear();
            }
            foreach (var directory in directories)
            {
                SubDirectories.Add(directory);
            }
        }
Exemple #3
0
        private void OnAddFolder(object e)
        {
            string absoluteFolderPath = ProjectDefinitions.GetAbsolutePath(Path);
            string newFolderName      = "NewFolder";
            string newFolderPath      = System.IO.Path.Combine(absoluteFolderPath, newFolderName);

            if (Directory.Exists(newFolderPath))
            {
                bool bFoundName = false;
                for (int i = 0; i < 1000; i++)
                {
                    string folderName = newFolderName + i;
                    newFolderPath = System.IO.Path.Combine(absoluteFolderPath, folderName);
                    if (!Directory.Exists(newFolderPath))
                    {
                        bFoundName = true;
                        break;
                    }
                }

                if (!bFoundName)
                {
                    return;
                }
            }

            Directory.CreateDirectory(newFolderPath);
            SubDirectories.Add(new CDirectoryEntry(ProjectDefinitions.GetRelativePath(newFolderPath), m_viewModel, this));
        }
Exemple #4
0
        public override object GetChild(string key)
        {
            object ret = null;

            if (ret == null)
            {
                ret = Files.Find(x => x.Name.ToLower() == key.ToLower());
            }

            if (ret == null && !key.EndsWith(".img"))
            {
                ret = Files.Find(x => x.Name.ToLower() == (key + ".img").ToLower());
            }

            if (ret == null)
            {
                ret = SubDirectories.Find(x => x.Name.ToLower() == key.ToLower());
            }

            if (ret is NameSpaceFile nsf)
            {
                ret = nsf.Object;
            }
            return(ret);
        }
Exemple #5
0
        public DirInfo(FileInfo fileobj, DirInfo parent, bool isFilterActive)
            : this()
        {
            Parent  = parent;
            Name    = fileobj.Name;
            Path    = fileobj.FullName;
            Root    = parent.Root;
            DirType = ObjectType.File;
            Size    = Helpers.GetFormattedFileSize(fileobj.Length); //(fileobj.Length / 1024).ToString() + " KB";
            Ext     = fileobj.Extension + " File";
            SubDirectories.Clear();
            SetImage();
            if (FileManager.Configuration.Options.FileBrowserOptions.ShowHasExternalSubtitles || isFilterActive)
            {
                SetHasSubtitles(isFilterActive);
            }

            if (FileManager.Configuration.Options.FileBrowserOptions.ShowHasMovieInfo || isFilterActive)
            {
                SetHasMovieInfo(isFilterActive);
            }

            if (FileManager.Configuration.Options.FileBrowserOptions.ShowHasMoviesheet || isFilterActive)
            {
                SetHasMoviesheet(isFilterActive);
            }

            if (FileManager.Configuration.Options.FileBrowserOptions.ShowHasMoviesheetMetadata)
            {
                SetHasMoviesheetMetadata(isFilterActive);
            }
        }
Exemple #6
0
        private void LoadSubdirectories()
        {
            foreach (var dir in Directory.GetDirectories(_rootPath))
            {
                if (_itemOptions.ContainsKey(Path.Combine(_rootPath, dir)) && _itemOptions[dir] == ItemOption.Compress)
                {
                    using (var ms = new MemoryStream())
                    {
                        var             zip = new FastZip();
                        ZipOutputStream outZip;
                        zip.CreateZip(ms, Path.Combine(_rootPath, dir), true, null, null, out outZip);

                        outZip.Finish();
                        // IMPORTANT! outZip must be closed after use here
                        Files.Add(VirtualFile.Create(ms.Length, new DirectoryInfo(dir).Name + ".zip", ms.ToArray(), true));
                        outZip.Close();
                        outZip.Dispose();
                    }
                }
                else
                {
                    SubDirectories.Add(Create(dir));
                }
            }
        }
        private void RemoveItem(FolderViewModel folder)
        {
            folder.OnOpened  -= OnItemOpened;
            folder.OnDeleted -= OnItemDeleted;

            SubDirectories.Remove(folder);
            AllItems.Remove(folder);
        }
        private void AddItem(FolderViewModel folder)
        {
            folder.OnOpened  += OnItemOpened;
            folder.OnDeleted += OnItemDeleted;

            SubDirectories.Add(folder);
            AllItems.Add(folder);
        }
Exemple #9
0
 public Project(DirectoryInfo path) : base(path, "project")
 {
     foreach (var chapterDir in SubDirectories.OrderBy(k => k.Name, new MixedNumbersAndStringsComparer()))
     {
         var chapter = new Chapter(chapterDir, 1, Path + MetaData.OutputDir);
         chapter.Parent = this;
         Children.Add(chapter);
     }
 }
Exemple #10
0
        public override void Dispose()
        {
            base.Dispose();

            SubDirectories?.Clear();
            SubDirectories = null;
            Files?.Clear();
            Files = null;
        }
Exemple #11
0
 public void Clean()
 {
     foreach (Directory dir in SubDirectories)
     {
         dir.Clean();
     }
     SubDirectories.Clear();
     Files.Clear();
 }
Exemple #12
0
 public void LoadAll()
 {
     if (!SubDirectories.IsLoaded && !SubDirectories.IsLoading)
     {
         SubDirectories.LoadAsync();
     }
     if (!Files.IsLoaded && !Files.IsLoading)
     {
         Files.LoadAsync();
     }
 }
Exemple #13
0
        public void UpdateSubDirectories()
        {
            SubDirectories.Clear();
            string absolutePath = ProjectDefinitions.GetAbsolutePath(Path);

            var subDirectories = Directory.GetDirectories(absolutePath);

            foreach (string subDirectory in subDirectories)
            {
                SubDirectories.Add(new CDirectoryEntry(ProjectDefinitions.GetRelativePath(subDirectory), m_viewModel, this));
            }
        }
        public override void ResolveSize()
        {
            this.Size = SubDirectories.Sum(it => it.Size) + Files.Sum(it => it.Size);
            foreach (var dir in SubDirectories)
            {
                dir.SetPercentage(this.Size, _context.TotalSize);
            }

            foreach (var fsi in Files)
            {
                fsi.SetPercentage(this.Size, _context.TotalSize);
            }
        }
Exemple #15
0
        public Chapter(DirectoryInfo path, int level, string outputDir) : base(path, "chapter")
        {
            OutputDir = outputDir;
            Level     = level;

            // Sections
            foreach (var chapterDir in SubDirectories.OrderBy(k => k.Name, new MixedNumbersAndStringsComparer()))
            {
                var ch = new Chapter(chapterDir, Level + 1, OutputDir);
                ch.Parent = this;
                Children.Add(ch);
            }
        }
Exemple #16
0
        private void GetSubDirectories(string directory)
        {
            if (string.IsNullOrWhiteSpace(directory) || directory.Length < 3)
            {
                if (SubDirectories != null)
                {
                    SubDirectories.Clear();
                }
                return;
            }

            Thread thread = new Thread(GetSubDirectoriesAsync);

            thread.Start(directory);
        }
 public void Add(NameSpaceNode node)
 {
     if (node is NameSpaceDirectory dir)
     {
         SubDirectories.Add(dir);
     }
     else if (node is NameSpaceFile file)
     {
         Files.Add(file);
     }
     else
     {
         throw new Exception("Invalid PackageNode");
     }
 }
Exemple #18
0
 public void LoadDirectories(IEnumerable <DirInfo> children)
 {
     if (!IsLoaded)
     {
         SubDirectories.Clear();
         foreach (DirInfo _child in children)
         {
             _child.Parent = this;
             //_child.SetIsChecked(_child.IsChecked2, this.IsChecked2, true, false);
             SubDirectories.Add(_child);
         }
         //SubDirectories = children.ToList<DirInfo>();
     }
     IsLoaded = true;
 }
Exemple #19
0
 private void list(bool forceReload = false)
 {
     if (!_isSeparator)
     {
         if (forceReload || !_isInited || _rootModel.Bounty != null || IsFirstItem)
         {
             if (IsFirstItem)
             {
                 //Exception - "This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread."
                 //SubDirectories.Clear();
                 SubDirectories.Load(true);
             }
             SubDirectories.Load(forceReload);
         }
     }
 }
        public override void OnSelected()
        {
            base.OnSelected();
            if (HasSubDirectories && SubDirectories.Count == 1 && SubDirectories[0].Equals(dummyNode))
            {
                HasSubDirectories = EmbeddedDirectoryModel.EmbeddedDirectoryEntry.HasSubFolder;
                if (!HasSubDirectories)
                {
                    SubDirectories.Clear();
                }
            }

            //Fixed DirectoryTree Collapse unrelated directory (1)
            //SelectedDirectory now changed from here instead of DirectoryTree.xaml.cs
            (RootModel as DirectoryTreeViewModel).SelectedDirectoryModel = this;
        }
Exemple #21
0
 public string GetAlbumArtist(DirectoryInfo directory)
 {
     if (SubDirectories.Contains(directory.Name))
     {
         return(GetAlbumArtist(directory.Parent));
     }
     else
     {
         if (IsSpecialtyAlbum)
         {
             return(SpecialtyAlbumName);
         }
         else
         {
             return(directory.Parent.Name);
         }
     }
 }
Exemple #22
0
        public string GetAlbumYear(DirectoryInfo directory)
        {
            if (SubDirectories.Contains(directory.Name))
            {
                return(GetAlbumYear(directory.Parent));
            }
            else
            {
                if (IsSpecialtyAlbum)
                {
                    return("0000");
                }
                else
                {
                    int endIndex = directory.Name.IndexOf(" - ");

                    return(directory.Name.Substring(0, endIndex));
                }
            }
        }
        protected override void FetchData(bool refresh)
        {
            base.FetchData(refresh);

            if (bgWorker_loadSub == null)
            {
                return;
            }

            if (!IsLoaded)
            {
                refresh = true; //Not loaded before, force refresh.
                SubDirectories.Clear();
            }

            if (refresh)
            {
                bgWorker_loadSub.RunBackgroundTask();
            }
        }
Exemple #24
0
        private string GetAlbumName(DirectoryInfo directory)
        {
            if (SubDirectories.Contains(directory.Name))
            {
                return(GetAlbumName(directory.Parent));
            }
            else
            {
                if (IsSpecialtyAlbum)
                {
                    return(directory.Name);
                }
                else
                {
                    int startIndex = directory.Name.IndexOf(" - ") + 3;

                    return(directory.Name.Substring(startIndex));
                }
            }
        }
Exemple #25
0
        private FileTree SelectDirectory(string[] path)
        {
            // make the top level directory selectable by passing an empty path
            //if ((path.Length == 0) || ((path.Length == 1) && (path[0].Length == 1) && (PathSeparators.Contains(path[0][0]))))
            if (path.Length == 0)
            {
                return(this);
            }

            FileTree sub = SubDirectories.First(subDir => subDir.Name == path[0]);

            if ((sub != null) && (path.Length > 1))
            {
                return(sub.SelectDirectory(path.Skip(1).ToArray()));
            }
            else
            {
                return(sub);
            }
        }
        private void setUpBackgroundWorker()
        {
            bgWorker_loadSub = new BackgroundTaskManager <DispatcherNotifiedObservableCollection <DirectoryTreeItemViewModel> >(
                () =>
            {
                IsLoading = true;
                return(getDirectories());
            },
                (result) =>
            {
                List <DirectoryTreeItemViewModel> delList = new List <DirectoryTreeItemViewModel>(SubDirectories.ToArray());
                List <DirectoryTreeItemViewModel> addList = new List <DirectoryTreeItemViewModel>();

                foreach (DirectoryTreeItemViewModel model in result)
                {
                    if (delList.Contains(model))
                    {
                        delList.Remove(model);
                    }
                    else
                    {
                        addList.Add(model);
                    }
                }

                foreach (DirectoryTreeItemViewModel model in delList)
                {
                    SubDirectories.Remove(model);
                }

                foreach (DirectoryTreeItemViewModel model in addList)
                {
                    SubDirectories.Add(model);
                }

                HasSubDirectories = SubDirectories.Count > 0;


                IsLoading = false;
            });
        }
        /// <summary>
        /// Creates a new sub-directory with a default name in this directory.
        /// </summary>
        /// <param name="editing">Indicates whether the new sub-directory should be put in edit mode immediately when constructed.</param>
        /// <returns>A new instance of <see cref="DirectoryViewModel"/> representing the new sub-directory.</returns>
        public DirectoryViewModel CreateSubDirectory(bool editing)
        {
            var newDirectory = new DirectoryViewModel(NamingHelper.ComputeNewName(NewFolderDefaultName, SubDirectories.Cast <DirectoryBaseViewModel>(), x => x.Name), this, true)
            {
                IsEditing = editing
            };

            return(newDirectory);
        }
        bool IAddChildViewModel.CanAddChildren(IReadOnlyCollection <object> children, AddChildModifiers modifiers, out string message)
        {
            if (children.Any(x => (x is IIsEditableViewModel) && !((IIsEditableViewModel)x).IsEditable))
            {
                message = "Some source items are read-only";
                return(false);
            }

            if (!Package.IsEditable)
            {
                message = "Read-only package";
                return(false);
            }

            message = $"Add to {Path}";

            foreach (var child in children)
            {
                var mountPoint = child as MountPointViewModel;
                var directory  = child as DirectoryViewModel;
                var asset      = child as AssetViewModel;
                if (mountPoint != null)
                {
                    message = DragDropBehavior.InvalidDropAreaMessage;
                    return(false);
                }
                if (directory != null)
                {
                    if (directory == this)
                    {
                        message = "Can't drop a folder on itself or its children";
                        return(false);
                    }
                    if (directory.Root.GetType() != Root.GetType())
                    {
                        message = "Incompatible folder";
                        return(false);
                    }
                    if (directory.Root is ProjectViewModel && Root != directory.Root)
                    {
                        message = "Can't move source files between projects";
                        return(false);
                    }
                    if (SubDirectories.Any(x => x.Name == directory.Name))
                    {
                        message = $"Directory {((this is DirectoryViewModel) ? Path : Name)} already contains a subfolder named {directory.Name}";
                        return(false);
                    }
                    if (children.OfType <DirectoryViewModel>().Any(x => x != child && string.Compare(x.Name, directory.Name, StringComparison.OrdinalIgnoreCase) == 0))
                    {
                        message = "Can't move directories with duplicate names";
                        return(false);
                    }
                    var currentParent = Parent;
                    while (currentParent != null)
                    {
                        if (currentParent == directory)
                        {
                            message = "Can't drop a directory on itself or its children";
                            return(false);
                        }
                        currentParent = currentParent.Parent;
                    }
                }
                else if (asset != null)
                {
                    if (asset.IsLocked)
                    {
                        message = $"Asset {asset.Url} can't be moved";
                        return(false);
                    }
                    if (Assets.Any(x => string.Compare(x.Name, asset.Name, StringComparison.OrdinalIgnoreCase) == 0))
                    {
                        message = $"{(!string.IsNullOrEmpty(Path) ? $"Directory {Path}" : "This directory")} already contains an asset named {asset.Name}";
                        return(false);
                    }
                    if (children.OfType <AssetViewModel>().Any(x => x != child && string.Compare(x.Name, asset.Name, StringComparison.OrdinalIgnoreCase) == 0))
                    {
                        message = "Can't move assets with duplicate names";
                        return(false);
                    }
                    if (asset.Directory.Root.GetType() != Root.GetType())
                    {
                        message = "Incompatible folder";
                        return(false);
                    }
                    if (asset.Directory.Root is ProjectViewModel && Root != asset.Directory.Root)
                    {
                        message = "Can't move source files between projects";
                        return(false);
                    }
                }
                else
                {
                    message = "Only folders can be dropped";
                    return(false);
                }
            }
            return(true);
        }
 public IEnumerator GetEnumerator()
 {
     return(SubDirectories.GetEnumerator());
 }
 public void AddDirectories(IEnumerable <NameSpaceDirectory> directories)
 {
     SubDirectories.AddRange(directories);
 }