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" />
 | 
					    <PackageReference Include="Xamarin.Forms" Version="2.4.0.38779" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Folder Include="Renderers\" />
 | 
					 | 
				
			||||||
    <Folder Include="Extensions\" />
 | 
					    <Folder Include="Extensions\" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,79 +35,14 @@ namespace Ooui.Forms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            MessagingCenter.Subscribe(this, Page.AlertSignalName, (Page sender, AlertArguments arguments) =>
 | 
					            MessagingCenter.Subscribe(this, Page.AlertSignalName, (Page sender, AlertArguments arguments) =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var alert = new Div
 | 
					                var alert = new DisplayAlert(arguments);
 | 
				
			||||||
                {
 | 
					                alert.Clicked += CloseAlert;
 | 
				
			||||||
                    ClassName = "modal-dialog"
 | 
					 | 
				
			||||||
                };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var content = new Div
 | 
					                _renderer.AppendChild(alert.Element);
 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    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);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                void CloseAlert(object s, EventArgs e)
 | 
					                void CloseAlert(object s, EventArgs e)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    _renderer.RemoveChild(alert);
 | 
					                    _renderer.RemoveChild(alert.Element);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue