예제 #1
0
 public BackupFolder(string name, Folder folder)
 {
     ParentId  = null;
     Name      = name;
     Directory = folder.GetDirectory();
     SubType   = folder.SubType;
 }
예제 #2
0
 public BackupFolder(long?parentId, DirectoryInfo directory, SubfolderType subType)
 {
     ParentId  = parentId;
     Directory = directory;
     Name      = Directory.Name;
     SubType   = subType;
 }
예제 #3
0
        private static void OnSubTypeSelectionPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            FolderPicker           s        = (FolderPicker)sender;
            SubfolderSelectionType oldValue = (SubfolderSelectionType)e.OldValue;
            SubfolderSelectionType newValue = (SubfolderSelectionType)e.NewValue;

            if (s.Folder != null)
            {
                s.UpdateCbxSubfolder();
            }
            else
            {
                SubfolderType subType = GetSubfolderType(oldValue, s.cbxSubfolder.IsChecked);
                (bool isVisible, bool?isChecked) = GetCbxSubfolderProperties(newValue, subType);

                s.cbxSubfolder.Visibility = isVisible ? Visibility.Visible : Visibility.Collapsed;
                s.cbxSubfolder.IsChecked  = isChecked;
            }
        }
예제 #4
0
        public static IEnumerable <FileInfo> EnumerateFiles(this DirectoryInfo dir, SubfolderType type)
        {
            if (type == SubfolderType.No)
            {
                yield break;
            }
            if (type == SubfolderType.This)
            {
                type = SubfolderType.No;
            }

            foreach (FileInfo file in dir.GetFiles())
            {
                yield return(file);
            }
            foreach (FileInfo file in EnumerateDirectories(dir, type).SelectMany(GetFilesWithoutException))
            {
                yield return(file);
            }
        }
예제 #5
0
        public static void DeleteContent(this DirectoryInfo dir, SubfolderType type)
        {
            if (type == SubfolderType.No)
            {
                return;
            }

            if (type == SubfolderType.All)
            {
                foreach (DirectoryInfo subDir in EnumerateDirectories(dir, SubfolderType.This))
                {
                    DeleteContent(subDir, SubfolderType.All);
                    subDir.Delete(true);
                }
            }

            foreach (FileInfo file in EnumerateFiles(dir, SubfolderType.This))
            {
                file.Delete();
            }
        }
예제 #6
0
 public SerializableFolder(string originalPath, SubfolderType subType, bool autoRefresh)
 {
     AutoRefresh  = autoRefresh;
     OriginalPath = originalPath;
     SubType      = subType;
 }
예제 #7
0
 public SerializableFolder(string originalPath, SubfolderType subType)
     : this(originalPath, subType, Folder.AutoRefreshDefault)
 {
 }
예제 #8
0
        public static IEnumerable <DirectoryInfo> EnumerateDirectories(this DirectoryInfo dir, SubfolderType type)
        {
            if (type == SubfolderType.No)
            {
                yield break;
            }

            DirectoryInfo[] subDirs;
            try
            {
                subDirs = dir.GetDirectories();
            }
            catch
            {
                yield break;
            }

            foreach (DirectoryInfo subDir in subDirs)
            {
                yield return(subDir);

                if (type == SubfolderType.This)
                {
                    continue;
                }

                foreach (DirectoryInfo subSubDir in EnumerateDirectories(subDir, SubfolderType.All))
                {
                    yield return(subSubDir);
                }
            }
        }
예제 #9
0
        public static IEnumerable <DirectoryInfo> EnumerateDirectoriesThrow(this DirectoryInfo dir, SubfolderType type)
        {
            if (type == SubfolderType.No)
            {
                yield break;
            }

            foreach (DirectoryInfo subDir in dir.GetDirectories())
            {
                yield return(subDir);

                if (type == SubfolderType.This)
                {
                    continue;
                }

                foreach (DirectoryInfo subSubDir in EnumerateDirectoriesThrow(subDir, SubfolderType.All))
                {
                    yield return(subSubDir);
                }
            }
        }
예제 #10
0
 public static long GetLength(this DirectoryInfo dir, SubfolderType type)
 {
     return(EnumerateFiles(dir, type).Sum(f => f.Length));
 }