void ShowProgressWorker(float progress = -1, string status = null, MaskType maskType = MaskType.None, bool textOnly = false,
ToastPosition toastPosition = ToastPosition.Center, string cancelCaption = null, Action cancelCallback = null,
double timeoutMs = 1000, bool showContinuousProgress = false, UIImage displayContinuousImage = null)
{
Ring.ResetStyle(IsiOS7ForLookAndFeel, (IsiOS7ForLookAndFeel ? TintColor : UIColor.White));
if (OverlayView.Superview == null) {
var windows = UIApplication.SharedApplication.Windows;
Array.Reverse (windows);
foreach (UIWindow window in windows) {
if (window.WindowLevel == UIWindowLevel.Normal && !window.Hidden) {
window.AddSubview (OverlayView);
break;
}
}
}
if (Superview == null)
OverlayView.AddSubview (this);
_fadeoutTimer = null;
ImageView.Hidden = true;
_maskType = maskType;
_progress = progress;
StringLabel.Text = status;
if (!string.IsNullOrEmpty (cancelCaption)) {
CancelHudButton.SetTitle (cancelCaption, UIControlState.Normal);
CancelHudButton.TouchUpInside += delegate {
Dismiss ();
if (cancelCallback != null) {
obj.InvokeOnMainThread (() => cancelCallback.DynamicInvoke (null));
//cancelCallback.DynamicInvoke(null);
}
};
}
UpdatePosition (textOnly);
if (showContinuousProgress) {
if (displayContinuousImage != null) {
_displayContinuousImage = true;
ImageView.Image = displayContinuousImage;
ImageView.Hidden = false;
}
RingLayer.StrokeEnd = 0.0f;
StartProgressTimer (TimeSpan.FromMilliseconds (Ring.ProgressUpdateInterval));
} else {
if (progress >= 0) {
ImageView.Image = null;
ImageView.Hidden = false;
SpinnerView.StopAnimating ();
RingLayer.StrokeEnd = progress;
} else if (textOnly) {
CancelRingLayerAnimation ();
SpinnerView.StopAnimating ();
} else {
CancelRingLayerAnimation ();
SpinnerView.StartAnimating ();
}
}
bool cancelButtonVisible = _cancelHud != null && _cancelHud.IsDescendantOfView (_hudView);
// intercept user interaction with the underlying view
if (maskType != MaskType.None || cancelButtonVisible) {
OverlayView.UserInteractionEnabled = true;
//AccessibilityLabel = status;
//IsAccessibilityElement = true;
} else {
OverlayView.UserInteractionEnabled = false;
//hudView.IsAccessibilityElement = true;
}
OverlayView.Hidden = false;
this.toastPosition = toastPosition;
PositionHUD (null);
if (Alpha != 1) {
RegisterNotifications ();
HudView.Transform.Scale (1.3f, 1.3f);
if (isClear) {
Alpha = 1f;
HudView.Alpha = 0f;
}
UIView.Animate (0.15f, 0,
UIViewAnimationOptions.AllowUserInteraction | UIViewAnimationOptions.CurveEaseOut | UIViewAnimationOptions.BeginFromCurrentState,
delegate {
HudView.Transform.Scale ((float)1 / 1.3f, (float)1f / 1.3f);
if (isClear) {
HudView.Alpha = 1f;
} else {
Alpha = 1f;
}
}, delegate {
//UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, string);
if (textOnly)
StartDismissTimer (TimeSpan.FromMilliseconds (timeoutMs));
});
SetNeedsDisplay ();
}
}