示例#1
0
        /// <summary>
        /// 获取标签生成器
        /// </summary>
        protected override TagBuilder GetTagBuilder()
        {
            var builder = new ToolbarBuilder();

            Config(builder);
            return(builder);
        }
        public override Task <TEditorResponse> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null, bool autoFocusInput = false)
        {
            var result = new TaskCompletionSource <TEditorResponse>();

            var tActivity = new Intent(Application.Context, typeof(TEditorActivity));

            ToolbarBuilder = toolbarBuilder;
            if (ToolbarBuilder == null)
            {
                ToolbarBuilder = new ToolbarBuilder().AddAll();
            }
            tActivity.PutExtra("HTMLString", html);
            tActivity.PutExtra("AutoFocusInput", autoFocusInput);
            tActivity.SetFlags(ActivityFlags.NewTask);
            TEditorActivity.SetOutput = (res, resStr) =>
            {
                TEditorActivity.SetOutput = null;
                if (res)
                {
                    result.SetResult(new TEditorResponse()
                    {
                        IsSave = true, HTML = resStr
                    });
                }
                else
                {
                    result.SetResult(new TEditorResponse()
                    {
                        IsSave = false, HTML = string.Empty
                    });
                }
            };
            Application.Context.StartActivity(tActivity);
            return(result.Task);
        }
        public void BuildToolbar()
        {
            ToolbarBuilder builder = TEditorImplementation.ToolbarBuilder;

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

            foreach (var item in builder)
            {
                ImageButton imagebutton = new ImageButton(this);
                imagebutton.SetBackgroundColor(_keysColor);
                //
                //
                imagebutton.Click += (sender, e) =>
                {
                    item.ClickFunc.Invoke(_editorWebView.RichTextEditor);
                };
                string imagename  = item.ImagePath.Split('.')[0];
                int    resourceId = (int)typeof(Resource.Drawable).GetField(imagename).GetValue(null);
                imagebutton.SetImageResource(resourceId);
                var toolbarItems = FindViewById <LinearLayout>(Resource.Id.ToolbarItemsLayout);
                toolbarItems.AddView(imagebutton);
            }
        }
示例#4
0
        public override Task <Response> ShowAsync(string html, ToolbarBuilder toolbarBuilder = null, bool autoFocusInput = false, Dictionary <string, string> macros = null)
        {
            var result = new TaskCompletionSource <Response>();

            var tActivity = new Intent(Application.Context, typeof(RichEditorActivity));

            ToolbarBuilder = toolbarBuilder ?? new ToolbarBuilder().AddAll();
            tActivity.PutExtra("HTMLString", html);
            tActivity.PutExtra("AutoFocusInput", autoFocusInput);

            if (macros != null)
            {
                tActivity.PutStringArrayListExtra("macroKeys", macros.Keys.ToList());
                tActivity.PutStringArrayListExtra("macroValues", macros.Values.ToList());
            }

            tActivity.SetFlags(ActivityFlags.NewTask);
            RichEditorActivity.SetOutput = (res, resStr) =>
            {
                RichEditorActivity.SetOutput = null;
                result.SetResult(res
                    ? new Response()
                {
                    IsSave = true, Html = resStr
                }
                    : new Response()
                {
                    IsSave = false, Html = string.Empty
                });
            };
            Application.Context.StartActivity(tActivity);
            return(result.Task);
        }
        public override Task <string> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null)
        {
            var result = new TaskCompletionSource <string>();

            var tActivity = new Intent(Application.Context, typeof(TEditorActivity));

            ToolbarBuilder = toolbarBuilder;
            if (ToolbarBuilder == null)
            {
                ToolbarBuilder = new ToolbarBuilder().AddAll();
            }
            tActivity.PutExtra("HTMLString", html);
            tActivity.SetFlags(ActivityFlags.NewTask);
            TEditorActivity.SetOutput = (res, resStr) =>
            {
                TEditorActivity.SetOutput = null;
                if (res)
                {
                    result.SetResult(resStr);
                }
                else
                {
                    result.SetResult(string.Empty);
                }
            };
            Application.Context.StartActivity(tActivity);
            return(result.Task);
        }
示例#6
0
        public override Task <TEditorResponse> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null, EventHandler <ToolbarBuilderEventArgs> toolbarBuilderOnClick = null, bool autoFocusInput = false)
        {
            var result = new TaskCompletionSource <TEditorResponse>();

            DecoreView.AddView(new TEditorView(MainActivity, html, autoFocusInput, toolbarBuilder, toolbarBuilderOnClick));

            TEditorView.SetOutput = (res, resStr) =>
            {
                TEditorView.SetOutput = null;
                if (res)
                {
                    result.SetResult(new TEditorResponse()
                    {
                        IsSave = true, HTML = resStr
                    });
                }
                else
                {
                    result.SetResult(new TEditorResponse()
                    {
                        IsSave = false, HTML = string.Empty
                    });
                }
            };

            return(result.Task);
        }
示例#7
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 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);
        }
示例#9
0
 public void BuildToolbar(ToolbarBuilder builder)
 {
     _uiToolbarItems = new List <UIBarButtonItem>();
     foreach (var toolbaritem in builder)
     {
         _uiToolbarItems.Add(new UIBarButtonItem(
                                 UIImage.FromFile(toolbaritem.ImagePath),
                                 UIBarButtonItemStyle.Plain,
                                 delegate { toolbaritem.ClickFunc.Invoke(_richTextEditor); }
                                 ));
     }
 }
        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);
        }
示例#11
0
        private async void ShowTEditor(string html)
        {
            var             toolbar  = new ToolbarBuilder().AddBasic().AddH1();
            TEditorResponse response = await CrossTEditor.Current.ShowTEditor(html, toolbar);

            if (response.IsSave)
            {
                if (response.HTML != null)
                {
                    Content           = response.HTML;
                    txtContent.Source = new HtmlWebViewSource()
                    {
                        Html = response.HTML
                    };
                }
            }
        }
示例#12
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);
        }
示例#13
0
        public TEditorView(Context context, string value1, bool value2, ToolbarBuilder toolbarBuilder = null, EventHandler <ToolbarBuilderEventArgs> toolbarBuilderOnClick = null) : base(context)
        {
            Tag            = "TEditor.Controls.TEditorView";
            ToolbarBuilder = toolbarBuilder;
            if (ToolbarBuilder == null)
            {
                ToolbarBuilder = new ToolbarBuilder();
            }

            ToolbarBuilderOnClick = toolbarBuilderOnClick;
            SetBackgroundColor(Color.White);
            LayoutInflater inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
            LinearLayout   myRoot   = new LinearLayout(context);
            View           itemView = inflater.Inflate(Resource.Layout.TEditorActivity, myRoot);

            this.AddView(itemView);
            InitializeComponent(value1, value2);
        }
 public void BuildToolbar(ToolbarBuilder builder, EventHandler <ToolbarBuilderEventArgs> onClick)
 {
     _uiToolbarItems = new List <UIBarButtonItem>();
     foreach (var toolbaritem in builder)
     {
         _uiToolbarItems.Add(new UIBarButtonItem(
                                 UIImage.FromFile(toolbaritem.ImagePath),
                                 UIBarButtonItemStyle.Plain,
                                 delegate(object sender, EventArgs e)
         {
             onClick?.Invoke(_richTextEditor, new ToolbarBuilderEventArgs()
             {
                 Action = toolbaritem.Action
             });
             toolbaritem.ClickFunc.Invoke(_richTextEditor);
         }
                                 ));
     }
 }
        public override Task <TEditorResult> ShowTEditor(string html, ToolbarBuilder toolbarBuilder = null, bool autoFocusInput = false, Dictionary <string, string> macros = null)
        {
            var result = new TaskCompletionSource <TEditorResult>();

            var tActivity = new Intent(Application.Context, typeof(TEditorActivity));

            ToolbarBuilder = toolbarBuilder;
            if (ToolbarBuilder == null)
            {
                ToolbarBuilder = new ToolbarBuilder().AddAll();
            }
            tActivity.PutExtra("HTMLString", html);
            tActivity.PutExtra("AutoFocusInput", autoFocusInput);

            if (macros != null)
            {
                tActivity.PutStringArrayListExtra("macroKeys", macros.Keys.ToList());
                tActivity.PutStringArrayListExtra("macroValues", macros.Values.ToList());
            }

            tActivity.SetFlags(ActivityFlags.NewTask);
            TEditorActivity.SetOutput = (res, resStr) =>
            {
                TEditorActivity.SetOutput = null;
                if (res)
                {
                    result.SetResult(new TEditorResult()
                    {
                        Html = resStr, IsSave = true
                    });
                }
                else
                {
                    result.SetResult(new TEditorResult()
                    {
                        Html = string.Empty, IsSave = false
                    });
                }
            };
            Application.Context.StartActivity(tActivity);
            return(result.Task);
        }
示例#16
0
        public void BuildToolbar()
        {
            ToolbarBuilder builder = TEditorImplementation.ToolbarBuilder;

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

            foreach (var item in builder)
            {
                ImageButton imagebutton = new ImageButton(Context);
                imagebutton.Click += (sender, e) =>
                {
                    item.ClickFunc.Invoke(m_wv.RichTextEditor);
                };
                string imagename  = item.ImagePath.Split('.')[0];
                int    resourceId = (int)typeof(Resource.Drawable).GetField(imagename).GetValue(null);
                imagebutton.SetImageResource(resourceId);
                m_toolbar.AddView(imagebutton);
            }
        }
示例#17
0
 public override void Dispose(bool disposing)
 {
     base.Dispose(disposing);
     ToolbarBuilder = null;
 }
示例#18
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);
        }