Example #1
0
        /// <summary>
        /// Create the specified dialogProvider and releaseUI.
        /// </summary>
        /// <param name="dialogProvider">Dialog provider.</param>
        /// <param name="releaseUI">If set to <c>true</c> release UI, when the dialog resumed.</param>
        public static SimpleDialogFragment Create(SimpleDialogProvider dialogProvider /*, bool releaseUI = false*/)
        {
            dialogProvider.FragmentTag      = Guid.NewGuid().ToString();
            dialogProvider.ProcessSessionId = ProcessSessionId;

            return(new SimpleDialogFragment
            {
                cachedProvider = dialogProvider,
            });
        }
Example #2
0
        public override Dialog OnCreateDialog(Bundle savedInstanceState)
        {
            var provider = cachedProvider;

            if (provider == null)
            {
                if (savedInstanceState != null)
                {
                    var savedProviderString = savedInstanceState.GetString(SavedProvider);
                    if (!string.IsNullOrEmpty(savedProviderString))
                    {
                        cachedProvider = JsonConvert.DeserializeObject <SimpleDialogProvider>(savedProviderString);
                        provider       = cachedProvider;
                    }
                }
            }

            if (provider == null)
            {
                throw new InvalidProgramException("Unable to get dialog provider.");
            }

            Dialog dialog = null;

            switch (provider.Type)
            {
            case SimpleDialogProvider.DialogType.AlertDialog:
                var dialogBuilder = new AlertDialog.Builder(Activity);
                if (provider.TitleResId > 0)
                {
                    dialogBuilder.SetTitle(MainApp.ThisApp.Resources.GetString(provider.TitleResId));
                }

                dialogBuilder.SetMessage(MainApp.ThisApp.Resources.GetString(provider.MessageResId));
                dialogBuilder.SetCancelable(provider.Cancelable);
                Cancelable = provider.Cancelable;
                dialogBuilder.SetPositiveButton(
                    provider.PositiveButtonResId > 0
                            ? MainApp.ThisApp.Resources.GetString(provider.PositiveButtonResId)
                            : Activity.Resources.GetString(Resource.String.OK),
                    new EventHandler <DialogClickEventArgs>(OnButtonClick));
                if (provider.NegativeButtonResId >= 0)
                {
                    dialogBuilder.SetNegativeButton(
                        provider.NegativeButtonResId == 0
                                ? Activity.Resources.GetString(Resource.String.Cancel)
                                : Activity.Resources.GetString(provider.NegativeButtonResId),
                        new EventHandler <DialogClickEventArgs>(OnButtonClick));
                }

                dialog = dialogBuilder.Create();
                if (provider.TitleResId > 0)
                {
                    dialog.RequestWindowFeature((int)WindowFeatures.NoTitle);
                }

                dialog.SetCanceledOnTouchOutside(provider.CanceledOnTouchOutside);
                break;

            case SimpleDialogProvider.DialogType.PleaseWaitDialog:
                var progressDialog = new ProgressDialog(Activity);
                progressDialog.Indeterminate = true;
                progressDialog.SetProgressStyle(ProgressDialogStyle.Spinner);
                progressDialog.SetMessage(
                    provider.MessageResId > 0
                            ? Activity.Resources.GetString(provider.MessageResId)
                            : Activity.Resources.GetString(Resource.String.PleaseWaitMessage));
                progressDialog.SetCancelable(false);
                progressDialog.SetCanceledOnTouchOutside(false);
                dialog     = progressDialog;
                Cancelable = false;
                break;

            default:
                throw new InvalidProgramException("Unknown dialog type.");
            }

            return(dialog);
        }