public Task <SelectDialogPayload> ShowContentSelectDialogAsync(ContentSelectDialogDefaultSet dialogContentSet) { var choiceListContainer = new ChoiceFromListSelectableContainer(dialogContentSet.ChoiceListTitle, dialogContentSet.ChoiceList); var customTextContainer = new TextInputSelectableContainer(dialogContentSet.TextInputTitle, dialogContentSet.GenerateCandiateList); var containers = new List <ISelectableContainer>(); ISelectableContainer firstSelected = null; if (!string.IsNullOrEmpty(dialogContentSet.ChoiceListTitle)) { containers.Add(choiceListContainer); if (choiceListContainer.Items.Count > 0) { firstSelected = choiceListContainer; } else { firstSelected = choiceListContainer; } } if (!string.IsNullOrEmpty(dialogContentSet.TextInputTitle)) { containers.Add(customTextContainer); if (firstSelected == null) { firstSelected = customTextContainer; } } return(ShowContentSelectDialogAsync(dialogContentSet.DialogTitle, containers, firstSelected)); }
protected override async void Execute(object parameter) { if (parameter is Models.Subscription.Subscription subscription) { // フォローしているアイテムから選択できるように // (コミュニティを除く) var selectableContents = FollowManager.GetAllFollowInfoGroups() .Select(x => new ChoiceFromListSelectableContainer(x.FollowItemType.Translate(), x.FollowInfoItems.Where(y => y.FollowItemType != Models.FollowItemType.Community).Select(y => new SelectDialogPayload() { Label = y.Name, Id = y.Id, Context = y }))); var keywordInput = new TextInputSelectableContainer("キーワード検索", null); var result = await DialogService.ShowContentSelectDialogAsync( $"『{subscription.Label}』へ購読を追加", Enumerable.Concat <ISelectableContainer>(new[] { keywordInput }, selectableContents) ); if (result != null) { Models.Subscription.SubscriptionSource?source = null; if (result.Context is Models.FollowItemInfo followInfo) { Models.Subscription.SubscriptionSourceType?sourceType = null; switch (followInfo.FollowItemType) { case Models.FollowItemType.Tag: sourceType = Models.Subscription.SubscriptionSourceType.TagSearch; break; case Models.FollowItemType.Mylist: sourceType = Models.Subscription.SubscriptionSourceType.Mylist; break; case Models.FollowItemType.User: sourceType = Models.Subscription.SubscriptionSourceType.User; break; case Models.FollowItemType.Community: break; case Models.FollowItemType.Channel: sourceType = Models.Subscription.SubscriptionSourceType.Channel; break; default: break; } if (sourceType != null) { source = new Models.Subscription.SubscriptionSource(result.Label, sourceType.Value, result.Id); } } else { source = new Models.Subscription.SubscriptionSource(result.Label, Models.Subscription.SubscriptionSourceType.KeywordSearch, result.Id); } if (subscription.AddSource.CanExecute(source)) { subscription.AddSource.Execute(source); } } } }