public WatchHistoryPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager) { RemoveHistoryCommand = SelectedItems.ObserveProperty(x => x.Count) .Select(x => x > 0) .ToReactiveCommand() .AddTo(_CompositeDisposable); RemoveHistoryCommand.Subscribe(async _ => { var selectedItems = SelectedItems.ToArray(); var action = AsyncInfo.Run <uint>(async(cancelToken, progress) => { foreach (var item in selectedItems) { await RemoveHistory(item.RawVideoId); SelectedItems.Remove(item); await Task.Delay(250); } await UpdateList(); _HistoriesResponse = await HohoemaApp.ContentProvider.GetHistory(); RemoveAllHistoryCommand.RaiseCanExecuteChanged(); }); await PageManager.StartNoUIWork("視聴履歴の削除", selectedItems.Length, () => action); }) .AddTo(_CompositeDisposable); }
public SearchResultMylistPageViewModel( HohoemaApp hohoemaApp , PageManager pageManager ) : base(hohoemaApp, pageManager, useDefaultPageTitle: false) { }
public SettingsLiveInfoContentViewModel(NicoLiveVideo liveVideo, HohoemaApp hohoemaApp) { _PlayerSettings = hohoemaApp.UserSettings.PlayerSettings; CommentRenderingFPS = _PlayerSettings.ToReactivePropertyAsSynchronized(x => x.CommentRenderingFPS) .AddTo(_CompositeDisposable); CommentDisplayDuration = _PlayerSettings.ToReactivePropertyAsSynchronized(x => x.CommentDisplayDuration, x => x.TotalSeconds, x => TimeSpan.FromSeconds(x)) .AddTo(_CompositeDisposable); CommentFontScale = _PlayerSettings.ToReactivePropertyAsSynchronized(x => x.DefaultCommentFontScale) .AddTo(_CompositeDisposable); CommentColor = _PlayerSettings.ToReactivePropertyAsSynchronized(x => x.CommentColor) .AddTo(_CompositeDisposable); ScrollVolumeFrequency = _PlayerSettings.ToReactivePropertyAsSynchronized(x => x.ScrollVolumeFrequency) .AddTo(_CompositeDisposable); Observable.Merge( CommentRenderingFPS.ToUnit(), CommentDisplayDuration.ToUnit(), CommentFontScale.ToUnit(), CommentColor.ToUnit(), ScrollVolumeFrequency.ToUnit() ) .SubscribeOnUIDispatcher() .Subscribe(_ => _PlayerSettings.Save().ConfigureAwait(false)) .AddTo(_CompositeDisposable); }
public HohoemaViewModelBase( HohoemaApp hohoemaApp, PageManager pageManager ) { PageRequireServiceLevel = HohoemaAppServiceLevel.Offline; _NavigationToLock = new SemaphoreSlim(1, 1); HohoemaApp = hohoemaApp; PageManager = pageManager; NowSignIn = false; _CompositeDisposable = new CompositeDisposable(); _NavigatingCompositeDisposable = new CompositeDisposable(); IsPageAvailable = HohoemaApp.ObserveProperty(x => x.ServiceStatus) .Select(x => x >= PageRequireServiceLevel) .ToReactiveProperty() .AddTo(_CompositeDisposable); if (Helpers.DeviceTypeHelper.IsXbox) { IsForceTVModeEnable = new ReactiveProperty <bool>(true); } else { IsForceTVModeEnable = HohoemaApp.UserSettings.AppearanceSettings.ObserveProperty(x => x.IsForceTVModeEnable) .ToReactiveProperty(); } SubstitutionBackNavigation = new Dictionary <string, Func <bool> >(); }
public FollowManagePageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager) { Lists = new ObservableCollection <FavoriteListViewModel>(); NowUpdatingFavList = new ReactiveProperty <bool>(); UpdateFavListCommand = new DelegateCommand <FavoriteListViewModel>((favListVM) => { NowUpdatingFavList.Value = true; try { favListVM.FollowGroup.SyncFollowItems().ConfigureAwait(false); } catch { Debug.WriteLine($"{favListVM.FollowGroup.FollowItemType} のFollow List更新に失敗"); } finally { NowUpdatingFavList.Value = false; } }); ChangeRequireServiceLevel(HohoemaAppServiceLevel.LoggedIn); }
public NicoAccountIntroductionPageViewModel(HohoemaApp hohoema) { _HohoemaApp = hohoema; IsLoggedIn = _HohoemaApp.ObserveProperty(x => x.IsLoggedIn) .ToReadOnlyReactiveProperty(); }
protected async Task <bool> CheckSignIn() { if (IsRequireSignIn) { var isSignIn = await HohoemaApp.CheckSignedInStatus() == Mntone.Nico2.NiconicoSignInStatus.Success; if (!HohoemaApp.IsLoggedIn && !isSignIn) { if (!AccountManager.HasPrimaryAccount()) { return(false); } else { var result = await HohoemaApp.SignInWithPrimaryAccount(); if (result == Mntone.Nico2.NiconicoSignInStatus.Failed) { return(false); } } } } return(HohoemaApp.IsLoggedIn); }
public MylistIncrementalSource(string mylistGroupId, HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, "Mylist:" + mylistGroupId) { MylistGroupId = mylistGroupId; _PageManager = pageManager; }
public CommunityPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager) { IsFollowCommunity = new ReactiveProperty <bool>(mode: ReactivePropertyMode.DistinctUntilChanged) .AddTo(_CompositeDisposable); CanChangeFollowCommunityState = new ReactiveProperty <bool>() .AddTo(_CompositeDisposable); IsFollowCommunity .Where(x => CommunityId != null) .Subscribe(async x => { if (_NowProcessCommunity) { return; } _NowProcessCommunity = true; CanChangeFollowCommunityState.Value = false; if (x) { if (await FollowCommunity()) { Debug.WriteLine(CommunityName + "のコミュニティをお気に入り登録しました."); } else { // お気に入り登録に失敗した場合は状態を差し戻し Debug.WriteLine(CommunityName + "のコミュニティをお気に入り登録に失敗"); IsFollowCommunity.Value = false; } } else { if (await UnfollowCommunity()) { Debug.WriteLine(CommunityName + "のコミュニティをお気に入り解除しました."); } else { // お気に入り解除に失敗した場合は状態を差し戻し Debug.WriteLine(CommunityName + "のコミュニティをお気に入り解除に失敗"); IsFollowCommunity.Value = true; } } var isAutoJoinAccept = CommunityInfo.IsPublic; var isJoinRequireUserInfo = CommunityInfo.option_flag_details.CommunityPrivUserAuth == "1"; CanChangeFollowCommunityState.Value = IsFollowCommunity.Value == true || (HohoemaApp.FollowManager.CanMoreAddFollow(FollowItemType.Community) && isAutoJoinAccept && !isJoinRequireUserInfo); _NowProcessCommunity = false; UpdateCanNotFollowReason(); }) .AddTo(_CompositeDisposable); }
public FeedVideoIncrementalSource(IFeedGroup feedGroup, HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, "Feed:" + feedGroup.Label) { _FeedGroup = feedGroup; _FavFeedManager = hohoemaApp.FeedManager; _NiconicoMediaManager = hohoemaApp.MediaManager; _PageManager = pageManager; }
public VideoInfomationPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager) { ChangeRequireServiceLevel(HohoemaAppServiceLevel.OnlineWithoutLoggedIn); NowLoading = new ReactiveProperty <bool>(false); IsLoadFailed = new ReactiveProperty <bool>(false); }
public SearchResultLivePageViewModel( HohoemaApp app, PageManager pageManager ) : base(app, pageManager, useDefaultPageTitle: false) { ChangeRequireServiceLevel(HohoemaAppServiceLevel.OnlineWithoutLoggedIn); }
public CommunityVideoIncrementalSource(string communityId, int videoCount, HohoemaApp hohoemaApp, PageManager pageManager) : base() { HohoemaApp = hohoemaApp; _PageManager = pageManager; CommunityId = communityId; VideoCount = videoCount; }
public NicoLiveVideo(string liveId, HohoemaApp hohoemaApp, string communityId = null) { LiveId = liveId; _CommunityId = communityId; HohoemaApp = hohoemaApp; _LiveComments = new ObservableCollection <Chat>(); LiveComments = new ReadOnlyObservableCollection <Chat>(_LiveComments); }
public VideoInfomationPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager, canActivateBackgroundUpdate: true) { ChangeRequireServiceLevel(HohoemaAppServiceLevel.OnlineWithoutLoggedIn); IsStillLoggedInTwitter = new ReactiveProperty <bool>(Util.TwitterHelper.IsLoggedIn); NowLoading = new ReactiveProperty <bool>(false); IsLoadFailed = new ReactiveProperty <bool>(false); }
public VideoSearchSource(VideoSearchOption searchOption, HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp , $"{searchOption.SearchTarget} Search: {searchOption.Keyword}" ) { _HohoemaApp = hohoemaApp; _PageManager = pageManager; SearchOption = searchOption; }
public CategoryRankingLoadingSource(HohoemaApp app, PageManager pageManager, RankingCategory category, RankingTarget target, RankingTimeSpan timeSpan) : base() { _HohoemaApp = app; _PageManager = pageManager; Category = category; Target = target; TimeSpan = timeSpan; }
public SearchResultMylistPageViewModel( HohoemaApp hohoemaApp , PageManager pageManager ) : base(hohoemaApp, pageManager, useDefaultPageTitle: false) { SelectedSearchSort = new ReactivePropertySlim <SearchSortOptionListItem>(); SelectedSearchTarget = new ReactiveProperty <SearchTarget>(); }
public CategoryRankingLoadingSource(HohoemaApp app, PageManager pageManager, RankingCategory category, RankingTarget target, RankingTimeSpan timeSpan) : base(app, $"Ranking:{category.ToCultulizedText()}") { _HohoemaApp = app; _PageManager = pageManager; _Category = category; _Target = target; _TimeSpan = timeSpan; }
public RankingCategoryPageViewModel(HohoemaApp hohoemaApp, EventAggregator ea, PageManager pageManager, Views.Service.MylistRegistrationDialogService mylistDialogService) : base(hohoemaApp, pageManager, mylistDialogService, useDefaultPageTitle: false) { this.ChangeRequireServiceLevel(HohoemaAppServiceLevel.LoggedIn); ContentFinder = HohoemaApp.ContentFinder; _EventAggregator = ea; // RankingSettings = hohoemaApp.UserSettings.RankingSettings; IsFailedRefreshRanking = new ReactiveProperty <bool>(false) .AddTo(_CompositeDisposable); CanChangeRankingParameter = new ReactiveProperty <bool>(false) .AddTo(_CompositeDisposable); // ランキングの対象 RankingTargetItems = new List <RankingTargetListItem>() { new RankingTargetListItem(RankingTarget.view), new RankingTargetListItem(RankingTarget.res), new RankingTargetListItem(RankingTarget.mylist) }; SelectedRankingTarget = new ReactiveProperty <RankingTargetListItem>(RankingTargetItems[0], ReactivePropertyMode.DistinctUntilChanged) .AddTo(_CompositeDisposable); // ランキングの集計期間 RankingTimeSpanItems = new List <RankingTimeSpanListItem>() { new RankingTimeSpanListItem(RankingTimeSpan.hourly), new RankingTimeSpanListItem(RankingTimeSpan.daily), new RankingTimeSpanListItem(RankingTimeSpan.weekly), new RankingTimeSpanListItem(RankingTimeSpan.monthly), new RankingTimeSpanListItem(RankingTimeSpan.total), }; SelectedRankingTimeSpan = new ReactiveProperty <RankingTimeSpanListItem>(RankingTimeSpanItems[0], ReactivePropertyMode.DistinctUntilChanged) .AddTo(_CompositeDisposable); Observable.Merge( SelectedRankingTimeSpan.ToUnit(), SelectedRankingTarget.ToUnit() ) .SubscribeOnUIDispatcher() .Subscribe(async x => { // NavigateToが呼ばれた後 if (RequireCategoryInfo != null || CategoryInfo != null) { await ResetList(); } }) .AddTo(_CompositeDisposable); }
public UserVideoIncrementalSource(string userId, UserDetail userDetail, HohoemaApp hohoemaApp, PageManager pageManager) { UserId = uint.Parse(userId); User = userDetail; HohoemaApp = hohoemaApp; ContentFinder = HohoemaApp.ContentProvider; MediaManager = HohoemaApp.CacheManager; PageManager = pageManager; _ResList = new List <UserVideoResponse>(); }
public LiveSearchSource( LiveSearchPagePayloadContent searchOption, HohoemaApp app, PageManager pageManager ) { HohoemaApp = app; PageManager = pageManager; SearchOption = searchOption; }
public SearchResultCommunityPageViewModel(HohoemaApp app, PageManager pageManager) : base(app, pageManager, useDefaultPageTitle: false) { ChangeRequireServiceLevel(HohoemaAppServiceLevel.OnlineWithoutLoggedIn); SelectedSearchSort = new ReactivePropertySlim <CommunitySearchSortOptionListItem>(); SelectedSearchMode = new ReactivePropertySlim <CommynitySearchModeOptionListItem>(); SelectedSearchTarget = new ReactiveProperty <SearchTarget>(); }
public FollowManagePageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager) { Lists = new ObservableCollection <FavoriteListViewModel>(); UpdateFavListCommand = new DelegateCommand <FavoriteListViewModel>((favListVM) => { favListVM.FollowManager.Sync(favListVM.FavType); }); }
public RankingCategoryPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager, useDefaultPageTitle: false) { SelectedRankingTarget = new ReactiveProperty <RankingTargetListItem>(RankingTargetItems.First()); SelectedRankingTimeSpan = new ReactiveProperty <RankingTimeSpanListItem>(RankingTimeSpanItems.First()); IsFailedRefreshRanking = new ReactiveProperty <bool>(false) .AddTo(_CompositeDisposable); CanChangeRankingParameter = new ReactiveProperty <bool>(false) .AddTo(_CompositeDisposable); }
public FeedVideoListPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager) : base(hohoemaApp, pageManager, isRequireSignIn: true) { LastUpdate = new ReactiveProperty <DateTime>(); OpenFeedGroupPageCommand = new DelegateCommand(() => { if (FeedGroup != null) { PageManager.OpenPage(HohoemaPageType.FeedGroup, FeedGroup.Id); } }); }
public CommunitySearchSource( CommunitySearchPagePayloadContent searchOption , HohoemaApp app , PageManager pageManager ) { HohoemaApp = app; PageManager = pageManager; SearchKeyword = searchOption.Keyword; Mode = searchOption.Mode; Sort = searchOption.Sort; Order = searchOption.Order; }
protected override async Task NavigatedToAsync(CancellationToken cancelToken, NavigatedToEventArgs e, Dictionary <string, object> viewModelState) { if (e.Parameter is string) { var payload = MylistPagePayload.FromParameterString <MylistPagePayload>(e.Parameter as string); var playableList = await HohoemaApp.GetPlayableList(payload.Id, payload.Origin); PlayableList.Value = playableList; MylistOrigin.Value = playableList.Origin; } await base.NavigatedToAsync(cancelToken, e, viewModelState); }
private async Task TryLogin() { // Note: NiconicoContextのインスタンスを作成してサインインを試行すると // HttpClientのキャッシュ削除がされていない状態で試行されてしまい // 正常な結果を得られません。 // HohoemaApp上で管理しているNiconicoContextのみに限定することで // HttpClientのキャッシュが残る挙動に対処しています IsAuthoricationFailed.Value = false; IsServiceUnavailable.Value = false; var result = await HohoemaApp.SignIn(Mail.Value, Password.Value, withClearAuthenticationCache : true); IsValidAccount.Value = result == Mntone.Nico2.NiconicoSignInStatus.Success; IsAuthoricationFailed.Value = result == Mntone.Nico2.NiconicoSignInStatus.Failed; IsServiceUnavailable.Value = result == Mntone.Nico2.NiconicoSignInStatus.ServiceUnavailable; if (IsValidAccount.Value) { AccountManager.SetPrimaryAccountId(Mail.Value); if (IsRememberPassword.Value) { await AccountManager.AddOrUpdateAccount(Mail.Value, Password.Value); } else { AccountManager.RemoveAccount(Mail.Value); } // TODO: 初期セットアップ補助ページを開く? if (_RedirectInfo != null) { try { PageManager.OpenPage(_RedirectInfo.RedirectPageType, _RedirectInfo.RedirectParamter); } catch { PageManager.OpenStartupPage(); } } else { PageManager.OpenStartupPage(); } } }
public CacheManagementPageViewModel(HohoemaApp app, PageManager pageManager, Views.Service.MylistRegistrationDialogService mylistDialogService) : base(app, pageManager, mylistDialogService) { if (scheduler == null) { scheduler = new SynchronizationContextScheduler(SynchronizationContext.Current); } _MediaManager = app.MediaManager; OpenCacheSettingsCommand = new DelegateCommand(() => { PageManager.OpenPage(HohoemaPageType.Settings, HohoemaSettingsKind.Cache.ToString()); }); }