示例#1
0
 public ChangesModel(ISourceControlProvider provider)
 {
     m_Provider = provider;
     m_Requests = new HashSet <string>();
     m_AllItem  = new ChangeEntryData {
         Entry = new ChangeEntry(string.Empty), All = true
     };
     entryData            = new Dictionary <string, IChangeEntryData>();
     m_Conflicted         = new List <IChangeEntryData>();
     toggledEntries       = new Dictionary <string, bool>();
     SavedSearchQuery     = string.Empty;
     SavedRevisionSummary = string.Empty;
 }
示例#2
0
        /// <summary>
        /// Convert and cache new list of changes.
        /// </summary>
        /// <param name="list">New list of changes.</param>
        internal virtual void UpdateChangeList([NotNull] IReadOnlyList <IChangeEntry> list)
        {
            TotalCount = list.Count;

            // Create a new set of containers.
            var newEntryData = new Dictionary <string, IChangeEntryData> {
                [string.Empty] = m_AllItem
            };
            var newToggledEntries = new Dictionary <string, bool>();
            var conflicted        = new List <IChangeEntryData>();

            var all          = m_AllItem.Toggled;
            var toggledCount = 0;

            foreach (var entry in list)
            {
                // Transfer toggled state from old lookup into new.
                toggledEntries.TryGetValue(entry.Path, out var toggled);
                toggled = toggled || all || entry.Staged;
                newToggledEntries[entry.Path] = toggled;

                // Create a new data item for the entry.
                var item = new ChangeEntryData {
                    Entry = entry, Toggled = toggled
                };
                newEntryData.Add(entry.Path, item);

                // Update counts.
                if (toggled)
                {
                    toggledCount++;
                }
                if (entry.Unmerged)
                {
                    conflicted.Add(item);
                }
            }

            // Store the new containers.
            entryData      = newEntryData;
            toggledEntries = newToggledEntries;
            ToggledCount   = toggledCount;
            m_Conflicted   = conflicted;

            UpdateAllItemToggle();
        }
示例#3
0
        public ChangesModel(ISourceControlProvider provider)
        {
            m_Provider = provider;
            m_AllItem  = new ChangeEntryData {
                Entry = new ChangeEntry(string.Empty), All = true
            };
            entryData             = new Dictionary <string, IChangeEntryData>();
            toggledEntries        = new Dictionary <string, bool>();
            SavedSearchQuery      = string.Empty;
            SavedRevisionSummary  = string.Empty;
            m_IsRequestingChanges = false;

            // Ensure consistent start state.
            if (m_Provider.RequestingChanges)
            {
                OnStartedRequestingChanges();
            }

            UpdateChangeList(m_Provider.ChangeList);
        }
示例#4
0
        public ChangesModel(ISourceControlProvider provider)
        {
            m_Provider = provider;
            m_Requests = new HashSet <string>();
            m_Provider.UpdatedChangeList         += OnUpdatedChangeList;
            m_Provider.UpdatedSelectedChangeList += OnUpdatedSelectedChangesList;

            m_AllItem = new ChangeEntryData {
                Entry = new ChangeEntry(string.Empty), All = true
            };

            SavedRevisionSummary = WindowCache.Instance.RevisionSummary;
            SavedSearchQuery     = WindowCache.Instance.ChangesSearchValue;
            toggledEntries       = WindowCache.Instance.SimpleSelectedItems ?? new Dictionary <string, bool>();

            entryData    = new Dictionary <string, IChangeEntryData>();
            m_Conflicted = new List <IChangeEntryData>();

            WindowCache.Instance.BeforeSerialize += OnStop;
        }