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); }
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); }
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); }
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); }