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