コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }