protected override async void Execute(object parameter) { if (parameter is Interfaces.IFollowable) { // TODO: MessageDialogによるフォロー解除の確認 var followManager = HohoemaCommnadHelper.GetHohoemaApp().FollowManager; var followType = GetFollowItemType(parameter as Interfaces.IFollowable); string id; if (parameter is Interfaces.INiconicoContent) { id = (parameter as Interfaces.INiconicoContent).Id; } else if (parameter is Interfaces.ISearchWithtag) { id = (parameter as Interfaces.ISearchWithtag).Tag; } else { throw new NotSupportedException(); } var result = await followManager.RemoveFollow(followType, id); } }
protected override async void Execute(object parameter) { if (parameter is Interfaces.IFeedGroup) { var feedGroupManager = HohoemaCommnadHelper.GetFeedManager(); var content = parameter as Interfaces.IFeedGroup; var feedGroup = feedGroupManager.GetFeedGroup(int.Parse(content.Id)); if (feedGroup != null) { var dialog = new MessageDialog( $"指定されたフィードグループを削除します。この操作は元に戻せません。", $"フィードグループ \"{feedGroup.Label}\"を削除します" ); dialog.Commands.Add(new UICommand("フィードグループを削除") { Id = "delete" }); dialog.Commands.Add(new UICommand("キャンセル")); dialog.CancelCommandIndex = 1; dialog.DefaultCommandIndex = 1; var result = await dialog.ShowAsync(); if ((result.Id as string) == "delete") { feedGroupManager.RemoveFeedGroup(feedGroup); } } } }
protected override void Execute(object parameter) { string ownerId = null; if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; if (string.IsNullOrEmpty(content.OwnerUserId)) { return; } ownerId = content.OwnerUserId; } else if (parameter is string id) { ownerId = id; } if (ownerId != null) { var pageManager = HohoemaCommnadHelper.GetPageManager(); if (Mntone.Nico2.NiconicoRegex.IsChannelId(ownerId)) { pageManager.OpenPage(Models.HohoemaPageType.ChannelVideo, ownerId); } else { pageManager.OpenPage(Models.HohoemaPageType.UserVideo, ownerId); } } }
protected override void Execute(object parameter) { if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; var player = HohoemaCommnadHelper.GetHohoemaPlaylist(); player.DefaultPlaylist.AddVideo(content.Id, content.Label); } }
protected override void Execute(object parameter) { if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(Models.HohoemaPageType.VideoInfomation, content.Id); } }
protected override async void Execute(object parameter) { if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; var mediaManager = HohoemaCommnadHelper.GetHohoemaApp().CacheManager; await mediaManager.RequestCache(content.Id); } }
protected override void Execute(object parameter) { if (parameter is Interfaces.IFeedGroup) { var content = parameter as Interfaces.IFeedGroup; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(Models.HohoemaPageType.FeedGroup, content.Id); } }
protected override async void Execute(object parameter) { if (parameter is Interfaces.IFeedGroup) { var feedGroupManager = HohoemaCommnadHelper.GetFeedManager(); var content = parameter as Interfaces.IFeedGroup; var feedGroup = feedGroupManager.GetFeedGroup(int.Parse(content.Id)); // await feedGroup.Refresh(); // TODO: フィードマネージャやフィード編集ページの表示を更新する } }
protected override void Execute(object parameter) { if (parameter is Interfaces.ILiveContent) { var content = parameter as Interfaces.ILiveContent; if (!string.IsNullOrEmpty(content.BroadcasterId)) { var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(Models.HohoemaPageType.Community, content.BroadcasterId); } } }
protected override async void Execute(object parameter) { if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; var cacheManager = HohoemaCommnadHelper.GetHohoemaApp().CacheManager; var requests = await cacheManager.GetCacheRequest(content.Id); if (requests.Any(x => x.ToCacheState() == NicoVideoCacheState.Cached)) { // キャッシュ済みがある場合は、削除確認を行う var dialog = new MessageDialog( $"{content.Label} の キャッシュデータ(全ての画質)を削除します。この操作は元に戻せません。", "キャッシュの削除確認" ); dialog.Commands.Add(new UICommand() { Label = "キャッシュを削除", Invoked = async(uicommand) => { await cacheManager.CancelCacheRequest(content.Id); } }); dialog.Commands.Add(new UICommand() { Label = "キャンセル", }); dialog.DefaultCommandIndex = 1; await dialog.ShowAsync(); } else { // キャッシュリクエストのみで // キャッシュがいずれも未完了の場合は // 確認無しで削除 foreach (var req in requests) { await cacheManager.CancelCacheRequest(req.RawVideoId, req.Quality); } } } }
protected override async void Execute(object parameter) { if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; var hohoemaApp = HohoemaCommnadHelper.GetHohoemaApp(); var targetMylist = await hohoemaApp.ChoiceMylist(); if (targetMylist != null) { var result = await hohoemaApp.AddMylistItem(targetMylist, content.Label, content.Id); (App.Current as App).PublishInAppNotification( Models.InAppNotificationPayload.CreateRegistrationResultNotification( result, "マイリスト", targetMylist.Label, content.Label )); } } }
protected override async void Execute(object parameter) { var pageManager = HohoemaCommnadHelper.GetPageManager(); var localStorge = new Microsoft.Toolkit.Uwp.Helpers.LocalObjectStorageHelper(); switch (pageManager.CurrentPageType) { case Models.HohoemaPageType.PrologueIntroduction: pageManager.OpenPage(Models.HohoemaPageType.NicoAccountIntroduction); break; case Models.HohoemaPageType.NicoAccountIntroduction: pageManager.OpenPage(Models.HohoemaPageType.VideoCacheIntroduction); break; case Models.HohoemaPageType.VideoCacheIntroduction: pageManager.OpenPage(Models.HohoemaPageType.EpilogueIntroduction); break; case Models.HohoemaPageType.EpilogueIntroduction: default: // 初回起動の案内が完了したことを記録 localStorge.Save(App.IS_COMPLETE_INTRODUCTION, true); // スタートアップページを開く pageManager.OpenStartupPage(); // イントロダクション系ページに戻れないようページ履歴を消去 await Task.Delay(100); pageManager.ClearNavigateHistory(); break; } }
protected override async void Execute(object parameter) { var hohoemaApp = HohoemaCommnadHelper.GetHohoemaApp(); await hohoemaApp.SignOut(); }
protected override async void Execute(object parameter) { if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; var hohoemaApp = HohoemaCommnadHelper.GetHohoemaApp(); var ownerName = content.OwnerUserName; if (string.IsNullOrEmpty(ownerName)) { if (content.OwnerUserType == Mntone.Nico2.Videos.Thumbnail.UserType.User) { try { var userInfo = await hohoemaApp.ContentProvider.GetUserDetail(content.OwnerUserId); ownerName = userInfo.Nickname; } catch { return; } } else if (content.OwnerUserType == Mntone.Nico2.Videos.Thumbnail.UserType.Channel) { var channelInfo = await hohoemaApp.ContentProvider.GetChannelInfo(content.OwnerUserId); ownerName = channelInfo.Name; var channel = Database.NicoVideoOwnerDb.Get(content.OwnerUserId) ?? new Database.NicoVideoOwner() { OwnerId = channelInfo.ChannelId.ToString(), UserType = Mntone.Nico2.Videos.Thumbnail.UserType.Channel, }; channel.ScreenName = channelInfo.ScreenName ?? channel.ScreenName; Database.NicoVideoOwnerDb.AddOrUpdate(channel); } } var dialog = new MessageDialog( $"この変更は投稿者({ownerName} さん)のアプリ内ユーザー情報ページから取り消すことができます。", $"『{ownerName}』さんの投稿動画を非表示にしますか?" ); dialog.Commands.Add(new UICommand() { Label = "非表示に設定", Invoked = (uicommand) => { hohoemaApp.UserSettings.NGSettings.AddNGVideoOwnerId(content.OwnerUserId.ToString(), ownerName); } }); dialog.Commands.Add(new UICommand() { Label = "キャンセル" }); dialog.DefaultCommandIndex = 0; await dialog.ShowAsync(); } }
protected override void Execute(object parameter) { bool isPlayerShowWithSmallMode = true; if (parameter is Interfaces.IVideoContent) { var content = parameter as Interfaces.IVideoContent; var player = HohoemaCommnadHelper.GetHohoemaPlaylist(); player.PlayVideo(content); isPlayerShowWithSmallMode = false; } else if (parameter is Interfaces.ILiveContent) { var content = parameter as Interfaces.ILiveContent; var player = HohoemaCommnadHelper.GetHohoemaPlaylist(); player.PlayLiveVideo(content); isPlayerShowWithSmallMode = false; } else if (parameter is Interfaces.ICommunity) { var content = parameter as Interfaces.ICommunity; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(Models.HohoemaPageType.Community, content.Id); } else if (parameter is Interfaces.IMylist) { var content = parameter as Interfaces.IMylist; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(Models.HohoemaPageType.Mylist, new Models.MylistPagePayload(content.Id).ToParameterString()); } else if (parameter is Interfaces.IUser) { var content = parameter as Interfaces.IUser; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(Models.HohoemaPageType.UserInfo, content.Id); } else if (parameter is Interfaces.ISearchWithtag) { var content = parameter as Interfaces.ISearchWithtag; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.Search(SearchPagePayloadContentHelper.CreateDefault(SearchTarget.Tag, content.Tag)); } else if (parameter is Interfaces.IFeedGroup) { var content = parameter as Interfaces.IFeedGroup; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(Models.HohoemaPageType.FeedVideoList, content.Id); } else if (parameter is Interfaces.ISearchHistory) { var history = parameter as Interfaces.ISearchHistory; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.Search(SearchPagePayloadContentHelper.CreateDefault(history.Target, history.Keyword)); } else if (parameter is Interfaces.IChannel) { var channel = parameter as Interfaces.IChannel; var pageManager = HohoemaCommnadHelper.GetPageManager(); pageManager.OpenPage(HohoemaPageType.ChannelVideo, channel.Id); } if (isPlayerShowWithSmallMode) { var playlist = HohoemaCommnadHelper.GetHohoemaPlaylist(); if (playlist.IsDisplayMainViewPlayer) { playlist.PlayerDisplayType = PlayerDisplayType.PrimaryWithSmall; } } // TODO: マイリストやユーザーIDを開けるように }