public static void ShowDatePicker(OnDatePicked callback)
    {
        int year  = DateTime.Now.Year;
        int month = DateTime.Now.Month;
        int day   = DateTime.Now.Day;
        AndroidJavaObject dialog = new AndroidJavaObject("android.app.DatePickerDialog", GetActivity(),
                                                         new AndroidNativePicker.OnDateSetListenerPoxy(callback), year, month, day);

        dialog.Call("show");
    }
        public static AndroidJavaObject CreateDatePickerDialog(int year, int month, int day,
                                                               OnDatePicked onDatePicked, Action onCancel, AGDialogTheme theme = AGDialogTheme.Default)
        {
            var listener      = new OnDateSetListenerPoxy(onDatePicked);
            int themeResource = AndroidDialogUtils.GetDialogTheme(theme);

            //  Month! (0-11 for compatibility with MONTH)
            var dialog = AndroidDialogUtils.IsDefault(themeResource)
                                ? new AndroidJavaObject(DatePickerClass, AGUtils.Activity, listener, year, month - 1, day)
                                : new AndroidJavaObject(DatePickerClass, AGUtils.Activity, themeResource, listener, year, month - 1, day);

            dialog.Call("setOnCancelListener", new DialogOnCancelListenerPoxy(onCancel));
            return(dialog);
        }
        /// <summary>
        /// Shows the default Android date picker.
        /// </summary>
        /// <param name="year">Year.</param>
        /// <param name="month">Month.</param>
        /// <param name="day">Day.</param>
        /// <param name="onDatePicked">Date was picked callback.</param>
        /// <param name="onCancel">Dialog was cancelled callback.</param>
        /// <param name="theme">Dialog theme</param>
        public static void ShowDatePicker(int year, int month, int day,
                                          OnDatePicked onDatePicked, Action onCancel,
                                          AGDialogTheme theme = AGDialogTheme.Default)
        {
            if (AGUtils.IsNotAndroid())
            {
                return;
            }

            AGUtils.RunOnUiThread(() =>
            {
                var dialog = CreateDatePickerDialog(year, month, day, onDatePicked, onCancel, theme);
                AndroidDialogUtils.ShowWithImmersiveModeWorkaround(dialog);
            });
        }
        public static void ShowDatePickerWithLimits(int year, int month, int day,
                                                    OnDatePicked onDatePicked, Action onCancel,
                                                    DateTime minDate, DateTime maxDate,
                                                    AGDialogTheme theme = AGDialogTheme.Default)
        {
            if (AGUtils.IsNotAndroid())
            {
                return;
            }

            AGUtils.RunOnUiThread(() =>
            {
                var dialog = CreateDatePickerDialog(year, month, day, onDatePicked, onCancel, theme);
                var picker = dialog.CallAJO("getDatePicker");
                picker.Call("setMinDate", minDate.ToMillisSinceEpoch());
                picker.Call("setMaxDate", maxDate.ToMillisSinceEpoch());
                AndroidDialogUtils.ShowWithImmersiveModeWorkaround(dialog);
            });
        }
Пример #5
0
        /// <summary>
        /// Shows the default Android date picker.
        /// </summary>
        /// <param name="year">Year.</param>
        /// <param name="month">Month.</param>
        /// <param name="day">Day.</param>
        /// <param name="onDatePicked">Date was picked callback.</param>
        /// <param name="onCancel">Dialog was cancelled callback.</param>
        /// <param name="theme">Dialog theme</param>
        public static void ShowDatePicker(int year, int month, int day, OnDatePicked onDatePicked, Action onCancel, AGDialogTheme theme = AGDialogTheme.Default)
        {
            if (AGUtils.IsNotAndroidCheck())
            {
                return;
            }

            AGUtils.RunOnUiThread(() =>
            {
                var listener      = new AGDateTimePicker.OnDateSetListenerPoxy(onDatePicked);
                int themeResource = AndroidDialogUtils.GetDialogTheme(theme);

                //  Month! (0-11 for compatibility with MONTH)
                var dialog = AndroidDialogUtils.IsDefault(themeResource) ?
                             new AndroidJavaObject(DatePickerClass, AGUtils.Activity, listener, year, month - 1, day) :
                             new AndroidJavaObject(DatePickerClass, AGUtils.Activity, themeResource, listener, year, month - 1, day);

                dialog.Call("setOnCancelListener", new DialogOnCancelListenerPoxy(onCancel));
                dialog.Call("show");
            });
        }
 public OnDateSetListenerPoxy(OnDatePicked onDatePicked)
     : base("android.app.DatePickerDialog$OnDateSetListener")
 {
     _onDatePicked = onDatePicked;
 }
Пример #7
0
        internal override void AddAttributes()
        {
            base.AddAttributes();
            var innerAttr = new Dictionary <string, string>();

            if (DateTimeFormat.IsNullOrEmpty())
            {
                DateTimeFormat = "yyyy-MM-dd";
            }
            if (!Value.IsNullOrEmpty())
            {
                DateTime dt;
                if (DateTime.TryParse(Value, out dt))
                {
                    Value = dt.ToString(DateTimeFormat);
                }
            }
            innerAttr.Add("dateFmt", StringProperty(DateTimeFormat));
            if (ChangeTiggerSearch)
            {
                innerAttr.Add("onpicked", "function(){$(this).closest('[searchForm]').submit();}");
            }
            else
            {
                if (!OnDatePicked.IsNullOrEmpty())
                {
                    innerAttr.Add("onpicked", OnDatePicked);
                }
            }
            if (!Maximum.IsNullOrEmpty())
            {
                innerAttr.Add("maxDate", StringProperty(Maximum));
            }
            if (!String.IsNullOrEmpty(Minimum))
            {
                innerAttr.Add("minDate", StringProperty(Minimum));
            }
            if (GreaterThanToday)
            {
                innerAttr.Add("minDate", StringProperty(DateTime.Now.ToString()));
            }
            if (!string.IsNullOrEmpty(MinDateControl))
            {
                innerAttr.Add("minDate", "\'#F{$dp.$D(\\\'" + MinDateControl + "\\\');}\'");
            }
            if (!string.IsNullOrEmpty(MaxDateControl))
            {
                innerAttr.Add("maxDate", "\'#F{$dp.$D(\\\'" + MaxDateControl + "\\\');}\'");
            }
            if (ShowWeek)
            {
                innerAttr.Add("isShowWeek", "true");
            }
            StringBuilder innerAttrStr = new StringBuilder();

            innerAttr.ForEach((dict) =>
            {
                innerAttrStr.AppendFormat(",{0}:{1}", dict.Key, dict.Value);
            });
            Attributes["onclick"] = "WdatePicker({{{0}}});".FormatTo(innerAttrStr.ToString().Substring(1));
            Attributes["value"]   = Value;
        }
Пример #8
0
 public void OnDateSet(DatePicker view, int year, int month, int dayOfMonth) =>
 OnDatePicked?.Invoke(this, new DateSetEventArgs {
     View = view, Year = year, Month = month + 1, DayOfMonth = dayOfMonth
 });