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); }); }
/// <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; }
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; }
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 });