summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ModalActivityIndicatorTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ModalActivityIndicatorTest.cs')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ModalActivityIndicatorTest.cs150
1 files changed, 150 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ModalActivityIndicatorTest.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ModalActivityIndicatorTest.cs
new file mode 100644
index 00000000..b60c6351
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ModalActivityIndicatorTest.cs
@@ -0,0 +1,150 @@
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+using System.Threading.Tasks;
+using Xamarin.Forms.CustomAttributes;
+using Xamarin.Forms;
+namespace Xamarin.Forms.Controls
+{
+ [Preserve (AllMembers = true)]
+ [Issue (IssueTracker.None, 0, "Activity Indicator Does Not Show when set to default color")]
+ public class ModalActivityIndicatorTest : TestContentPage
+ {
+ protected override void Init ()
+ {
+ var vm = new ModalActivityIndicatorModel () { IsBusy = false, BusyText = "Not busy" };
+
+ var button = new Button () { Text = "Make Busy" };
+ var colorToggle = new Button() {Text = "Toggle Activity Indicator Color" };
+
+ button.Clicked += async (sender, args) => {
+ vm.IsBusy = true;
+ vm.BusyText = "Busy";
+ await Task.Delay (1500);
+ vm.IsBusy = false;
+ vm.BusyText = "Not Busy";
+ };
+
+ var activityIndicator = new ModalActivityIndicator();
+ activityIndicator.BindingContext = vm;
+
+ colorToggle.Clicked += (sender, args) => {
+ vm.Color = vm.Color.IsDefault ? Color.Green : Color.Default;
+ };
+
+ Content = new StackLayout() {
+ Children = { button, colorToggle, activityIndicator }
+ };
+ }
+
+ [Preserve(AllMembers = true)]
+ public class ModalActivityIndicatorModel : INotifyPropertyChanged
+ {
+ bool _isBusy;
+ string _busyText;
+ Color _color;
+
+ public ModalActivityIndicatorModel ()
+ {
+ _color = Color.Default;
+ }
+
+ public bool IsBusy
+ {
+ get { return _isBusy; }
+ set
+ {
+ _isBusy = value;
+ OnPropertyChanged();
+ }
+ }
+
+ public string BusyText
+ {
+ get { return _busyText; }
+ set
+ {
+ _busyText = value;
+ OnPropertyChanged();
+ }
+ }
+
+ public Color Color
+ {
+ get { return _color; }
+ set
+ {
+ _color = value;
+ OnPropertyChanged();
+ }
+ }
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ protected virtual void OnPropertyChanged ([CallerMemberName] string propertyName = null)
+ {
+ PropertyChanged?.Invoke (this, new PropertyChangedEventArgs (propertyName));
+ }
+ }
+
+ [Preserve(AllMembers = true)]
+ public class ModalActivityIndicator : RelativeLayout
+ {
+ public ModalActivityIndicator()
+ {
+ this.SetBinding(IsVisibleProperty, "IsBusy");
+ this.SetBinding(IsEnabledProperty, "IsBusy");
+
+ Children.Add(
+ view: new BoxView
+ {
+ Opacity = .4,
+ BackgroundColor = Color.FromHex("#ccc")
+ },
+ widthConstraint: Forms.Constraint.RelativeToParent((parent) => {
+ return parent.Width;
+ }),
+ heightConstraint: Forms.Constraint.RelativeToParent((parent) => {
+ return parent.Height;
+ })
+ );
+
+ var content = new StackLayout
+ {
+ BackgroundColor = Color.White,
+ Spacing = 10,
+ Padding = new Thickness(
+ horizontalSize: 10,
+ verticalSize: 20
+ )
+ };
+
+ var activityIndicator = new ActivityIndicator { IsRunning = true };
+ activityIndicator.SetBinding(ActivityIndicator.ColorProperty, "Color");
+
+ content.Children.Add(activityIndicator);
+ var label = new Label { HorizontalOptions = LayoutOptions.CenterAndExpand };
+
+ label.SetBinding(Label.TextProperty, "BusyText");
+ label.SetBinding(Label.TextColorProperty, "Color");
+
+ content.Children.Add(label);
+
+ Children.Add(
+ view: content,
+ widthConstraint: Forms.Constraint.RelativeToParent((parent) => {
+ return parent.Width / 2;
+ }),
+ heightConstraint: Forms.Constraint.RelativeToParent((parent) => {
+ return parent.Width / 3;
+ }),
+ xConstraint: Forms.Constraint.RelativeToParent((parent) => {
+ return parent.Width / 4;
+ }),
+ yConstraint: Forms.Constraint.RelativeToParent((parent) => {
+ return (parent.Height / 2) - (parent.Width / 6);
+ })
+ );
+ }
+ }
+ }
+} \ No newline at end of file