/// <summary> /// Reloads the displayed affects. /// </summary> public void ReloadDisplayedAffects() { GroupMates.Clear(); _displayedAffectNames = new List <string>(Settings.Default.GroupWidgetAffects); DisplayNumber = Settings.Default.GroupWidgetDisplayNumber; DisplayedAffectCount = Settings.Default.GroupWidgetDisplayAffectsCount; AffectsPanelWidth = _displayedAffectCount * 23; Width = AffectsPanelWidth + 22 + 140 + 60 + 20 + 20 + 5 + 5 + 20 + 44 + 4; MemTimeVisible = Settings.Default.GroupWidgetDisplayMemTime; if (!DisplayNumber) { Width -= 22; } if (!MemTimeVisible) { Width -= 44; } DisplayedItemLimit = Settings.Default.GroupWidgetLimitOn ? Settings.Default.GroupWidgetLimit : 9999; if (DisplayedItemLimit < 1) { DisplayedItemLimit = 1; } MoreItemsAvailable = false; OnPropertyChanged("Width"); }
/// <summary> /// Updates the model. /// </summary> /// <param name="groupMates">The group mates as they come from server.</param> public void UpdateModel([NotNull] IEnumerable <CharacterStatus> groupMates) { Assert.ArgumentNotNull(groupMates, "groupMates"); int position = 0; bool moreItemsAvailable = false; foreach (var characterStatus in groupMates) { if (position >= DisplayedItemLimit) { moreItemsAvailable = true; break; } if (position < GroupMates.Count && GroupMates[position].Name == characterStatus.Name) { GroupMates[position].UpdateFromModel(characterStatus, position + 1); if (SelectedGroupMate != null && SelectedGroupMate == GroupMates[position]) { RootModel.SelectedGroupMate = characterStatus; } } else { var affectsList = _displayedAffectNames.Select(af => Constants.AllAffects.First(a => a.Name == af)); GroupMates.Insert(position, new GroupMateViewModel(characterStatus, affectsList, position + 1, AffectsPanelWidth) { DisplayNumber = DisplayNumber, MemTimeVisibleSetting = MemTimeVisible }); } position++; } for (int i = position; i < GroupMates.Count; i++) { if (SelectedGroupMate != null && SelectedGroupMate == GroupMates[position]) { SelectedGroupMate = null; } GroupMates.RemoveAt(position); } MoreItemsAvailable = moreItemsAvailable; }