コード例 #1
0
        public SearchResultKeywordPageViewModel(
            HohoemaApp hohoemaApp,
            PageManager pageManager
            )
            : base(hohoemaApp, pageManager, useDefaultPageTitle: false)
        {
            _ContentFinder = HohoemaApp.ContentProvider;

            FailLoading = new ReactiveProperty <bool>(false)
                          .AddTo(_CompositeDisposable);

            LoadedPage = new ReactiveProperty <int>(1)
                         .AddTo(_CompositeDisposable);

            SelectedSearchSort = new ReactiveProperty <SearchSortOptionListItem>(
                VideoSearchOptionListItems.First(),
                mode: ReactivePropertyMode.DistinctUntilChanged
                );

            SelectedSearchTarget = new ReactiveProperty <SearchTarget>();

            SelectedSearchSort
            .Subscribe(async _ =>
            {
                var selected = SelectedSearchSort.Value;
                if (SearchOption.Order == selected.Order &&
                    SearchOption.Sort == selected.Sort
                    )
                {
                    return;
                }

                SearchOption.Sort  = SelectedSearchSort.Value.Sort;
                SearchOption.Order = SelectedSearchSort.Value.Order;

                pageManager.Search(SearchOption, forgetLastSearch: true);
            })
            .AddTo(_CompositeDisposable);
        }
コード例 #2
0
 public ChannelVideoLoadingSource(string channelId, NiconicoContentProvider contentProvider)
 {
     ChannelId = channelId;
     _NiconicoContentProvider = contentProvider;
 }
コード例 #3
0
 public RecommendPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager, NiconicoContentProvider contentProvider)
     : base(hohoemaApp, pageManager)
 {
     _NiconicoContentProvider = contentProvider;
 }
コード例 #4
0
 public RecommendVideoIncrementalLoadingSource(NiconicoContentProvider contentProvider)
 {
     NiconicoContentProvider = contentProvider;
 }
コード例 #5
0
        public SearchResultTagPageViewModel(
            HohoemaApp hohoemaApp,
            PageManager pageManager,
            Services.HohoemaDialogService dialogService
            )
            : base(hohoemaApp, pageManager, useDefaultPageTitle: false)
        {
            _ContentFinder        = HohoemaApp.ContentProvider;
            _HohoemaDialogService = dialogService;

            FailLoading = new ReactiveProperty <bool>(false)
                          .AddTo(_CompositeDisposable);

            LoadedPage = new ReactiveProperty <int>(1)
                         .AddTo(_CompositeDisposable);


            IsFavoriteTag = new ReactiveProperty <bool>(mode: ReactivePropertyMode.DistinctUntilChanged)
                            .AddTo(_CompositeDisposable);
            CanChangeFavoriteTagState = new ReactiveProperty <bool>()
                                        .AddTo(_CompositeDisposable);

            AddFavoriteTagCommand = CanChangeFavoriteTagState
                                    .ToReactiveCommand()
                                    .AddTo(_CompositeDisposable);

            RemoveFavoriteTagCommand = IsFavoriteTag
                                       .ToReactiveCommand()
                                       .AddTo(_CompositeDisposable);


            IsFavoriteTag.Subscribe(async x =>
            {
                if (_NowProcessFavorite)
                {
                    return;
                }

                _NowProcessFavorite = true;

                CanChangeFavoriteTagState.Value = false;
                if (x)
                {
                    if (await FavoriteTag())
                    {
                        Debug.WriteLine(SearchOption.Keyword + "のタグをお気に入り登録しました.");
                    }
                    else
                    {
                        // お気に入り登録に失敗した場合は状態を差し戻し
                        Debug.WriteLine(SearchOption.Keyword + "のタグをお気に入り登録に失敗");
                        IsFavoriteTag.Value = false;
                    }
                }
                else
                {
                    if (await UnfavoriteTag())
                    {
                        Debug.WriteLine(SearchOption.Keyword + "のタグをお気に入り解除しました.");
                    }
                    else
                    {
                        // お気に入り解除に失敗した場合は状態を差し戻し
                        Debug.WriteLine(SearchOption.Keyword + "のタグをお気に入り解除に失敗");
                        IsFavoriteTag.Value = true;
                    }
                }

                CanChangeFavoriteTagState.Value = IsFavoriteTag.Value == true || HohoemaApp.FollowManager.CanMoreAddFollow(FollowItemType.Tag);


                _NowProcessFavorite = false;
            })
            .AddTo(_CompositeDisposable);

            SelectedSearchSort = new ReactiveProperty <SearchSortOptionListItem>(
                VideoSearchOptionListItems.First(),
                mode: ReactivePropertyMode.DistinctUntilChanged
                );

            SelectedSearchSort
            .Subscribe(_ =>
            {
                var selected = SelectedSearchSort.Value;
                if (SearchOption.Order == selected.Order &&
                    SearchOption.Sort == selected.Sort
                    )
                {
                    return;
                }

                SearchOption.Sort  = SelectedSearchSort.Value.Sort;
                SearchOption.Order = SelectedSearchSort.Value.Order;

                pageManager.Search(SearchOption, forgetLastSearch: true);
            })
            .AddTo(_CompositeDisposable);

            SelectedSearchTarget = new ReactiveProperty <SearchTarget>();
        }