Added display alert to clean up code for DisplayAlerts from the Platform class

This commit is contained in:
Andrew Hoefling 2017-11-17 22:25:55 +00:00
parent 7967bdebf7
commit 404201d876
3 changed files with 110 additions and 70 deletions

106
Ooui.Forms/DisplayAlert.cs Normal file
View File

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

View File

@ -15,7 +15,6 @@
<PackageReference Include="Xamarin.Forms" Version="2.4.0.38779" />
</ItemGroup>
<ItemGroup>
<Folder Include="Renderers\" />
<Folder Include="Extensions\" />
</ItemGroup>
<ItemGroup>

View File

@ -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("&times;")));
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);
}
});
}