// Decide whether item should show timestamp header, name header etc... private void DecorateItems(IEnumerable <InstaDirectInboxItemWrapper> wrappedItems) { var lastItem = ObservableItems.FirstOrDefault(); var itemList = wrappedItems.ToList(); var refItem = itemList.Last(); if (lastItem != null) { if (refItem.Timestamp <= lastItem.Timestamp) { lastItem.ShowTimestampHeader = !IsCloseEnough(lastItem.Timestamp, refItem.Timestamp); lastItem.ShowNameHeader = lastItem.UserId != refItem.UserId && !lastItem.FromMe && Users.Count > 1; } else { // New item added to the top var latestItem = ObservableItems.Last(); refItem.ShowTimestampHeader = !IsCloseEnough(latestItem.Timestamp, refItem.Timestamp); refItem.ShowNameHeader = latestItem.UserId != refItem.UserId && !latestItem.FromMe && Users.Count > 1; } } for (int i = itemList.Count - 1; i >= 1; i--) { itemList[i].ShowTimestampHeader = !IsCloseEnough(itemList[i].Timestamp, itemList[i - 1].Timestamp); itemList[i].ShowNameHeader = itemList[i].UserId != itemList[i - 1].UserId && !itemList[i].FromMe && Users.Count > 1; } }
public FeedsViewModel(ItemBoxViewModel itemBox) { SelectedIndex = itemBox.ToNumForFeed(); Network = new ObservableItems <FeedItemViewModel>(service.networkItems); Popular = new ObservableItems <FeedItemViewModel>(service.popularItems); Recent = new ObservableItems <FeedItemViewModel>(service.recentItems); }
public virtual void AddItem(Employee employee) { var item = new PremiumItem() { Employee = employee, Premium = this }; ObservableItems.Add(item); }
private void FixItemList() { // Somehow item list got messed up and items are not unique anymore var duplicates = ObservableItems.GroupBy(x => x.ItemId).Where(g => g.Count() > 1) .Select(y => y); foreach (var duplicateGroup in duplicates) { var duplicate = duplicateGroup.First(); ObservableItems.Remove(duplicate); } }
private void SetTagged() { if (currentTag == null) { Tagged = new ObservableItems <BookmarkItemViewModel>(service.taggedItems); } else { Tagged = new ObservableItems <BookmarkItemViewModel>(service.allItems.Where(x => x.Tags.Contains(currentTag)).ToList()); } Tagged.Initialize(); }
public BookmarksViewModel(ItemBoxViewModel itemBox) { SelectedIndex = itemBox.ToNum(); Messenger.Default.Register <GenericMessage <Tag> >(this, ReflectToTag); All = new ObservableItems <BookmarkItemViewModel>(service.allItems); Unread = new ObservableItems <BookmarkItemViewModel>(service.unreadItems); Private_ = new ObservableItems <BookmarkItemViewModel>(service.privateItems); Public_ = new ObservableItems <BookmarkItemViewModel>(service.publicItems); Untagged = new ObservableItems <BookmarkItemViewModel>(service.untaggedItems); Tagged = new ObservableItems <BookmarkItemViewModel>(service.taggedItems); GlobalMessenger.Register <BookmarkChangeMessage>(this, m => { if (m.Type == BookmarkChangeType.Add) { All.Refresh(); Unread.Refresh(); Private_.Refresh(); Public_.Refresh(); Untagged.Refresh(); Tagged.Refresh(); } else if (m.Type == BookmarkChangeType.Delete || m.Type == BookmarkChangeType.Modify) { if (All.Items.Contains(m.Content)) { All.Refresh(); } if (Unread.Items.Contains(m.Content)) { Unread.Refresh(); } if (Private_.Items.Contains(m.Content)) { Private_.Refresh(); } if (Public_.Items.Contains(m.Content)) { Public_.Refresh(); } if (Untagged.Items.Contains(m.Content)) { Untagged.Refresh(); } if (Tagged.Items.Contains(m.Content)) { Tagged.Refresh(); } } }); }
public virtual void AddItem(SubdivisionIssueOperation operation, int count) { if (operation.Issued == 0) { throw new InvalidOperationException("Этот метод можно использовать только с операциями выдачи."); } if (Items.Any(p => DomainHelper.EqualDomainObjects(p.SubdivisionWriteoffOperation?.IssuedOperation, operation))) { logger.Warn("Номенклатура из этой выдачи уже добавлена. Пропускаем..."); return; } ObservableItems.Add(new WriteoffItem(this, operation, count)); }
private void UpdateItemList(ICollection <DirectItem> source) { if (source == null) { return; } var convertedSource = source.Select(x => new InstaDirectInboxItemWrapper(x, this, _instaApi)).ToList(); DecorateItems(convertedSource); if (ObservableItems.Count == 0) { foreach (var item in convertedSource) { ObservableItems.Add(item); } return; } foreach (var item in convertedSource) { var existingItem = ObservableItems.SingleOrDefault(x => x.Equals(item)); var existed = existingItem != null; if (existed) { if (item.Reactions != null) { existingItem.Reactions.Update(item.Reactions, Users); } continue; } for (var i = ObservableItems.Count - 1; i >= 0; i--) { if (item.Timestamp > ObservableItems[i].Timestamp) { ObservableItems.Insert(i + 1, item); break; } if (i == 0) { ObservableItems.Insert(0, item); } } } }
public virtual void AddItem(StockPosition position, Warehouse warehouse, int count) { if (position == null) { throw new ArgumentNullException(nameof(position)); } if (warehouse == null) { throw new ArgumentNullException(nameof(warehouse)); } if (Items.Any(p => p.WarehouseOperation?.ExpenseWarehouse == warehouse && position.Equals(p.StockPosition))) { logger.Warn($"Позиция [{position}] для склада {warehouse.Name} уже добавлена. Пропускаем..."); return; } ObservableItems.Add(new WriteoffItem(this, position, warehouse, count)); }
public virtual void RemoveItem(WriteoffItem item) { ObservableItems.Remove(item); }