private void CheckItem(FolderItemControl item, bool check) { item.IsChecked = check; foreach (FolderItemControl subItem in item.Items) { CheckItem(subItem, check); } }
private void UpdateWidth(FolderItemControl item, int maxVisibleLevel) { item.SetWidth(maxVisibleLevel); if (item.Items.Count > 0) { foreach (FolderItemControl subItem in item.Items) { UpdateWidth(subItem, maxVisibleLevel); } } }
private int GetMaxVisibleLevel(FolderItemControl item, int maxLevel) { if (item.IsVisible) { int level = Math.Max(maxLevel, item.Level); if (item.IsExpanded && item.Items.Count > 0) { foreach (FolderItemControl subItem in item.Items) { level = GetMaxVisibleLevel(subItem, level); } } return(level); } return(maxLevel); }
private int SetAltIndex(FolderItemControl item, int index) { const int altCount = 2; if (index >= altCount) { index = 0; } item.AltIndex = index++; item.Update(); if (item.IsExpanded && item.Items.Count > 0) { foreach (FolderItemControl subItem in item.Items) { index = SetAltIndex(subItem, index); } } return(index); }
private int GetPhotosCount(FolderItemControl item) { int count = 0; foreach (FolderItemControl subItem in item.Items) { count += subItem.PhotosCount; } var dir = new DirectoryInfo(item.FullName); foreach (FileInfo file in dir.GetFiles()) { if (IsImageExtension(file)) { count++; } } return(count); }
private void AddFolder(DirectoryInfo dir, ItemsControl item, int level) { try { if (item != null && dir.Exists) { string name; int photosCount; // Root folder. Display volume label and drive type if (dir.Parent == null) { var drive = new DriveInfo(dir.Name); if (drive.VolumeLabel != "") { name = drive.VolumeLabel; } else { name = DriveTypeToString(drive.DriveType); } } // Display folder name else if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) { name = dir.Name; } // Skip hidden folders else { return; } var newItem = new FolderItemControl(); newItem.FullName = dir.FullName; item.Items.Add(newItem); foreach (DirectoryInfo subDir in dir.GetDirectories()) { AddFolder(subDir, newItem, level + 1); } photosCount = GetPhotosCount(newItem); if (photosCount > 0) { newItem.ShortName = name; newItem.Date = dir.LastWriteTime; newItem.PhotosCount = photosCount; newItem.Level = level; newItem.Update(); newItem.Checked += new RoutedEventHandler(CheckedHandler); newItem.ExpandedCollapsed += new RoutedEventHandler(ExpandedCollapsedHandler); newItem.VisibilityChanged += new DependencyPropertyChangedEventHandler(VisibilityChangedHandler); } else { item.Items.Remove(newItem); newItem = null; } } } catch (Exception e) { ExecutionEngine.EventLogger.WriteExceptionInfo(e); } }