Example #1
0
        /// <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");
        }
Example #2
0
        /// <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;
        }