public override async Task <TEditorResponse> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null, bool autoFocusInput = false, Dictionary <string, string> macros = null)
        {
            TaskCompletionSource <TEditorResponse> taskRes = new TaskCompletionSource <TEditorResponse>();
            var            tvcController = new TEditorViewController();
            ToolbarBuilder builder       = toolbarBuilder;

            if (toolbarBuilder == null)
            {
                builder = new ToolbarBuilder().AddAll();
            }

            tvcController.BuildToolbar(builder);
            tvcController.SetHTML(html);
            tvcController.SetAutoFocusInput(autoFocusInput);
            tvcController.Title = CrossTEditor.PageTitle;

            tvcController.SetMacrosDicitionary(macros);

            var tvcWrapper = new UINavigationController(tvcController);
            var nav        = (UINavigationController)UIApplication.SharedApplication.KeyWindow.RootViewController;

            tvcController.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem(CrossTEditor.CancelText, UIBarButtonItemStyle.Plain, (item, args) =>
            {
                if (nav != null)
                {
                    nav.PopViewController(true);
                }

                taskRes.SetResult(new TEditorResponse()
                {
                    IsSave = false, HTML = string.Empty
                });
            }), true);

            tvcController.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem(CrossTEditor.SaveText, UIBarButtonItemStyle.Done, async(item, args) =>
            {
                if (nav != null)
                {
                    nav.PopViewController(true);
                }

                taskRes.SetResult(new TEditorResponse()
                {
                    IsSave = true, HTML = await tvcController.GetHTML()
                });
            }), true);

            tvcWrapper.NavigationBarHidden = false;

            if (nav != null)
            {
                await nav.PresentViewControllerAsync(tvcWrapper, true);
            }

            return(await taskRes.Task);
        }
Beispiel #2
0
        public override Task <TEditorResponse> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null, bool autoFocusInput = false, Dictionary <string, string> macros = null)
        {
            TaskCompletionSource <TEditorResponse> taskRes = new TaskCompletionSource <TEditorResponse>();
            var            tvc     = new TEditorViewController();
            ToolbarBuilder builder = toolbarBuilder;

            if (toolbarBuilder == null)
            {
                builder = new ToolbarBuilder().AddAll();
            }
            tvc.BuildToolbar(builder);
            tvc.SetHTML(html);
            tvc.SetAutoFocusInput(autoFocusInput);
            tvc.Title = CrossTEditor.PageTitle;

            tvc.SetMacrosDicitionary(macros);

            UINavigationController nav = null;

            foreach (var vc in
                     UIApplication.SharedApplication.Windows[0].RootViewController.ChildViewControllers)
            {
                if (vc is UINavigationController)
                {
                    nav = (UINavigationController)vc;
                }
            }
            tvc.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem(CrossTEditor.CancelText, UIBarButtonItemStyle.Plain, (item, args) =>
            {
                if (nav != null)
                {
                    nav.PopViewController(true);
                }
                taskRes.SetResult(new TEditorResponse()
                {
                    IsSave = false, HTML = string.Empty
                });
            }), true);
            tvc.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem(CrossTEditor.SaveText, UIBarButtonItemStyle.Done, async(item, args) =>
            {
                if (nav != null)
                {
                    nav.PopViewController(true);
                }
                taskRes.SetResult(new TEditorResponse()
                {
                    IsSave = true, HTML = await tvc.GetHTML()
                });
            }), true);

            if (nav != null)
            {
                nav.PushViewController(tvc, true);
            }
            return(taskRes.Task);
        }
        public override Task <string> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null)
        {
            TaskCompletionSource <string> taskRes = new TaskCompletionSource <string>();
            var            tvc     = new TEditorViewController();
            ToolbarBuilder builder = toolbarBuilder;

            if (toolbarBuilder == null)
            {
                builder = new ToolbarBuilder().AddAll();
            }
            tvc.BuildToolbar(builder);
            tvc.SetHTML(html);
            tvc.Title = CrossTEditor.PageTitle;

            UINavigationController nav = null;

            foreach (var vc in
                     UIApplication.SharedApplication.Windows[0].RootViewController.ChildViewControllers)
            {
                if (vc is UINavigationController)
                {
                    nav = (UINavigationController)vc;
                }
            }
            tvc.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem(CrossTEditor.CancelText, UIBarButtonItemStyle.Plain, (item, args) =>
            {
                if (nav != null)
                {
                    nav.PopViewController(true);
                }
                taskRes.SetResult(string.Empty);
            }), true);
            tvc.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem(CrossTEditor.SaveText, UIBarButtonItemStyle.Done, async(item, args) =>
            {
                if (nav != null)
                {
                    nav.PopViewController(true);
                }
                taskRes.SetResult(await tvc.GetHTML());
            }), true);

            if (nav != null)
            {
                nav.PushViewController(tvc, true);
            }
            return(taskRes.Task);
        }
Beispiel #4
0
        public override Task <TEditorResponse> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null, string title = null, bool autoFocusInput = false, Dictionary <string, string> macros = null)
        {
            // TODO: HTML input must be not null
            if (string.IsNullOrEmpty(html))
            {
                html = string.Empty;
            }

            var taskRes = new TaskCompletionSource <TEditorResponse>();
            var tvc     = new TEditorViewController();
            var builder = toolbarBuilder;

            if (toolbarBuilder == null)
            {
                builder = new ToolbarBuilder().AddAll();
            }

            tvc.BuildToolbar(builder);
            tvc.SetHTML(html);
            tvc.Title = title;

            // find a navigation controller
            var nav = FindNavigationController(UIApplication.SharedApplication.KeyWindow.RootViewController);

            // done button
            //var doneIcon = UIImage.FromFile("Images/[email protected]");
            var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, async(item, args) =>
            {
                nav?.PopViewController(true);
                taskRes.SetResult(new TEditorResponse
                {
                    IsSave = true,
                    HTML   = await tvc.GetHTML()
                });
            });

            // navigation to editor html view
            tvc.NavigationItem.SetRightBarButtonItem(doneButton, true);
            nav?.PushViewController(tvc, true);
            nav.NavigationBar.Hidden = false;
            nav.NavigationBarHidden  = false;

            // set result
            return(taskRes.Task);
        }
Beispiel #5
0
        public override Task <TEditorResponse> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null, EventHandler <ToolbarBuilderEventArgs> toolbarBuilderOnClick = null, bool autoFocusInput = false)
        {
            TaskCompletionSource <TEditorResponse> taskRes = new TaskCompletionSource <TEditorResponse>();
            var            tvc     = new TEditorViewController();
            ToolbarBuilder builder = toolbarBuilder;

            if (toolbarBuilder == null)
            {
                builder = new ToolbarBuilder();
            }
            tvc.BuildToolbar(builder, toolbarBuilderOnClick);
            tvc.SetHTML(html);
            tvc.SetAutoFocusInput(autoFocusInput);
            tvc.Title = CrossTEditor.PageTitle;

            UINavigationController nav = null;

            tvc.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem(CrossTEditor.CancelText, UIBarButtonItemStyle.Plain, (item, args) =>
            {
                if (nav != null)
                {
                    if (UIKit.UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad)
                    {
                        nav.DismissModalViewController(true);
                    }
                    else
                    {
                        nav.PopViewController(true);
                    }
                }
                taskRes.SetResult(new TEditorResponse()
                {
                    IsSave = false, HTML = string.Empty
                });
            }), true);
            tvc.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem(CrossTEditor.SaveText, UIBarButtonItemStyle.Done, async(item, args) =>
            {
                if (nav != null)
                {
                    if (UIKit.UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad)
                    {
                        nav.DismissModalViewController(true);
                    }
                    else
                    {
                        nav.PopViewController(true);
                    }
                }
                taskRes.SetResult(new TEditorResponse()
                {
                    IsSave = true, HTML = await tvc.GetHTML()
                });
            }), true);

            var root   = UIApplication.SharedApplication.KeyWindow.RootViewController;
            var window = UIApplication.SharedApplication.Windows;

            var rootWindow = window?.FirstOrDefault()?.RootViewController?.ModalViewController;

            if (rootWindow != null)
            {
                nav = GetNavController(rootWindow);
            }
            else
            {
                nav = GetNavController(root);
            }

            if (nav != null)
            {
                if (UIKit.UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad)
                {
                    var childViewControllers = nav.ChildViewControllers;

                    var newnav = new UINavigationController(tvc);
                    newnav.ModalPresentationStyle = UIModalPresentationStyle.FormSheet;
                    nav.PresentModalViewController(newnav, true);
                }
                else
                {
                    nav.PushViewController(tvc, true);
                }
            }
            return(taskRes.Task);
        }