mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
702 lines
34 KiB
Java
702 lines
34 KiB
Java
package com.google.android.material.datepicker;
|
|
|
|
import android.app.Dialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.content.res.ColorStateList;
|
|
import android.content.res.Resources;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.Rect;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.graphics.drawable.InsetDrawable;
|
|
import android.graphics.drawable.StateListDrawable;
|
|
import android.os.Bundle;
|
|
import android.text.TextUtils;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.view.Window;
|
|
import android.widget.Button;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
import androidx.appcompat.content.res.AppCompatResources;
|
|
import androidx.core.util.Pair;
|
|
import androidx.core.view.OnApplyWindowInsetsListener;
|
|
import androidx.core.view.ViewCompat;
|
|
import androidx.core.view.WindowInsetsCompat;
|
|
import androidx.fragment.app.DialogFragment;
|
|
import androidx.fragment.app.FragmentTransaction;
|
|
import com.google.android.material.R;
|
|
import com.google.android.material.datepicker.CalendarConstraints;
|
|
import com.google.android.material.dialog.InsetDialogOnTouchListener;
|
|
import com.google.android.material.internal.CheckableImageButton;
|
|
import com.google.android.material.internal.EdgeToEdgeUtils;
|
|
import com.google.android.material.internal.ViewUtils;
|
|
import com.google.android.material.resources.MaterialAttributes;
|
|
import com.google.android.material.shape.MaterialShapeDrawable;
|
|
import java.lang.annotation.Retention;
|
|
import java.lang.annotation.RetentionPolicy;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedHashSet;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class MaterialDatePicker<S> extends DialogFragment {
|
|
private static final String CALENDAR_CONSTRAINTS_KEY = "CALENDAR_CONSTRAINTS_KEY";
|
|
private static final String DATE_SELECTOR_KEY = "DATE_SELECTOR_KEY";
|
|
private static final String DAY_VIEW_DECORATOR_KEY = "DAY_VIEW_DECORATOR_KEY";
|
|
public static final int INPUT_MODE_CALENDAR = 0;
|
|
private static final String INPUT_MODE_KEY = "INPUT_MODE_KEY";
|
|
public static final int INPUT_MODE_TEXT = 1;
|
|
private static final String NEGATIVE_BUTTON_CONTENT_DESCRIPTION_KEY = "NEGATIVE_BUTTON_CONTENT_DESCRIPTION_KEY";
|
|
private static final String NEGATIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY = "NEGATIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY";
|
|
private static final String NEGATIVE_BUTTON_TEXT_KEY = "NEGATIVE_BUTTON_TEXT_KEY";
|
|
private static final String NEGATIVE_BUTTON_TEXT_RES_ID_KEY = "NEGATIVE_BUTTON_TEXT_RES_ID_KEY";
|
|
private static final String OVERRIDE_THEME_RES_ID = "OVERRIDE_THEME_RES_ID";
|
|
private static final String POSITIVE_BUTTON_CONTENT_DESCRIPTION_KEY = "POSITIVE_BUTTON_CONTENT_DESCRIPTION_KEY";
|
|
private static final String POSITIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY = "POSITIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY";
|
|
private static final String POSITIVE_BUTTON_TEXT_KEY = "POSITIVE_BUTTON_TEXT_KEY";
|
|
private static final String POSITIVE_BUTTON_TEXT_RES_ID_KEY = "POSITIVE_BUTTON_TEXT_RES_ID_KEY";
|
|
private static final String TITLE_TEXT_KEY = "TITLE_TEXT_KEY";
|
|
private static final String TITLE_TEXT_RES_ID_KEY = "TITLE_TEXT_RES_ID_KEY";
|
|
private MaterialShapeDrawable background;
|
|
private MaterialCalendar<S> calendar;
|
|
private CalendarConstraints calendarConstraints;
|
|
private Button confirmButton;
|
|
private DateSelector<S> dateSelector;
|
|
private DayViewDecorator dayViewDecorator;
|
|
private boolean edgeToEdgeEnabled;
|
|
private CharSequence fullTitleText;
|
|
private boolean fullscreen;
|
|
private TextView headerSelectionText;
|
|
private TextView headerTitleTextView;
|
|
private CheckableImageButton headerToggleButton;
|
|
private int inputMode;
|
|
private CharSequence negativeButtonContentDescription;
|
|
private int negativeButtonContentDescriptionResId;
|
|
private CharSequence negativeButtonText;
|
|
private int negativeButtonTextResId;
|
|
private int overrideThemeResId;
|
|
private PickerFragment<S> pickerFragment;
|
|
private CharSequence positiveButtonContentDescription;
|
|
private int positiveButtonContentDescriptionResId;
|
|
private CharSequence positiveButtonText;
|
|
private int positiveButtonTextResId;
|
|
private CharSequence singleLineTitleText;
|
|
private CharSequence titleText;
|
|
private int titleTextResId;
|
|
static final Object CONFIRM_BUTTON_TAG = "CONFIRM_BUTTON_TAG";
|
|
static final Object CANCEL_BUTTON_TAG = "CANCEL_BUTTON_TAG";
|
|
static final Object TOGGLE_BUTTON_TAG = "TOGGLE_BUTTON_TAG";
|
|
private final LinkedHashSet<MaterialPickerOnPositiveButtonClickListener<? super S>> onPositiveButtonClickListeners = new LinkedHashSet<>();
|
|
private final LinkedHashSet<View.OnClickListener> onNegativeButtonClickListeners = new LinkedHashSet<>();
|
|
private final LinkedHashSet<DialogInterface.OnCancelListener> onCancelListeners = new LinkedHashSet<>();
|
|
private final LinkedHashSet<DialogInterface.OnDismissListener> onDismissListeners = new LinkedHashSet<>();
|
|
|
|
@Retention(RetentionPolicy.SOURCE)
|
|
/* loaded from: classes2.dex */
|
|
public @interface InputMode {
|
|
}
|
|
|
|
public int getInputMode() {
|
|
return this.inputMode;
|
|
}
|
|
|
|
public static long todayInUtcMilliseconds() {
|
|
return UtcDates.getTodayCalendar().getTimeInMillis();
|
|
}
|
|
|
|
public static long thisMonthInUtcMilliseconds() {
|
|
return Month.current().timeInMillis;
|
|
}
|
|
|
|
public String getHeaderText() {
|
|
return getDateSelector().getSelectionDisplayString(getContext());
|
|
}
|
|
|
|
static <S> MaterialDatePicker<S> newInstance(Builder<S> builder) {
|
|
MaterialDatePicker<S> materialDatePicker = new MaterialDatePicker<>();
|
|
Bundle bundle = new Bundle();
|
|
bundle.putInt(OVERRIDE_THEME_RES_ID, builder.overrideThemeResId);
|
|
bundle.putParcelable(DATE_SELECTOR_KEY, builder.dateSelector);
|
|
bundle.putParcelable(CALENDAR_CONSTRAINTS_KEY, builder.calendarConstraints);
|
|
bundle.putParcelable(DAY_VIEW_DECORATOR_KEY, builder.dayViewDecorator);
|
|
bundle.putInt(TITLE_TEXT_RES_ID_KEY, builder.titleTextResId);
|
|
bundle.putCharSequence(TITLE_TEXT_KEY, builder.titleText);
|
|
bundle.putInt(INPUT_MODE_KEY, builder.inputMode);
|
|
bundle.putInt(POSITIVE_BUTTON_TEXT_RES_ID_KEY, builder.positiveButtonTextResId);
|
|
bundle.putCharSequence(POSITIVE_BUTTON_TEXT_KEY, builder.positiveButtonText);
|
|
bundle.putInt(POSITIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY, builder.positiveButtonContentDescriptionResId);
|
|
bundle.putCharSequence(POSITIVE_BUTTON_CONTENT_DESCRIPTION_KEY, builder.positiveButtonContentDescription);
|
|
bundle.putInt(NEGATIVE_BUTTON_TEXT_RES_ID_KEY, builder.negativeButtonTextResId);
|
|
bundle.putCharSequence(NEGATIVE_BUTTON_TEXT_KEY, builder.negativeButtonText);
|
|
bundle.putInt(NEGATIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY, builder.negativeButtonContentDescriptionResId);
|
|
bundle.putCharSequence(NEGATIVE_BUTTON_CONTENT_DESCRIPTION_KEY, builder.negativeButtonContentDescription);
|
|
materialDatePicker.setArguments(bundle);
|
|
return materialDatePicker;
|
|
}
|
|
|
|
@Override // androidx.fragment.app.DialogFragment, androidx.fragment.app.Fragment
|
|
public final void onSaveInstanceState(Bundle bundle) {
|
|
super.onSaveInstanceState(bundle);
|
|
bundle.putInt(OVERRIDE_THEME_RES_ID, this.overrideThemeResId);
|
|
bundle.putParcelable(DATE_SELECTOR_KEY, this.dateSelector);
|
|
CalendarConstraints.Builder builder = new CalendarConstraints.Builder(this.calendarConstraints);
|
|
MaterialCalendar<S> materialCalendar = this.calendar;
|
|
Month currentMonth = materialCalendar == null ? null : materialCalendar.getCurrentMonth();
|
|
if (currentMonth != null) {
|
|
builder.setOpenAt(currentMonth.timeInMillis);
|
|
}
|
|
bundle.putParcelable(CALENDAR_CONSTRAINTS_KEY, builder.build());
|
|
bundle.putParcelable(DAY_VIEW_DECORATOR_KEY, this.dayViewDecorator);
|
|
bundle.putInt(TITLE_TEXT_RES_ID_KEY, this.titleTextResId);
|
|
bundle.putCharSequence(TITLE_TEXT_KEY, this.titleText);
|
|
bundle.putInt(INPUT_MODE_KEY, this.inputMode);
|
|
bundle.putInt(POSITIVE_BUTTON_TEXT_RES_ID_KEY, this.positiveButtonTextResId);
|
|
bundle.putCharSequence(POSITIVE_BUTTON_TEXT_KEY, this.positiveButtonText);
|
|
bundle.putInt(POSITIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY, this.positiveButtonContentDescriptionResId);
|
|
bundle.putCharSequence(POSITIVE_BUTTON_CONTENT_DESCRIPTION_KEY, this.positiveButtonContentDescription);
|
|
bundle.putInt(NEGATIVE_BUTTON_TEXT_RES_ID_KEY, this.negativeButtonTextResId);
|
|
bundle.putCharSequence(NEGATIVE_BUTTON_TEXT_KEY, this.negativeButtonText);
|
|
bundle.putInt(NEGATIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY, this.negativeButtonContentDescriptionResId);
|
|
bundle.putCharSequence(NEGATIVE_BUTTON_CONTENT_DESCRIPTION_KEY, this.negativeButtonContentDescription);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.DialogFragment, androidx.fragment.app.Fragment
|
|
public final void onCreate(Bundle bundle) {
|
|
super.onCreate(bundle);
|
|
if (bundle == null) {
|
|
bundle = getArguments();
|
|
}
|
|
this.overrideThemeResId = bundle.getInt(OVERRIDE_THEME_RES_ID);
|
|
this.dateSelector = (DateSelector) bundle.getParcelable(DATE_SELECTOR_KEY);
|
|
this.calendarConstraints = (CalendarConstraints) bundle.getParcelable(CALENDAR_CONSTRAINTS_KEY);
|
|
this.dayViewDecorator = (DayViewDecorator) bundle.getParcelable(DAY_VIEW_DECORATOR_KEY);
|
|
this.titleTextResId = bundle.getInt(TITLE_TEXT_RES_ID_KEY);
|
|
this.titleText = bundle.getCharSequence(TITLE_TEXT_KEY);
|
|
this.inputMode = bundle.getInt(INPUT_MODE_KEY);
|
|
this.positiveButtonTextResId = bundle.getInt(POSITIVE_BUTTON_TEXT_RES_ID_KEY);
|
|
this.positiveButtonText = bundle.getCharSequence(POSITIVE_BUTTON_TEXT_KEY);
|
|
this.positiveButtonContentDescriptionResId = bundle.getInt(POSITIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY);
|
|
this.positiveButtonContentDescription = bundle.getCharSequence(POSITIVE_BUTTON_CONTENT_DESCRIPTION_KEY);
|
|
this.negativeButtonTextResId = bundle.getInt(NEGATIVE_BUTTON_TEXT_RES_ID_KEY);
|
|
this.negativeButtonText = bundle.getCharSequence(NEGATIVE_BUTTON_TEXT_KEY);
|
|
this.negativeButtonContentDescriptionResId = bundle.getInt(NEGATIVE_BUTTON_CONTENT_DESCRIPTION_RES_ID_KEY);
|
|
this.negativeButtonContentDescription = bundle.getCharSequence(NEGATIVE_BUTTON_CONTENT_DESCRIPTION_KEY);
|
|
CharSequence charSequence = this.titleText;
|
|
if (charSequence == null) {
|
|
charSequence = requireContext().getResources().getText(this.titleTextResId);
|
|
}
|
|
this.fullTitleText = charSequence;
|
|
this.singleLineTitleText = getFirstLineBySeparator(charSequence);
|
|
}
|
|
|
|
private int getThemeResId(Context context) {
|
|
int i = this.overrideThemeResId;
|
|
return i != 0 ? i : getDateSelector().getDefaultThemeResId(context);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.DialogFragment
|
|
public final Dialog onCreateDialog(Bundle bundle) {
|
|
Dialog dialog = new Dialog(requireContext(), getThemeResId(requireContext()));
|
|
Context context = dialog.getContext();
|
|
this.fullscreen = isFullscreen(context);
|
|
this.background = new MaterialShapeDrawable(context, null, R.attr.materialCalendarStyle, R.style.Widget_MaterialComponents_MaterialCalendar);
|
|
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(null, R.styleable.MaterialCalendar, R.attr.materialCalendarStyle, R.style.Widget_MaterialComponents_MaterialCalendar);
|
|
int color = obtainStyledAttributes.getColor(R.styleable.MaterialCalendar_backgroundTint, 0);
|
|
obtainStyledAttributes.recycle();
|
|
this.background.initializeElevationOverlay(context);
|
|
this.background.setFillColor(ColorStateList.valueOf(color));
|
|
this.background.setElevation(ViewCompat.getElevation(dialog.getWindow().getDecorView()));
|
|
return dialog;
|
|
}
|
|
|
|
@Override // androidx.fragment.app.Fragment
|
|
public final View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
|
|
View inflate = layoutInflater.inflate(this.fullscreen ? R.layout.mtrl_picker_fullscreen : R.layout.mtrl_picker_dialog, viewGroup);
|
|
Context context = inflate.getContext();
|
|
DayViewDecorator dayViewDecorator = this.dayViewDecorator;
|
|
if (dayViewDecorator != null) {
|
|
dayViewDecorator.initialize(context);
|
|
}
|
|
if (this.fullscreen) {
|
|
inflate.findViewById(R.id.mtrl_calendar_frame).setLayoutParams(new LinearLayout.LayoutParams(getPaddedPickerWidth(context), -2));
|
|
} else {
|
|
inflate.findViewById(R.id.mtrl_calendar_main_pane).setLayoutParams(new LinearLayout.LayoutParams(getPaddedPickerWidth(context), -1));
|
|
}
|
|
TextView textView = (TextView) inflate.findViewById(R.id.mtrl_picker_header_selection_text);
|
|
this.headerSelectionText = textView;
|
|
ViewCompat.setAccessibilityLiveRegion(textView, 1);
|
|
this.headerToggleButton = (CheckableImageButton) inflate.findViewById(R.id.mtrl_picker_header_toggle);
|
|
this.headerTitleTextView = (TextView) inflate.findViewById(R.id.mtrl_picker_title_text);
|
|
initHeaderToggle(context);
|
|
this.confirmButton = (Button) inflate.findViewById(R.id.confirm_button);
|
|
if (getDateSelector().isSelectionComplete()) {
|
|
this.confirmButton.setEnabled(true);
|
|
} else {
|
|
this.confirmButton.setEnabled(false);
|
|
}
|
|
this.confirmButton.setTag(CONFIRM_BUTTON_TAG);
|
|
CharSequence charSequence = this.positiveButtonText;
|
|
if (charSequence != null) {
|
|
this.confirmButton.setText(charSequence);
|
|
} else {
|
|
int i = this.positiveButtonTextResId;
|
|
if (i != 0) {
|
|
this.confirmButton.setText(i);
|
|
}
|
|
}
|
|
CharSequence charSequence2 = this.positiveButtonContentDescription;
|
|
if (charSequence2 != null) {
|
|
this.confirmButton.setContentDescription(charSequence2);
|
|
} else if (this.positiveButtonContentDescriptionResId != 0) {
|
|
this.confirmButton.setContentDescription(getContext().getResources().getText(this.positiveButtonContentDescriptionResId));
|
|
}
|
|
this.confirmButton.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.datepicker.MaterialDatePicker.1
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
@Override // android.view.View.OnClickListener
|
|
public void onClick(View view) {
|
|
Iterator it = MaterialDatePicker.this.onPositiveButtonClickListeners.iterator();
|
|
while (it.hasNext()) {
|
|
((MaterialPickerOnPositiveButtonClickListener) it.next()).onPositiveButtonClick(MaterialDatePicker.this.getSelection());
|
|
}
|
|
MaterialDatePicker.this.dismiss();
|
|
}
|
|
});
|
|
Button button = (Button) inflate.findViewById(R.id.cancel_button);
|
|
button.setTag(CANCEL_BUTTON_TAG);
|
|
CharSequence charSequence3 = this.negativeButtonText;
|
|
if (charSequence3 != null) {
|
|
button.setText(charSequence3);
|
|
} else {
|
|
int i2 = this.negativeButtonTextResId;
|
|
if (i2 != 0) {
|
|
button.setText(i2);
|
|
}
|
|
}
|
|
CharSequence charSequence4 = this.negativeButtonContentDescription;
|
|
if (charSequence4 != null) {
|
|
button.setContentDescription(charSequence4);
|
|
} else if (this.negativeButtonContentDescriptionResId != 0) {
|
|
button.setContentDescription(getContext().getResources().getText(this.negativeButtonContentDescriptionResId));
|
|
}
|
|
button.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.datepicker.MaterialDatePicker.2
|
|
@Override // android.view.View.OnClickListener
|
|
public void onClick(View view) {
|
|
Iterator it = MaterialDatePicker.this.onNegativeButtonClickListeners.iterator();
|
|
while (it.hasNext()) {
|
|
((View.OnClickListener) it.next()).onClick(view);
|
|
}
|
|
MaterialDatePicker.this.dismiss();
|
|
}
|
|
});
|
|
return inflate;
|
|
}
|
|
|
|
@Override // androidx.fragment.app.DialogFragment, androidx.fragment.app.Fragment
|
|
public void onStart() {
|
|
super.onStart();
|
|
Window window = requireDialog().getWindow();
|
|
if (this.fullscreen) {
|
|
window.setLayout(-1, -1);
|
|
window.setBackgroundDrawable(this.background);
|
|
enableEdgeToEdgeIfNeeded(window);
|
|
} else {
|
|
window.setLayout(-2, -2);
|
|
int dimensionPixelOffset = getResources().getDimensionPixelOffset(R.dimen.mtrl_calendar_dialog_background_inset);
|
|
Rect rect = new Rect(dimensionPixelOffset, dimensionPixelOffset, dimensionPixelOffset, dimensionPixelOffset);
|
|
window.setBackgroundDrawable(new InsetDrawable((Drawable) this.background, dimensionPixelOffset, dimensionPixelOffset, dimensionPixelOffset, dimensionPixelOffset));
|
|
window.getDecorView().setOnTouchListener(new InsetDialogOnTouchListener(requireDialog(), rect));
|
|
}
|
|
startPickerFragment();
|
|
}
|
|
|
|
@Override // androidx.fragment.app.DialogFragment, androidx.fragment.app.Fragment
|
|
public void onStop() {
|
|
this.pickerFragment.clearOnSelectionChangedListeners();
|
|
super.onStop();
|
|
}
|
|
|
|
@Override // androidx.fragment.app.DialogFragment, android.content.DialogInterface.OnCancelListener
|
|
public final void onCancel(DialogInterface dialogInterface) {
|
|
Iterator<DialogInterface.OnCancelListener> it = this.onCancelListeners.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().onCancel(dialogInterface);
|
|
}
|
|
super.onCancel(dialogInterface);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.DialogFragment, android.content.DialogInterface.OnDismissListener
|
|
public final void onDismiss(DialogInterface dialogInterface) {
|
|
Iterator<DialogInterface.OnDismissListener> it = this.onDismissListeners.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().onDismiss(dialogInterface);
|
|
}
|
|
ViewGroup viewGroup = (ViewGroup) getView();
|
|
if (viewGroup != null) {
|
|
viewGroup.removeAllViews();
|
|
}
|
|
super.onDismiss(dialogInterface);
|
|
}
|
|
|
|
public final S getSelection() {
|
|
return getDateSelector().getSelection();
|
|
}
|
|
|
|
private void enableEdgeToEdgeIfNeeded(Window window) {
|
|
if (this.edgeToEdgeEnabled) {
|
|
return;
|
|
}
|
|
final View findViewById = requireView().findViewById(R.id.fullscreen_header);
|
|
EdgeToEdgeUtils.applyEdgeToEdge(window, true, ViewUtils.getBackgroundColor(findViewById), null);
|
|
final int paddingTop = findViewById.getPaddingTop();
|
|
final int i = findViewById.getLayoutParams().height;
|
|
ViewCompat.setOnApplyWindowInsetsListener(findViewById, new OnApplyWindowInsetsListener() { // from class: com.google.android.material.datepicker.MaterialDatePicker.3
|
|
@Override // androidx.core.view.OnApplyWindowInsetsListener
|
|
public WindowInsetsCompat onApplyWindowInsets(View view, WindowInsetsCompat windowInsetsCompat) {
|
|
int i2 = windowInsetsCompat.getInsets(WindowInsetsCompat.Type.systemBars()).top;
|
|
if (i >= 0) {
|
|
findViewById.getLayoutParams().height = i + i2;
|
|
View view2 = findViewById;
|
|
view2.setLayoutParams(view2.getLayoutParams());
|
|
}
|
|
View view3 = findViewById;
|
|
view3.setPadding(view3.getPaddingLeft(), paddingTop + i2, findViewById.getPaddingRight(), findViewById.getPaddingBottom());
|
|
return windowInsetsCompat;
|
|
}
|
|
});
|
|
this.edgeToEdgeEnabled = true;
|
|
}
|
|
|
|
private void updateTitle() {
|
|
this.headerTitleTextView.setText((this.inputMode == 1 && isLandscape()) ? this.singleLineTitleText : this.fullTitleText);
|
|
}
|
|
|
|
void updateHeader(String str) {
|
|
this.headerSelectionText.setContentDescription(getHeaderContentDescription());
|
|
this.headerSelectionText.setText(str);
|
|
}
|
|
|
|
private String getHeaderContentDescription() {
|
|
return getDateSelector().getSelectionContentDescription(requireContext());
|
|
}
|
|
|
|
private void startPickerFragment() {
|
|
int themeResId = getThemeResId(requireContext());
|
|
MaterialTextInputPicker newInstance = MaterialCalendar.newInstance(getDateSelector(), themeResId, this.calendarConstraints, this.dayViewDecorator);
|
|
this.calendar = newInstance;
|
|
if (this.inputMode == 1) {
|
|
newInstance = MaterialTextInputPicker.newInstance(getDateSelector(), themeResId, this.calendarConstraints);
|
|
}
|
|
this.pickerFragment = newInstance;
|
|
updateTitle();
|
|
updateHeader(getHeaderText());
|
|
FragmentTransaction beginTransaction = getChildFragmentManager().beginTransaction();
|
|
beginTransaction.replace(R.id.mtrl_calendar_frame, this.pickerFragment);
|
|
beginTransaction.commitNow();
|
|
this.pickerFragment.addOnSelectionChangedListener(new OnSelectionChangedListener<S>() { // from class: com.google.android.material.datepicker.MaterialDatePicker.4
|
|
@Override // com.google.android.material.datepicker.OnSelectionChangedListener
|
|
public void onSelectionChanged(S s) {
|
|
MaterialDatePicker materialDatePicker = MaterialDatePicker.this;
|
|
materialDatePicker.updateHeader(materialDatePicker.getHeaderText());
|
|
MaterialDatePicker.this.confirmButton.setEnabled(MaterialDatePicker.this.getDateSelector().isSelectionComplete());
|
|
}
|
|
|
|
@Override // com.google.android.material.datepicker.OnSelectionChangedListener
|
|
public void onIncompleteSelectionChanged() {
|
|
MaterialDatePicker.this.confirmButton.setEnabled(false);
|
|
}
|
|
});
|
|
}
|
|
|
|
private void initHeaderToggle(Context context) {
|
|
this.headerToggleButton.setTag(TOGGLE_BUTTON_TAG);
|
|
this.headerToggleButton.setImageDrawable(createHeaderToggleDrawable(context));
|
|
this.headerToggleButton.setChecked(this.inputMode != 0);
|
|
ViewCompat.setAccessibilityDelegate(this.headerToggleButton, null);
|
|
updateToggleContentDescription(this.headerToggleButton);
|
|
this.headerToggleButton.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.datepicker.MaterialDatePicker$$ExternalSyntheticLambda0
|
|
@Override // android.view.View.OnClickListener
|
|
public final void onClick(View view) {
|
|
MaterialDatePicker.this.m5532x8a93f18a(view);
|
|
}
|
|
});
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* renamed from: lambda$initHeaderToggle$0$com-google-android-material-datepicker-MaterialDatePicker, reason: not valid java name */
|
|
public /* synthetic */ void m5532x8a93f18a(View view) {
|
|
this.confirmButton.setEnabled(getDateSelector().isSelectionComplete());
|
|
this.headerToggleButton.toggle();
|
|
this.inputMode = this.inputMode == 1 ? 0 : 1;
|
|
updateToggleContentDescription(this.headerToggleButton);
|
|
startPickerFragment();
|
|
}
|
|
|
|
private void updateToggleContentDescription(CheckableImageButton checkableImageButton) {
|
|
String string;
|
|
if (this.inputMode == 1) {
|
|
string = checkableImageButton.getContext().getString(R.string.mtrl_picker_toggle_to_calendar_input_mode);
|
|
} else {
|
|
string = checkableImageButton.getContext().getString(R.string.mtrl_picker_toggle_to_text_input_mode);
|
|
}
|
|
this.headerToggleButton.setContentDescription(string);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public DateSelector<S> getDateSelector() {
|
|
if (this.dateSelector == null) {
|
|
this.dateSelector = (DateSelector) getArguments().getParcelable(DATE_SELECTOR_KEY);
|
|
}
|
|
return this.dateSelector;
|
|
}
|
|
|
|
private static Drawable createHeaderToggleDrawable(Context context) {
|
|
StateListDrawable stateListDrawable = new StateListDrawable();
|
|
stateListDrawable.addState(new int[]{android.R.attr.state_checked}, AppCompatResources.getDrawable(context, R.drawable.material_ic_calendar_black_24dp));
|
|
stateListDrawable.addState(new int[0], AppCompatResources.getDrawable(context, R.drawable.material_ic_edit_black_24dp));
|
|
return stateListDrawable;
|
|
}
|
|
|
|
private static CharSequence getFirstLineBySeparator(CharSequence charSequence) {
|
|
if (charSequence == null) {
|
|
return null;
|
|
}
|
|
String[] split = TextUtils.split(String.valueOf(charSequence), "\n");
|
|
return split.length > 1 ? split[0] : charSequence;
|
|
}
|
|
|
|
private boolean isLandscape() {
|
|
return getResources().getConfiguration().orientation == 2;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public static boolean isFullscreen(Context context) {
|
|
return readMaterialCalendarStyleBoolean(context, android.R.attr.windowFullscreen);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public static boolean isNestedScrollable(Context context) {
|
|
return readMaterialCalendarStyleBoolean(context, R.attr.nestedScrollable);
|
|
}
|
|
|
|
static boolean readMaterialCalendarStyleBoolean(Context context, int i) {
|
|
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(MaterialAttributes.resolveOrThrow(context, R.attr.materialCalendarStyle, MaterialCalendar.class.getCanonicalName()), new int[]{i});
|
|
boolean z = obtainStyledAttributes.getBoolean(0, false);
|
|
obtainStyledAttributes.recycle();
|
|
return z;
|
|
}
|
|
|
|
private static int getPaddedPickerWidth(Context context) {
|
|
Resources resources = context.getResources();
|
|
int dimensionPixelOffset = resources.getDimensionPixelOffset(R.dimen.mtrl_calendar_content_padding);
|
|
int i = Month.current().daysInWeek;
|
|
return (dimensionPixelOffset * 2) + (resources.getDimensionPixelSize(R.dimen.mtrl_calendar_day_width) * i) + ((i - 1) * resources.getDimensionPixelOffset(R.dimen.mtrl_calendar_month_horizontal_padding));
|
|
}
|
|
|
|
public boolean addOnPositiveButtonClickListener(MaterialPickerOnPositiveButtonClickListener<? super S> materialPickerOnPositiveButtonClickListener) {
|
|
return this.onPositiveButtonClickListeners.add(materialPickerOnPositiveButtonClickListener);
|
|
}
|
|
|
|
public boolean removeOnPositiveButtonClickListener(MaterialPickerOnPositiveButtonClickListener<? super S> materialPickerOnPositiveButtonClickListener) {
|
|
return this.onPositiveButtonClickListeners.remove(materialPickerOnPositiveButtonClickListener);
|
|
}
|
|
|
|
public void clearOnPositiveButtonClickListeners() {
|
|
this.onPositiveButtonClickListeners.clear();
|
|
}
|
|
|
|
public boolean addOnNegativeButtonClickListener(View.OnClickListener onClickListener) {
|
|
return this.onNegativeButtonClickListeners.add(onClickListener);
|
|
}
|
|
|
|
public boolean removeOnNegativeButtonClickListener(View.OnClickListener onClickListener) {
|
|
return this.onNegativeButtonClickListeners.remove(onClickListener);
|
|
}
|
|
|
|
public void clearOnNegativeButtonClickListeners() {
|
|
this.onNegativeButtonClickListeners.clear();
|
|
}
|
|
|
|
public boolean addOnCancelListener(DialogInterface.OnCancelListener onCancelListener) {
|
|
return this.onCancelListeners.add(onCancelListener);
|
|
}
|
|
|
|
public boolean removeOnCancelListener(DialogInterface.OnCancelListener onCancelListener) {
|
|
return this.onCancelListeners.remove(onCancelListener);
|
|
}
|
|
|
|
public void clearOnCancelListeners() {
|
|
this.onCancelListeners.clear();
|
|
}
|
|
|
|
public boolean addOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
|
|
return this.onDismissListeners.add(onDismissListener);
|
|
}
|
|
|
|
public boolean removeOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
|
|
return this.onDismissListeners.remove(onDismissListener);
|
|
}
|
|
|
|
public void clearOnDismissListeners() {
|
|
this.onDismissListeners.clear();
|
|
}
|
|
|
|
/* loaded from: classes2.dex */
|
|
public static final class Builder<S> {
|
|
CalendarConstraints calendarConstraints;
|
|
final DateSelector<S> dateSelector;
|
|
DayViewDecorator dayViewDecorator;
|
|
int overrideThemeResId = 0;
|
|
int titleTextResId = 0;
|
|
CharSequence titleText = null;
|
|
int positiveButtonTextResId = 0;
|
|
CharSequence positiveButtonText = null;
|
|
int positiveButtonContentDescriptionResId = 0;
|
|
CharSequence positiveButtonContentDescription = null;
|
|
int negativeButtonTextResId = 0;
|
|
CharSequence negativeButtonText = null;
|
|
int negativeButtonContentDescriptionResId = 0;
|
|
CharSequence negativeButtonContentDescription = null;
|
|
S selection = null;
|
|
int inputMode = 0;
|
|
|
|
public Builder<S> setCalendarConstraints(CalendarConstraints calendarConstraints) {
|
|
this.calendarConstraints = calendarConstraints;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setDayViewDecorator(DayViewDecorator dayViewDecorator) {
|
|
this.dayViewDecorator = dayViewDecorator;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setInputMode(int i) {
|
|
this.inputMode = i;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setNegativeButtonContentDescription(int i) {
|
|
this.negativeButtonContentDescriptionResId = i;
|
|
this.negativeButtonContentDescription = null;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setNegativeButtonContentDescription(CharSequence charSequence) {
|
|
this.negativeButtonContentDescription = charSequence;
|
|
this.negativeButtonContentDescriptionResId = 0;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setNegativeButtonText(int i) {
|
|
this.negativeButtonTextResId = i;
|
|
this.negativeButtonText = null;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setNegativeButtonText(CharSequence charSequence) {
|
|
this.negativeButtonText = charSequence;
|
|
this.negativeButtonTextResId = 0;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setPositiveButtonContentDescription(int i) {
|
|
this.positiveButtonContentDescriptionResId = i;
|
|
this.positiveButtonContentDescription = null;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setPositiveButtonContentDescription(CharSequence charSequence) {
|
|
this.positiveButtonContentDescription = charSequence;
|
|
this.positiveButtonContentDescriptionResId = 0;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setPositiveButtonText(int i) {
|
|
this.positiveButtonTextResId = i;
|
|
this.positiveButtonText = null;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setPositiveButtonText(CharSequence charSequence) {
|
|
this.positiveButtonText = charSequence;
|
|
this.positiveButtonTextResId = 0;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setSelection(S s) {
|
|
this.selection = s;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setTheme(int i) {
|
|
this.overrideThemeResId = i;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setTitleText(int i) {
|
|
this.titleTextResId = i;
|
|
this.titleText = null;
|
|
return this;
|
|
}
|
|
|
|
public Builder<S> setTitleText(CharSequence charSequence) {
|
|
this.titleText = charSequence;
|
|
this.titleTextResId = 0;
|
|
return this;
|
|
}
|
|
|
|
private Builder(DateSelector<S> dateSelector) {
|
|
this.dateSelector = dateSelector;
|
|
}
|
|
|
|
public static <S> Builder<S> customDatePicker(DateSelector<S> dateSelector) {
|
|
return new Builder<>(dateSelector);
|
|
}
|
|
|
|
public static Builder<Long> datePicker() {
|
|
return new Builder<>(new SingleDateSelector());
|
|
}
|
|
|
|
public static Builder<Pair<Long, Long>> dateRangePicker() {
|
|
return new Builder<>(new RangeDateSelector());
|
|
}
|
|
|
|
public Builder<S> setTextInputFormat(SimpleDateFormat simpleDateFormat) {
|
|
this.dateSelector.setTextInputFormat(simpleDateFormat);
|
|
return this;
|
|
}
|
|
|
|
public MaterialDatePicker<S> build() {
|
|
if (this.calendarConstraints == null) {
|
|
this.calendarConstraints = new CalendarConstraints.Builder().build();
|
|
}
|
|
if (this.titleTextResId == 0) {
|
|
this.titleTextResId = this.dateSelector.getDefaultTitleResId();
|
|
}
|
|
S s = this.selection;
|
|
if (s != null) {
|
|
this.dateSelector.setSelection(s);
|
|
}
|
|
if (this.calendarConstraints.getOpenAt() == null) {
|
|
this.calendarConstraints.setOpenAt(createDefaultOpenAt());
|
|
}
|
|
return MaterialDatePicker.newInstance(this);
|
|
}
|
|
|
|
private Month createDefaultOpenAt() {
|
|
if (!this.dateSelector.getSelectedDays().isEmpty()) {
|
|
Month create = Month.create(this.dateSelector.getSelectedDays().iterator().next().longValue());
|
|
if (monthInValidRange(create, this.calendarConstraints)) {
|
|
return create;
|
|
}
|
|
}
|
|
Month current = Month.current();
|
|
return monthInValidRange(current, this.calendarConstraints) ? current : this.calendarConstraints.getStart();
|
|
}
|
|
|
|
private static boolean monthInValidRange(Month month, CalendarConstraints calendarConstraints) {
|
|
return month.compareTo(calendarConstraints.getStart()) >= 0 && month.compareTo(calendarConstraints.getEnd()) <= 0;
|
|
}
|
|
}
|
|
}
|