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