private void SortItems()
        {
            IEnumerable source = ItemsSource;

            if (source == null)
            {
                SortedItems.Clear();
                return;
            }

            IEnumerator enumerator = source.GetEnumerator();

            if (!enumerator.MoveNext())
            {
                SortedItems.Clear();
                return;
            }

            SortComparer     comparer = Comparer;
            SortedCollection sorted   = new SortedCollection();

            // using binary insertion sort algorithm
            int i = 1;

            sorted.Add(enumerator.Current);
            while (enumerator.MoveNext())
            {
                object item        = enumerator.Current;
                int    insertIndex = BinarySearch(comparer, sorted, item, 0, i - 1);
                sorted.Insert(insertIndex, item);
                ++i;
            }

            SortedItems = sorted;
        }
Esempio n. 2
0
 public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = Response.GetHashCode();
         hashCode = (hashCode * 397) ^ (SortedItems?.GetHashCode() ?? 0);
         return(hashCode);
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Загружает список переводов
 /// </summary>
 /// <param name="path">Путь к файлу переводов</param>
 /// <param name="containerType">Тип контейнера</param>
 public void LoadTranslations(string path, Type containerType)
 {
     if (MessageBox.Show("Очистить текущие переводы?", "Загрузка переводов", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
     {
         Core.Translations.Clear();
         TranslationConflicts.Clear();
     }
     Core.Translations.LoadTranslations(path, containerType, (itm, trans) =>
     {
         SortedItems <string> cur;
         if (_TranslationConflicts.TryGetValue(itm, out cur))
         {
             cur.Add(trans);
         }
         else
         {
             _TranslationConflicts[itm] = new SortedItems <string>()
             {
                 trans
             }
         };
     });
     NotifyPropertiesChanged(nameof(TranslationConflicts), nameof(HasTranslationConflicts));
 }
Esempio n. 4
0
 public override int GetHashCode()
 {
     return(SortedItems?.GetHashCode() ?? 0);
 }
Esempio n. 5
0
 /// <summary>
 /// Equalses the specified other.
 /// </summary>
 /// <param name="other">The other.</param>
 /// <returns></returns>
 public bool Equals(PagedChangeSet <TObject, TKey> other)
 {
     return(SortedItems.SequenceEqual(other.SortedItems));
     // return Equals(this.SortedItems, other.SortedItems);
 }
Esempio n. 6
0
 public override int GetHashCode()
 {
     return(SortedItems != null ? SortedItems.GetHashCode() : 0);
 }