Added display alert to clean up code for DisplayAlerts from the Platform class
This commit is contained in:
parent
7967bdebf7
commit
404201d876
|
@ -0,0 +1,106 @@
|
|||
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"
|
||||
};
|
||||
|
||||
footer.AppendChild(_cancelButton);
|
||||
|
||||
if (!string.IsNullOrEmpty(arguments.Accept))
|
||||
{
|
||||
_acceptButton = new Button(arguments.Accept)
|
||||
{
|
||||
ClassName = "btn btn-default"
|
||||
};
|
||||
|
||||
footer.AppendChild(_acceptButton);
|
||||
}
|
||||
|
||||
content.AppendChild(footer);
|
||||
}
|
||||
|
||||
Element.AppendChild(content);
|
||||
}
|
||||
|
||||
public event TargetEventHandler Clicked
|
||||
{
|
||||
add
|
||||
{
|
||||
_closeButton.Clicked += value;
|
||||
|
||||
if(_cancelButton != null)
|
||||
_cancelButton.Clicked += value;
|
||||
|
||||
if(_acceptButton != null)
|
||||
_acceptButton.Clicked += value;
|
||||
}
|
||||
remove
|
||||
{
|
||||
_closeButton.Clicked -= value;
|
||||
|
||||
if (_cancelButton != null)
|
||||
_cancelButton.Clicked -= value;
|
||||
|
||||
if (_acceptButton != null)
|
||||
_acceptButton.Clicked -= value;
|
||||
}
|
||||
}
|
||||
public Element Element { get; private set; }
|
||||
}
|
||||
}
|
|
@ -15,7 +15,6 @@
|
|||
<PackageReference Include="Xamarin.Forms" Version="2.4.0.38779" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Renderers\" />
|
||||
<Folder Include="Extensions\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -35,79 +35,14 @@ namespace Ooui.Forms
|
|||
|
||||
MessagingCenter.Subscribe(this, Page.AlertSignalName, (Page sender, AlertArguments arguments) =>
|
||||
{
|
||||
var alert = new Div
|
||||
{
|
||||
ClassName = "modal-dialog"
|
||||
};
|
||||
var alert = new DisplayAlert(arguments);
|
||||
alert.Clicked += CloseAlert;
|
||||
|
||||
var content = new Div
|
||||
{
|
||||
ClassName = "modal-content"
|
||||
};
|
||||
|
||||
var header = new Div
|
||||
{
|
||||
ClassName = "modal-header"
|
||||
};
|
||||
|
||||
var closeButton = new Button
|
||||
{
|
||||
ClassName = "close"
|
||||
};
|
||||
|
||||
closeButton.AppendChild(new Span(HttpUtility.HtmlDecode("×")));
|
||||
closeButton.Clicked += CloseAlert;
|
||||
|
||||
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"
|
||||
};
|
||||
|
||||
var cancel = new Button(arguments.Cancel)
|
||||
{
|
||||
ClassName = "btn btn-default"
|
||||
};
|
||||
cancel.Clicked += CloseAlert;
|
||||
|
||||
footer.AppendChild(cancel);
|
||||
|
||||
if (!string.IsNullOrEmpty(arguments.Accept))
|
||||
{
|
||||
var accept = new Button(arguments.Accept)
|
||||
{
|
||||
ClassName = "btn btn-default"
|
||||
};
|
||||
accept.Clicked += CloseAlert;
|
||||
|
||||
footer.AppendChild(accept);
|
||||
}
|
||||
|
||||
content.AppendChild(footer);
|
||||
}
|
||||
|
||||
alert.AppendChild(content);
|
||||
_renderer.AppendChild(alert);
|
||||
_renderer.AppendChild(alert.Element);
|
||||
|
||||
void CloseAlert(object s, EventArgs e)
|
||||
{
|
||||
_renderer.RemoveChild(alert);
|
||||
_renderer.RemoveChild(alert.Element);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue