Ooui-tws-port/Ooui.Forms/DisplayAlert.cs

115 lines
2.9 KiB
C#

using System.Web;
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(HttpUtility.HtmlDecode("×")));
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; }
}
}