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"); }
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); }