Esempio n. 1
0
        public static PredefinedFilterCollection GetPredefinedFilters(MediaType mediaType, string fieldName)
        {
            string key = GetFilterKey(mediaType, fieldName);

            if (PredefinedFilterCache.ContainsKey(key))
            {
                return(PredefinedFilterCache[key]);
            }

            PredefinedFilterCollection predefinedFilters = null;
            IEnumerable <string>       uniqueValues      = GetUniqueValues(mediaType, fieldName);

            if (uniqueValues != null)
            {
                predefinedFilters = new PredefinedFilterCollection();
                PredefinedFilterCache.Add(key, predefinedFilters);

                foreach (string value in uniqueValues)
                {
                    PredefinedFilter predefinedFilter = new PredefinedFilter {
                        Name = value
                    };
                    predefinedFilter.Filter = CriteriaOperator.Parse(String.Format("Contains([{0}], '{1}')", fieldName, value.Replace("'", "''")));

                    predefinedFilters.Add(predefinedFilter);
                }
            }

            return(predefinedFilters);
        }
Esempio n. 2
0
        static FilterHelper()
        {
            Messenger.Default.Register(listener, (CultureChangeMessage message) =>
            {
                UniqueValuesCache.Remove("Movie_GenreIds");
                UniqueValuesCache.Remove("Tv_GenreIds");
                PredefinedFilterCache.Remove("Movie_GenreIds");
                PredefinedFilterCache.Remove("Tv_GenreIds");
            });

            App.Repository.Movies.CollectionChanged += (s, e) =>
            {
                if (e.Action == NotifyCollectionChangedAction.Add || e.Action == NotifyCollectionChangedAction.Remove)
                {
                    List <string> expiredKeys = PredefinedFilterCache.Keys.Where(x => x.StartsWith("Movie_") && !x.EndsWith("GenreIds")).ToList();
                    foreach (string key in expiredKeys)
                    {
                        UniqueValuesCache.Remove(key);
                        PredefinedFilterCache.Remove(key);
                    }
                }
            };

            App.Repository.TvShows.CollectionChanged += (s, e) =>
            {
                if (e.Action == NotifyCollectionChangedAction.Add || e.Action == NotifyCollectionChangedAction.Remove)
                {
                    List <string> expiredKeys = PredefinedFilterCache.Keys.Where(x => x.StartsWith("Tv_") && !x.EndsWith("GenreIds")).ToList();
                    foreach (string key in expiredKeys)
                    {
                        UniqueValuesCache.Remove(key);
                        PredefinedFilterCache.Remove(key);
                    }
                }
            };
        }