AddItem() private method

private AddItem ( object item, bool allowSorting ) : void
item object
allowSorting bool
return void
		void AddInSubtree (StandardCollectionViewGroup group, object item, CultureInfo culture, IList<GroupDescription> descriptions, bool allowSorting)
		{
			int depth = group.Depth;
			if (group.IsBottomLevel) {
				group.AddItem (item, allowSorting);
				CollectionChanged.Raise (this, new NotifyCollectionChangedEventArgs (NotifyCollectionChangedAction.Add, item, IndexOfSubtree (item)));
			} else {
				var desc = descriptions [group.Depth];
				var groupNames = desc.GroupNameFromItem (item, group.Depth, culture);
				if (groupNames is IList) {
					foreach (var name in (IList) groupNames)
						AddInSubtree (group, item, culture, descriptions, allowSorting, name);
				} else {
					AddInSubtree (group, item, culture, descriptions, allowSorting, groupNames);
				}
			}
		}
		void AddInSubtree (StandardCollectionViewGroup group, object item, CultureInfo culture, IList<GroupDescription> descriptions, bool allowSorting, object name)
		{
			bool added = false;
			foreach (StandardCollectionViewGroup g in group.Items) {
				var desc = descriptions [group.Depth];
				if (desc.NamesMatch (g.Name, name)) {
					AddInSubtree (g, item, culture, descriptions, allowSorting);
					added = true;
				}
			}

			if (!added) {
				int depth = group.Depth + 1;
				var g = new StandardCollectionViewGroup (group, name, depth, depth == descriptions.Count, group.Sorters);
				group.AddItem (g, allowSorting);
				AddInSubtree (g, item, culture, descriptions, allowSorting);
			}
		}