using System; using Xamarin.Forms.Internals; namespace Ooui.Forms { public class DisplayAlert { private readonly Button _closeButton; private readonly Button _acceptButton; private readonly Button _cancelButton; public DisplayAlert(AlertArguments arguments) { Element = new Div { ClassName = "modal-dialog" }; var content = new Div { ClassName = "modal-content" }; var header = new Div { ClassName = "modal-header" }; _closeButton = new Button { ClassName = "close" }; _closeButton.AppendChild(new Span("×")); var h4 = new Heading(4) { Text = arguments.Title }; header.AppendChild(_closeButton); header.AppendChild(h4); content.AppendChild(header); content.AppendChild(new Div() { ClassName = "modal-body", Text = arguments.Message }); if (!string.IsNullOrEmpty(arguments.Cancel)) { var footer = new Div() { ClassName = "modal-footer" }; _cancelButton = new Button(arguments.Cancel) { ClassName = "btn btn-default" }; _cancelButton.Click += (s, e) => SetResult(false); footer.AppendChild(_cancelButton); if (!string.IsNullOrEmpty(arguments.Accept)) { _acceptButton = new Button(arguments.Accept) { ClassName = "btn btn-default" }; _acceptButton.Click += (s, e) => SetResult(true); footer.AppendChild(_acceptButton); } content.AppendChild(footer); } Element.AppendChild(content); void SetResult(bool result) { arguments.SetResult(result); } } public event TargetEventHandler Clicked { add { _closeButton.Click += value; if(_cancelButton != null) _cancelButton.Click += value; if(_acceptButton != null) _acceptButton.Click += value; } remove { _closeButton.Click -= value; if (_cancelButton != null) _cancelButton.Click -= value; if (_acceptButton != null) _acceptButton.Click -= value; } } public Element Element { get; private set; } } }