private void ApplyFilter()
        {
            bool IsActivityFilterEnabled = EventViewFilter.IsActivityFilterEnabled;

            // Apply filter to all events
            for (int idEvent = 0; idEvent < _allEventsInView.Count; idEvent++)
            {
                SensorEventViewModel sensorEvent = _allEventsInView[idEvent];
                sensorEvent.IsFiltered         = !ApplyStaticFilter(sensorEvent);
                sensorEvent.IsActivityFiltered = !ApplyActivityFilter(sensorEvent);
                sensorEvent.IsExpandedInView   = false;
                sensorEvent.IsStartOfSegment   = false;
                sensorEvent.IsEndOfSegment     = false;
            }
            if (IsActivityFilterEnabled)
            {
                for (int idEvent = 0; idEvent < _allEventsInView.Count; idEvent++)
                {
                    SensorEventViewModel sensorEvent = _allEventsInView[idEvent];
                    if (sensorEvent.IsActivityFiltered)
                    {
                        ExpandFilteredEvents(idEvent);
                    }
                }
            }
            EventsInView.Refresh();
        }
Exemple #2
0
        public RankingCategoryListPageViewModel(
            Services.PageManager pageManager,
            Services.DialogService dialogService,
            RankingSettings rankingSettings
            )
            : base(pageManager)
        {
            HohoemaDialogService = dialogService;
            RankingSettings      = rankingSettings;


            Func <RankingCategory, bool> checkFavorite = (RankingCategory cat) =>
            {
                return(RankingSettings.HighPriorityCategory.Any(x => x.Category == cat));
            };


            RankingCategoryItems         = new ObservableCollection <RankingCategoryHostListItem>();
            FavoriteRankingCategoryItems = new ObservableCollection <RankingCategoryListPageListItem>();

            SelectedRankingCategory = new ReactiveProperty <RankingCategoryListPageListItem>();

            AddFavRankingCategory = new DelegateCommand(async() =>
            {
                var items = new AdvancedCollectionView();
                items.SortDescriptions.Add(new SortDescription("IsFavorit", SortDirection.Descending));
                items.SortDescriptions.Add(new SortDescription("Category", SortDirection.Ascending));

                var highPriCat = RankingSettings.HighPriorityCategory;
                var lowPriCat  = RankingSettings.LowPriorityCategory;
                foreach (var i in RankingSettings.HighPriorityCategory)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = i.Category, IsFavorit = true
                    });
                }

                var middleRankingCategories = Enum.GetValues(typeof(RankingCategory)).Cast <RankingCategory>()
                                              .Where(x => !highPriCat.Any(h => x == h.Category))
                                              .Where(x => !lowPriCat.Any(l => x == l.Category))
                ;
                foreach (var category in middleRankingCategories)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = category
                    });
                }
                items.Refresh();

                var choiceItems = await HohoemaDialogService.ShowMultiChoiceDialogAsync(
                    "優先表示にするカテゴリを選択",
                    items.Cast <CategoryWithFav>().Select(x => new RankingCategoryInfo(x.Category)),
                    RankingSettings.HighPriorityCategory.ToArray(),
                    x => x.DisplayLabel
                    );

                if (choiceItems == null)
                {
                    return;
                }

                // choiceItemsに含まれるカテゴリをMiddleとLowから削除
                RankingSettings.ResetFavoriteCategory();

                // HighにchoiceItemsを追加(重複しないよう注意)
                foreach (var cat in choiceItems)
                {
                    RankingSettings.AddFavoritCategory(cat.Category);
                }

                await RankingSettings.Save();

                ResetRankingCategoryItems();
            });



            AddDislikeRankingCategory = new DelegateCommand(async() =>
            {
                var items = new AdvancedCollectionView();
                items.SortDescriptions.Add(new SortDescription("IsFavorit", SortDirection.Descending));
                items.SortDescriptions.Add(new SortDescription("Category", SortDirection.Ascending));

                var highPriCat = RankingSettings.HighPriorityCategory;
                var lowPriCat  = RankingSettings.LowPriorityCategory;
                foreach (var i in lowPriCat)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = i.Category, IsFavorit = true
                    });
                }
                var middleRankingCategories = Enum.GetValues(typeof(RankingCategory)).Cast <RankingCategory>()
                                              .Where(x => !highPriCat.Any(h => x == h.Category))
                                              .Where(x => !lowPriCat.Any(l => x == l.Category))
                ;
                foreach (var category in middleRankingCategories)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = category
                    });
                }
                items.Refresh();

                var choiceItems = await HohoemaDialogService.ShowMultiChoiceDialogAsync(
                    "非表示にするカテゴリを選択",
                    items.Cast <CategoryWithFav>().Select(x => new RankingCategoryInfo(x.Category)),
                    RankingSettings.LowPriorityCategory,
                    x => x.DisplayLabel
                    );

                if (choiceItems == null)
                {
                    return;
                }

                // choiceItemsに含まれるカテゴリをMiddleとLowから削除
                RankingSettings.ResetDislikeCategory();

                // HighにchoiceItemsを追加(重複しないよう注意)
                foreach (var cat in choiceItems)
                {
                    RankingSettings.AddDislikeCategory(cat.Category);
                }

                await RankingSettings.Save();

                ResetRankingCategoryItems();
            });

            ResetRankingCategoryItems();
        }
        public RankingCategoryListPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager, Services.HohoemaDialogService dialogService)
            : base(hohoemaApp, pageManager)
        {
            _HohoemaDialogService = dialogService;

            _RankingSettings = HohoemaApp.UserSettings.RankingSettings;


            Func <RankingCategory, bool> checkFavorite = (RankingCategory cat) =>
            {
                return(_RankingSettings.HighPriorityCategory.Any(x => x.Category == cat));
            };


            RankingCategoryItems         = new ObservableCollection <RankingCategoryHostListItem>();
            FavoriteRankingCategoryItems = new ObservableCollection <RankingCategoryListPageListItem>();

            SelectedRankingCategory = new ReactiveProperty <RankingCategoryListPageListItem>();

            AddFavRankingCategory = new DelegateCommand(async() =>
            {
                var items = new AdvancedCollectionView();
                items.SortDescriptions.Add(new SortDescription("IsFavorit", SortDirection.Descending));
                items.SortDescriptions.Add(new SortDescription("Category", SortDirection.Ascending));

                foreach (var i in HohoemaApp.UserSettings.RankingSettings.HighPriorityCategory)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = i.Category, IsFavorit = true
                    });
                }
                foreach (var i in HohoemaApp.UserSettings.RankingSettings.MiddlePriorityCategory)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = i.Category
                    });
                }
                items.Refresh();

                var choiceItems = await _HohoemaDialogService.ShowMultiChoiceDialogAsync(
                    "優先表示にするカテゴリを選択",
                    items.Cast <CategoryWithFav>().Select(x => new RankingCategoryInfo(x.Category)),
                    _RankingSettings.HighPriorityCategory.ToArray(),
                    x => x.DisplayLabel
                    );

                if (choiceItems == null)
                {
                    return;
                }

                // choiceItemsに含まれるカテゴリをMiddleとLowから削除
                _RankingSettings.ResetFavoriteCategory();

                // HighにchoiceItemsを追加(重複しないよう注意)
                foreach (var cat in choiceItems)
                {
                    _RankingSettings.AddFavoritCategory(cat.Category);
                }

                ResetRankingCategoryItems();
            });



            AddDislikeRankingCategory = new DelegateCommand(async() =>
            {
                var items = new AdvancedCollectionView();
                items.SortDescriptions.Add(new SortDescription("IsFavorit", SortDirection.Descending));
                items.SortDescriptions.Add(new SortDescription("Category", SortDirection.Ascending));

                foreach (var i in HohoemaApp.UserSettings.RankingSettings.LowPriorityCategory)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = i.Category, IsFavorit = true
                    });
                }
                foreach (var i in HohoemaApp.UserSettings.RankingSettings.MiddlePriorityCategory)
                {
                    items.Add(new CategoryWithFav()
                    {
                        Category = i.Category
                    });
                }
                items.Refresh();

                var choiceItems = await _HohoemaDialogService.ShowMultiChoiceDialogAsync(
                    "非表示にするカテゴリを選択",
                    items.Cast <CategoryWithFav>().Select(x => new RankingCategoryInfo(x.Category)),
                    _RankingSettings.LowPriorityCategory,
                    x => x.DisplayLabel
                    );

                if (choiceItems == null)
                {
                    return;
                }

                // choiceItemsに含まれるカテゴリをMiddleとLowから削除
                _RankingSettings.ResetDislikeCategory();

                // HighにchoiceItemsを追加(重複しないよう注意)
                foreach (var cat in choiceItems)
                {
                    _RankingSettings.AddDislikeCategory(cat.Category);
                }

                ResetRankingCategoryItems();
            });

            ResetRankingCategoryItems();
        }