Exemplo n.º 1
0
        private void AnalyzeChanges(FolderNode folder, bool expand, ref bool showHigher, ref bool showLower)
        {
            // look at files for changes
            foreach (FileItem file in folder.Files.Values)
                foreach (ulong id in file.GetRealChanges().Keys)
                {
                    ChangeCount[id]++;

                    if (HigherIDs.Contains(id))
                        showHigher = true;
                    else
                        showLower = true;
                }
            // look at folders for changes
            foreach (FolderNode sub in folder.Folders.Values)
            {
                foreach (ulong id in sub.GetRealChanges().Keys)
                {
                    ChangeCount[id]++;

                    if (HigherIDs.Contains(id))
                        showHigher = true;
                    else
                        showLower = true;
                }

                // recurse
                bool subChangesHigh = false, subChangesLow = false;

                AnalyzeChanges(sub, expand, ref subChangesHigh, ref subChangesLow);

                if(subChangesHigh)
                    showHigher = true;
                if(subChangesLow)
                    showLower = true;
            }

            folder.ContainsHigherChanges = showHigher;
            folder.ContainsLowerChanges = showLower;

            if (showHigher || showLower)
            {
                folder.UpdateOverlay();

                if (expand)
                    folder.EnsureVisible();
            }
        }