public override ICollection <FilterValue> GetAvailableValues(IEnumerable <Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter)
        {
            IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory;

            if (cd == null)
            {
                throw new NotConnectedException("The MediaLibrary is not connected");
            }

            IUserManagement userProfileDataManagement = ServiceRegistration.Get <IUserManagement>();

            if (!userProfileDataManagement.IsValidUser)
            {
                return(new List <FilterValue>());
            }

            IFilter unwatchedFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or,
                                                                              new EmptyUserDataFilter(userProfileDataManagement.CurrentUser.ProfileId, UserDataKeysKnown.KEY_PLAY_COUNT),
                                                                              new RelationalUserDataFilter(userProfileDataManagement.CurrentUser.ProfileId, UserDataKeysKnown.KEY_PLAY_COUNT, RelationalOperator.EQ, "0"));

            IFilter watchedFilter = new RelationalUserDataFilter(userProfileDataManagement.CurrentUser.ProfileId, UserDataKeysKnown.KEY_PLAY_COUNT, RelationalOperator.GT, "0");

            int numUnwatchedItems = cd.CountMediaItems(necessaryMIATypeIds, BooleanCombinationFilter.CombineFilters(BooleanOperator.And, filter, unwatchedFilter), true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds));
            int numWatchedItems   = cd.CountMediaItems(necessaryMIATypeIds, BooleanCombinationFilter.CombineFilters(BooleanOperator.And, filter, watchedFilter), true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds));

            return(new List <FilterValue>(new FilterValue[]
            {
                new FilterValue(Consts.RES_VALUE_UNWATCHED, unwatchedFilter, null, numUnwatchedItems, this),
                new FilterValue(Consts.RES_VALUE_WATCHED, watchedFilter, null, numWatchedItems, this),
            }.Where(fv => !fv.NumItems.HasValue || fv.NumItems.Value > 0)));
        }
Ejemplo n.º 2
0
        public override ICollection <FilterValue> GetAvailableValues(IEnumerable <Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter)
        {
            IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory;

            if (cd == null)
            {
                throw new NotConnectedException("The MediaLibrary is not connected");
            }
            IFilter emptyFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or,
                                                                          new EmptyFilter(ImageAspect.ATTR_WIDTH),
                                                                          new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.EQ, 0),
                                                                          new EmptyFilter(ImageAspect.ATTR_HEIGHT),
                                                                          new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.EQ, 0));
            IFilter simpleSmallFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And,
                                                                                new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.LT, Consts.SMALL_SIZE_THRESHOLD),
                                                                                new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.LT, Consts.SMALL_SIZE_THRESHOLD));
            IFilter smallFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And,
                                                                          simpleSmallFilter,
                                                                          new NotFilter(BooleanCombinationFilter.CombineFilters(BooleanOperator.Or,
                                                                                                                                new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.EQ, 0),
                                                                                                                                new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.EQ, 0))));
            IFilter bigFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or,
                                                                        new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.GT, Consts.BIG_SIZE_THRESHOLD),
                                                                        new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.GT, Consts.BIG_SIZE_THRESHOLD));
            IFilter mediumFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And,
                                                                           new NotFilter(simpleSmallFilter),
                                                                           new NotFilter(bigFilter));
            int numEmptyItems  = cd.CountMediaItems(necessaryMIATypeIds, emptyFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds));
            int numSmallItems  = cd.CountMediaItems(necessaryMIATypeIds, smallFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds));
            int numMediumItems = cd.CountMediaItems(necessaryMIATypeIds, mediumFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds));
            int numBigItems    = cd.CountMediaItems(necessaryMIATypeIds, bigFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds));

            return(new List <FilterValue>(new FilterValue[]
            {
                new FilterValue(Consts.RES_VALUE_EMPTY_TITLE, emptyFilter, null, numEmptyItems, this),
                new FilterValue(Consts.RES_IMAGE_FILTER_SMALL, smallFilter, null, numSmallItems, this),
                new FilterValue(Consts.RES_IMAGE_FILTER_MEDIUM, mediumFilter, null, numMediumItems, this),
                new FilterValue(Consts.RES_IMAGE_FILTER_BIG, bigFilter, null, numBigItems, this),
            }.Where(fv => !fv.NumItems.HasValue || fv.NumItems.Value > 0)));
        }
Ejemplo n.º 3
0
        public override ICollection <FilterValue> GetAvailableValues(IEnumerable <Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter)
        {
            IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory;

            if (cd == null)
            {
                throw new NotConnectedException("The MediaLibrary is not connected");
            }

            IFilter unwatchedFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or,
                                                                              new EmptyFilter(MediaAspect.ATTR_PLAYCOUNT),
                                                                              new RelationalFilter(MediaAspect.ATTR_PLAYCOUNT, RelationalOperator.EQ, 0));

            IFilter watchedFilter = new RelationalFilter(MediaAspect.ATTR_PLAYCOUNT, RelationalOperator.GT, 0);

            int numUnwatchedItems = cd.CountMediaItems(necessaryMIATypeIds, unwatchedFilter, true);
            int numWatchedItems   = cd.CountMediaItems(necessaryMIATypeIds, watchedFilter, true);

            return(new List <FilterValue>(new FilterValue[]
            {
                new FilterValue(Consts.RES_VALUE_UNWATCHED, unwatchedFilter, null, numUnwatchedItems, this),
                new FilterValue(Consts.RES_VALUE_WATCHED, watchedFilter, null, numWatchedItems, this),
            }.Where(fv => !fv.NumItems.HasValue || fv.NumItems.Value > 0)));
        }