public void FilterClicked(object param)
        {
            DeckType attrib;

            if (!Enum.TryParse <DeckType>(param.ToString(), out attrib))
            {
                throw new ArgumentException(string.Format("Unknow value for DeckType={0}", param));
            }

            //toggle filter value
            FilterButtonState[attrib] = !FilterButtonState[attrib];

            //fires to many events on colection, will filter once for reset, and then for every selected attrib
            FilteredTypes.Clear();

            //if all unslected - show all
            if (FilterButtonState.All(f => !f.Value))
            {
                Enum.GetValues(typeof(DeckType)).OfType <DeckType>().All(t => { FilteredTypes.Add(t); return(true); });
            }
            else
            {
                foreach (DeckType type in FilterButtonState.Where(f => f.Value).Select(f => f.Key))
                {
                    FilteredTypes.Add(type);
                }
            }

            messanger.Send(
                new DeckListFilterChanged(DeckListFilterChanged.Source.TypeFilter, FilteredTypes, showCompletedArenaRuns, showHiddenDecks, null, null),
                ControlMessangerContext.DeckList_DeckFilterControl);
        }
        public void Reset()
        {
            foreach (DeckType a in Enum.GetValues(typeof(DeckType)))
            {
                //unselct all in UI
                FilterButtonState[a] = false;

                //reset filter collection
                FilteredTypes.Clear();
                Enum.GetValues(typeof(DeckType)).OfType <DeckType>().All(t => { FilteredTypes.Add(t); return(true); });
            }
            ShowCompletedArenaRuns = false;
            ShowHiddenDecks        = false;
            RaisePropertyChangedEvent("FilterButtonState");
        }
Esempio n. 3
0
        public bool CanHaveStatefulFields(Control control)
        {
            if (control is LiteralControl)             //quickly removed the LiteralControls
            {
                return(false);
            }
            if (control is UserControl || control is Page)
            {
                if (control is IStatefulFieldsControl)
                {
                    if (((IStatefulFieldsControl)control).IgnoreStatefulFields)
                    {
                        return(false);
                    }
                }
                return(Attribute.GetCustomAttribute(control.GetType(), typeof(IgnoreStatefulFields)) == null);
            }
            Type t = control.GetType();

            LogFactory.Log.Debug("inspecting " + t + control.ID + "(" + control.UniqueID + ")");
            if (AllowedTypes.Contains(t))
            {
                return(true);
            }
            if (FilteredTypes.Contains(t))
            {
                return(false);
            }
            foreach (Type ft in FilteredBaseTypes)
            {
                if (t.IsSubclassOf(ft))
                {
                    FilteredTypes.Add(t);
                    return(false);
                }
            }
            //this line took too much resources:
            //return Attribute.GetCustomAttribute(control.GetType(), typeof (HasStatefulField)) != null;
            return(true);
        }