public IToast ShowAsync(object content, float duration, ToastPosition position = ToastPosition.Bottom, IDataContext context = null) { View holder = null; var currentActivity = PlatformExtensions.CurrentActivity; if (currentActivity != null) { var selector = currentActivity.GetBindingMemberValue(AttachedMembersDesign.Activity.SnackbarViewSelector); if (selector != null) { holder = selector(content, position, context); } if (holder == null) { holder = currentActivity.GetBindingMemberValue(AttachedMembersDesign.Activity.SnackbarView); } } if (holder == null) { return(_defaultPresenter.ShowAsync(content, duration, position, context)); } var toastImpl = new ToastImpl(); if (_threadManager.IsUiThread) { ShowInternal(currentActivity, holder, content, duration, toastImpl); } else { _threadManager.InvokeOnUiThreadAsync(() => ShowInternal(currentActivity, holder, content, duration, toastImpl), OperationPriority.High); } return(toastImpl); }
public IToast ShowAsync(object content, float duration, ToastPosition position = ToastPosition.Bottom, IDataContext context = null) { var toastImpl = new ToastImpl(); if (_threadManager.IsUiThread) { toastImpl.CloseAction = ShowInternal(content, duration, position, context, toastImpl.Tcs); } else { _threadManager.InvokeOnUiThreadAsync(() => toastImpl.CloseAction = ShowInternal(content, duration, position, context, toastImpl.Tcs)); } return(toastImpl); }
public IToast ShowAsync(object content, float duration, ToastPosition position = ToastPosition.Bottom, IDataContext context = null) { var toast = new ToastImpl(); if (_threadManager.IsUiThread) { Show(content, duration, position, context, toast); } else { _threadManager.InvokeOnUiThreadAsync(() => Show(content, duration, position, context, toast)); } return(toast); }
private void ShowInternal(ToastImpl toast, IDataTemplateSelector selector, View snackbarHolderView, object content, float duration, ToastPosition position, IDataContext context) { Snackbar snackbar; if (selector == null) { snackbar = Snackbar.Make(snackbarHolderView, content.ToStringSafe("(null)"), (int)duration); } else { snackbar = (Snackbar)selector.SelectTemplate(content, snackbarHolderView); } if (snackbar == null) { toast.FromToast(_defaultPresenter.ShowAsync(content, duration, position, context)); } else { toast.Show(snackbar, duration); } }
private void Show(object content, float duration, ToastPosition position, IDataContext context, ToastImpl toastImpl) { UIView owner = GetOwner() ?? UIApplication.SharedApplication.KeyWindow; toastImpl.Toast = CreateToast(content, owner, duration, position, context ?? DataContext.Empty, toastImpl.Tcs); ServiceProvider.AttachedValueProvider.AddOrUpdate(owner, Key, toastImpl.Toast, (item, value, currentValue, state) => { currentValue.Hide(); return(value); }).Show(); }
public IToast ShowAsync(object content, float duration, ToastPosition position = ToastPosition.Bottom, IDataContext context = null) { var toastImpl = new ToastImpl(); if (_threadManager.IsUiThread) toastImpl.Control = ShowInternal(content, duration, position, context, toastImpl.Tcs); else _threadManager.InvokeOnUiThreadAsync(() => toastImpl.Control = ShowInternal(content, duration, position, context, toastImpl.Tcs)); return toastImpl; }
public IToast ShowAsync(object content, float duration, ToastPosition position = ToastPosition.Bottom, IDataContext context = null) { View holder = null; var currentActivity = PlatformExtensions.CurrentActivity; if (currentActivity != null) { var selector = currentActivity.GetBindingMemberValue(AttachedMembersDesign.Activity.SnackbarViewSelector); holder = selector == null ? currentActivity.GetBindingMemberValue(AttachedMembersDesign.Activity.SnackbarView) : selector(content, position, context); } if (holder == null) return _defaultPresenter.ShowAsync(content, duration, position, context); var templateSelector = currentActivity.GetBindingMemberValue(AttachedMembersDesign.Activity.SnackbarTemplateSelector); var toastImpl = new ToastImpl(); if (_threadManager.IsUiThread) ShowInternal(toastImpl, templateSelector, holder, content, duration, position, context); else _threadManager.InvokeOnUiThreadAsync(() => ShowInternal(toastImpl, templateSelector, holder, content, duration, position, context), OperationPriority.High); return toastImpl; }
private void ShowInternal(ToastImpl toast, IDataTemplateSelector selector, View snackbarHolderView, object content, float duration, ToastPosition position, IDataContext context) { Snackbar snackbar; if (selector == null) snackbar = Snackbar.Make(snackbarHolderView, content.ToStringSafe("(null)"), (int)duration); else snackbar = (Snackbar)selector.SelectTemplate(content, snackbarHolderView); if (snackbar == null) toast.FromToast(_defaultPresenter.ShowAsync(content, duration, position, context)); else toast.Show(snackbar, duration); }
private static void ShowInternal(Activity activity, View snackbarHolderView, object content, float duration, ToastImpl toast) { Snackbar snackbar = null; var selector = activity.GetBindingMemberValue(AttachedMembersDesign.Activity.SnackbarTemplateSelector); if (selector != null) snackbar = (Snackbar) selector.SelectTemplate(content, snackbarHolderView); if (snackbar == null) snackbar = Snackbar.Make(snackbarHolderView, content.ToStringSafe("(null)"), (int) duration); toast.Show(snackbar, duration); }
private static void ShowInternal(Activity activity, View snackbarHolderView, object content, float duration, ToastImpl toast) { Snackbar snackbar = null; var selector = activity.GetBindingMemberValue(AttachedMembersDesign.Activity.SnackbarTemplateSelector); if (selector != null) { snackbar = (Snackbar)selector.SelectTemplate(content, snackbarHolderView); } if (snackbar == null) { snackbar = Snackbar.Make(snackbarHolderView, content.ToStringSafe("(null)"), (int)duration); } toast.Show(snackbar, duration); }
private void Show(object content, float duration, ToastPosition position, IDataContext context, ToastImpl toastImpl) { UIView owner = GetOwner() ?? UIApplication.SharedApplication.KeyWindow; toastImpl.Toast = CreateToast(content, owner, duration, position, context ?? DataContext.Empty, toastImpl.Tcs); ServiceProvider.AttachedValueProvider.AddOrUpdate(owner, Key, toastImpl.Toast, (item, value, currentValue, state) => { currentValue.Hide(); return value; }).Show(); }
public IToast ShowAsync(object content, float duration, ToastPosition position = ToastPosition.Bottom, IDataContext context = null) { var toast = new ToastImpl(); if (_threadManager.IsUiThread) Show(content, duration, position, context, toast); else _threadManager.InvokeOnUiThreadAsync(() => Show(content, duration, position, context, toast)); return toast; }
/// <summary> /// 尝试添加使用 <see cref="ToastService"/> 实现的 <see cref="IToast"/> /// </summary> /// <param name="services"></param> /// <returns></returns> public static IServiceCollection TryAddToast(this IServiceCollection services) => ToastImpl.TryAddToast(services);