void ExecuteCustomContextMenuEntry(Sites.ContextMenuEntry entry) { var ovMainModel = ServiceRegistration.Get <IWorkflowManager>().GetModel(Guids.WorkFlowModelOV) as OnlineVideosWorkflowModel; var site = OnlineVideoSettings.Instance.SiteUtilsList[SiteName]; BackgroundTask.Instance.Start <OnlineVideos.Sites.ContextMenuExecutionResult>( () => { return(site.ExecuteContextMenuEntry(Category, VideoInfo, entry)); }, (success, result) => { if (success) { if (!string.IsNullOrEmpty(result.ExecutionResultMessage)) { //todo: show message - but also execute the two following if statements } if (result.RefreshCurrentItems) { // discover and show videos of this category BackgroundTask.Instance.Start <List <VideoInfo> >( () => { return(site.GetVideos(Category)); }, (success2, videos) => { if (success2) { ovMainModel.VideosList.Clear(); videos.ForEach(r => { r.CleanDescriptionAndTitle(); ovMainModel.VideosList.Add(new VideoViewModel(r, Category, SiteName, SiteUtilName, false)); }); if (site.HasNextPage) { ovMainModel.VideosList.Add(new VideoViewModel(Translation.Instance.NextPage, "NextPage.png")); } ovMainModel.VideosList.FireChange(); ImageDownloader.GetImages <VideoInfo>(videos); } }, Translation.Instance.GettingCategoryVideos); } if (result.ResultItems != null && result.ResultItems.Count > 0) { ovMainModel.ShowSearchResults(result.ResultItems, entry.DisplayText); } } }, entry.DisplayText); }
void HandleCustomContextMenuEntry(Sites.ContextMenuEntry entry) { ServiceRegistration.Get <IScreenManager>().CloseTopmostDialog(); switch (entry.Action) { case Sites.ContextMenuEntry.UIAction.Execute: ExecuteCustomContextMenuEntry(entry); break; case Sites.ContextMenuEntry.UIAction.GetText: //todo: show input dialog and execute when confirmed //entry.UserInputText = text; //ExecuteCustomContextMenuEntry(entry); break; case Sites.ContextMenuEntry.UIAction.PromptYesNo: var dialogHandleId = ServiceRegistration.Get <IDialogManager>().ShowDialog(entry.DisplayText, entry.PromptText, DialogType.YesNoDialog, false, DialogButtonType.No); var dialogCloseWatcher = new DialogCloseWatcher(this, dialogHandleId, (dialogResult) => { if (dialogResult == DialogResult.Yes) { ExecuteCustomContextMenuEntry(entry); } }); break; case Sites.ContextMenuEntry.UIAction.ShowList: var menuItems = new ItemsList(); foreach (var item in entry.SubEntries) { var listItem = new ListItem(Consts.KEY_NAME, item.DisplayText); listItem.AdditionalProperties.Add(Consts.KEY_MEDIA_ITEM, item); menuItems.Add(listItem); } ServiceRegistration.Get <IWorkflowManager>().NavigatePushTransient( WorkflowState.CreateTransientState("CustomContextItems", entry.DisplayText, true, "ovsDialogGenericItems", false, WorkflowType.Dialog), new NavigationContextConfig() { AdditionalContextVariables = new Dictionary <string, object> { { Constants.CONTEXT_VAR_ITEMS, menuItems }, { Constants.CONTEXT_VAR_COMMAND, new CommandContainer <ListItem>((li) => HandleCustomContextMenuEntry(li.AdditionalProperties[Consts.KEY_MEDIA_ITEM] as Sites.ContextMenuEntry)) } } }); break; } }