Rabbit-R1/android (non root)/java/sources/com/google/android/material/timepicker/MaterialTimePicker.java
2024-05-21 17:08:36 -04:00

508 lines
22 KiB
Java

package com.google.android.material.timepicker;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Pair;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.DialogFragment;
import com.google.android.material.R;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.resources.MaterialAttributes;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.timepicker.TimePickerView;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
/* loaded from: classes2.dex */
public final class MaterialTimePicker extends DialogFragment implements TimePickerView.OnDoubleTapListener {
public static final int INPUT_MODE_CLOCK = 0;
static final String INPUT_MODE_EXTRA = "TIME_PICKER_INPUT_MODE";
public static final int INPUT_MODE_KEYBOARD = 1;
static final String NEGATIVE_BUTTON_TEXT_EXTRA = "TIME_PICKER_NEGATIVE_BUTTON_TEXT";
static final String NEGATIVE_BUTTON_TEXT_RES_EXTRA = "TIME_PICKER_NEGATIVE_BUTTON_TEXT_RES";
static final String OVERRIDE_THEME_RES_ID = "TIME_PICKER_OVERRIDE_THEME_RES_ID";
static final String POSITIVE_BUTTON_TEXT_EXTRA = "TIME_PICKER_POSITIVE_BUTTON_TEXT";
static final String POSITIVE_BUTTON_TEXT_RES_EXTRA = "TIME_PICKER_POSITIVE_BUTTON_TEXT_RES";
static final String TIME_MODEL_EXTRA = "TIME_PICKER_TIME_MODEL";
static final String TITLE_RES_EXTRA = "TIME_PICKER_TITLE_RES";
static final String TITLE_TEXT_EXTRA = "TIME_PICKER_TITLE_TEXT";
private TimePickerPresenter activePresenter;
private Button cancelButton;
private int clockIcon;
private int keyboardIcon;
private MaterialButton modeButton;
private CharSequence negativeButtonText;
private CharSequence positiveButtonText;
private ViewStub textInputStub;
private TimeModel time;
private TimePickerClockPresenter timePickerClockPresenter;
private TimePickerTextInputPresenter timePickerTextInputPresenter;
private TimePickerView timePickerView;
private CharSequence titleText;
private final Set<View.OnClickListener> positiveButtonListeners = new LinkedHashSet();
private final Set<View.OnClickListener> negativeButtonListeners = new LinkedHashSet();
private final Set<DialogInterface.OnCancelListener> cancelListeners = new LinkedHashSet();
private final Set<DialogInterface.OnDismissListener> dismissListeners = new LinkedHashSet();
private int titleResId = 0;
private int positiveButtonTextResId = 0;
private int negativeButtonTextResId = 0;
private int inputMode = 0;
private int overrideThemeResId = 0;
public int getInputMode() {
return this.inputMode;
}
TimePickerClockPresenter getTimePickerClockPresenter() {
return this.timePickerClockPresenter;
}
void setActivePresenter(TimePickerPresenter timePickerPresenter) {
this.activePresenter = timePickerPresenter;
}
/* JADX INFO: Access modifiers changed from: private */
public static MaterialTimePicker newInstance(Builder builder) {
MaterialTimePicker materialTimePicker = new MaterialTimePicker();
Bundle bundle = new Bundle();
bundle.putParcelable(TIME_MODEL_EXTRA, builder.time);
if (builder.inputMode != null) {
bundle.putInt(INPUT_MODE_EXTRA, builder.inputMode.intValue());
}
bundle.putInt(TITLE_RES_EXTRA, builder.titleTextResId);
if (builder.titleText != null) {
bundle.putCharSequence(TITLE_TEXT_EXTRA, builder.titleText);
}
bundle.putInt(POSITIVE_BUTTON_TEXT_RES_EXTRA, builder.positiveButtonTextResId);
if (builder.positiveButtonText != null) {
bundle.putCharSequence(POSITIVE_BUTTON_TEXT_EXTRA, builder.positiveButtonText);
}
bundle.putInt(NEGATIVE_BUTTON_TEXT_RES_EXTRA, builder.negativeButtonTextResId);
if (builder.negativeButtonText != null) {
bundle.putCharSequence(NEGATIVE_BUTTON_TEXT_EXTRA, builder.negativeButtonText);
}
bundle.putInt(OVERRIDE_THEME_RES_ID, builder.overrideThemeResId);
materialTimePicker.setArguments(bundle);
return materialTimePicker;
}
public int getMinute() {
return this.time.minute;
}
public void setMinute(int i) {
this.time.setMinute(i);
TimePickerPresenter timePickerPresenter = this.activePresenter;
if (timePickerPresenter != null) {
timePickerPresenter.invalidate();
}
}
public int getHour() {
return this.time.hour % 24;
}
public void setHour(int i) {
this.time.setHour(i);
TimePickerPresenter timePickerPresenter = this.activePresenter;
if (timePickerPresenter != null) {
timePickerPresenter.invalidate();
}
}
@Override // androidx.fragment.app.DialogFragment
public final Dialog onCreateDialog(Bundle bundle) {
Dialog dialog = new Dialog(requireContext(), getThemeResId());
Context context = dialog.getContext();
MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable(context, null, R.attr.materialTimePickerStyle, R.style.Widget_MaterialComponents_TimePicker);
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(null, R.styleable.MaterialTimePicker, R.attr.materialTimePickerStyle, R.style.Widget_MaterialComponents_TimePicker);
this.clockIcon = obtainStyledAttributes.getResourceId(R.styleable.MaterialTimePicker_clockIcon, 0);
this.keyboardIcon = obtainStyledAttributes.getResourceId(R.styleable.MaterialTimePicker_keyboardIcon, 0);
int color = obtainStyledAttributes.getColor(R.styleable.MaterialTimePicker_backgroundTint, 0);
obtainStyledAttributes.recycle();
materialShapeDrawable.initializeElevationOverlay(context);
materialShapeDrawable.setFillColor(ColorStateList.valueOf(color));
Window window = dialog.getWindow();
window.setBackgroundDrawable(materialShapeDrawable);
window.requestFeature(1);
window.setLayout(-2, -2);
materialShapeDrawable.setElevation(ViewCompat.getElevation(window.getDecorView()));
return dialog;
}
@Override // androidx.fragment.app.DialogFragment, androidx.fragment.app.Fragment
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
if (bundle == null) {
bundle = getArguments();
}
restoreState(bundle);
}
@Override // androidx.fragment.app.DialogFragment, androidx.fragment.app.Fragment
public void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
bundle.putParcelable(TIME_MODEL_EXTRA, this.time);
bundle.putInt(INPUT_MODE_EXTRA, this.inputMode);
bundle.putInt(TITLE_RES_EXTRA, this.titleResId);
bundle.putCharSequence(TITLE_TEXT_EXTRA, this.titleText);
bundle.putInt(POSITIVE_BUTTON_TEXT_RES_EXTRA, this.positiveButtonTextResId);
bundle.putCharSequence(POSITIVE_BUTTON_TEXT_EXTRA, this.positiveButtonText);
bundle.putInt(NEGATIVE_BUTTON_TEXT_RES_EXTRA, this.negativeButtonTextResId);
bundle.putCharSequence(NEGATIVE_BUTTON_TEXT_EXTRA, this.negativeButtonText);
bundle.putInt(OVERRIDE_THEME_RES_ID, this.overrideThemeResId);
}
private void restoreState(Bundle bundle) {
if (bundle == null) {
return;
}
TimeModel timeModel = (TimeModel) bundle.getParcelable(TIME_MODEL_EXTRA);
this.time = timeModel;
if (timeModel == null) {
this.time = new TimeModel();
}
this.inputMode = bundle.getInt(INPUT_MODE_EXTRA, this.time.format != 1 ? 0 : 1);
this.titleResId = bundle.getInt(TITLE_RES_EXTRA, 0);
this.titleText = bundle.getCharSequence(TITLE_TEXT_EXTRA);
this.positiveButtonTextResId = bundle.getInt(POSITIVE_BUTTON_TEXT_RES_EXTRA, 0);
this.positiveButtonText = bundle.getCharSequence(POSITIVE_BUTTON_TEXT_EXTRA);
this.negativeButtonTextResId = bundle.getInt(NEGATIVE_BUTTON_TEXT_RES_EXTRA, 0);
this.negativeButtonText = bundle.getCharSequence(NEGATIVE_BUTTON_TEXT_EXTRA);
this.overrideThemeResId = bundle.getInt(OVERRIDE_THEME_RES_ID, 0);
}
@Override // androidx.fragment.app.Fragment
public final View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
ViewGroup viewGroup2 = (ViewGroup) layoutInflater.inflate(R.layout.material_timepicker_dialog, viewGroup);
TimePickerView timePickerView = (TimePickerView) viewGroup2.findViewById(R.id.material_timepicker_view);
this.timePickerView = timePickerView;
timePickerView.setOnDoubleTapListener(this);
this.textInputStub = (ViewStub) viewGroup2.findViewById(R.id.material_textinput_timepicker);
this.modeButton = (MaterialButton) viewGroup2.findViewById(R.id.material_timepicker_mode_button);
TextView textView = (TextView) viewGroup2.findViewById(R.id.header_title);
int i = this.titleResId;
if (i != 0) {
textView.setText(i);
} else if (!TextUtils.isEmpty(this.titleText)) {
textView.setText(this.titleText);
}
updateInputMode(this.modeButton);
Button button = (Button) viewGroup2.findViewById(R.id.material_timepicker_ok_button);
button.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.timepicker.MaterialTimePicker.1
@Override // android.view.View.OnClickListener
public void onClick(View view) {
Iterator it = MaterialTimePicker.this.positiveButtonListeners.iterator();
while (it.hasNext()) {
((View.OnClickListener) it.next()).onClick(view);
}
MaterialTimePicker.this.dismiss();
}
});
int i2 = this.positiveButtonTextResId;
if (i2 != 0) {
button.setText(i2);
} else if (!TextUtils.isEmpty(this.positiveButtonText)) {
button.setText(this.positiveButtonText);
}
Button button2 = (Button) viewGroup2.findViewById(R.id.material_timepicker_cancel_button);
this.cancelButton = button2;
button2.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.timepicker.MaterialTimePicker.2
@Override // android.view.View.OnClickListener
public void onClick(View view) {
Iterator it = MaterialTimePicker.this.negativeButtonListeners.iterator();
while (it.hasNext()) {
((View.OnClickListener) it.next()).onClick(view);
}
MaterialTimePicker.this.dismiss();
}
});
int i3 = this.negativeButtonTextResId;
if (i3 != 0) {
this.cancelButton.setText(i3);
} else if (!TextUtils.isEmpty(this.negativeButtonText)) {
this.cancelButton.setText(this.negativeButtonText);
}
updateCancelButtonVisibility();
this.modeButton.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.timepicker.MaterialTimePicker.3
@Override // android.view.View.OnClickListener
public void onClick(View view) {
MaterialTimePicker materialTimePicker = MaterialTimePicker.this;
materialTimePicker.inputMode = materialTimePicker.inputMode == 0 ? 1 : 0;
MaterialTimePicker materialTimePicker2 = MaterialTimePicker.this;
materialTimePicker2.updateInputMode(materialTimePicker2.modeButton);
}
});
return viewGroup2;
}
@Override // androidx.fragment.app.Fragment
public void onViewCreated(View view, Bundle bundle) {
super.onViewCreated(view, bundle);
if (this.activePresenter instanceof TimePickerTextInputPresenter) {
view.postDelayed(new Runnable() { // from class: com.google.android.material.timepicker.MaterialTimePicker$$ExternalSyntheticLambda0
@Override // java.lang.Runnable
public final void run() {
MaterialTimePicker.this.m5571xac73da03();
}
}, 100L);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: lambda$onViewCreated$0$com-google-android-material-timepicker-MaterialTimePicker, reason: not valid java name */
public /* synthetic */ void m5571xac73da03() {
TimePickerPresenter timePickerPresenter = this.activePresenter;
if (timePickerPresenter instanceof TimePickerTextInputPresenter) {
((TimePickerTextInputPresenter) timePickerPresenter).resetChecked();
}
}
@Override // androidx.fragment.app.DialogFragment, androidx.fragment.app.Fragment
public void onDestroyView() {
super.onDestroyView();
this.activePresenter = null;
this.timePickerClockPresenter = null;
this.timePickerTextInputPresenter = null;
TimePickerView timePickerView = this.timePickerView;
if (timePickerView != null) {
timePickerView.setOnDoubleTapListener(null);
this.timePickerView = null;
}
}
@Override // androidx.fragment.app.DialogFragment, android.content.DialogInterface.OnCancelListener
public final void onCancel(DialogInterface dialogInterface) {
Iterator<DialogInterface.OnCancelListener> it = this.cancelListeners.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.dismissListeners.iterator();
while (it.hasNext()) {
it.next().onDismiss(dialogInterface);
}
super.onDismiss(dialogInterface);
}
@Override // androidx.fragment.app.DialogFragment
public void setCancelable(boolean z) {
super.setCancelable(z);
updateCancelButtonVisibility();
}
@Override // com.google.android.material.timepicker.TimePickerView.OnDoubleTapListener
public void onDoubleTap() {
this.inputMode = 1;
updateInputMode(this.modeButton);
this.timePickerTextInputPresenter.resetChecked();
}
/* JADX INFO: Access modifiers changed from: private */
public void updateInputMode(MaterialButton materialButton) {
if (materialButton == null || this.timePickerView == null || this.textInputStub == null) {
return;
}
TimePickerPresenter timePickerPresenter = this.activePresenter;
if (timePickerPresenter != null) {
timePickerPresenter.hide();
}
TimePickerPresenter initializeOrRetrieveActivePresenterForMode = initializeOrRetrieveActivePresenterForMode(this.inputMode, this.timePickerView, this.textInputStub);
this.activePresenter = initializeOrRetrieveActivePresenterForMode;
initializeOrRetrieveActivePresenterForMode.show();
this.activePresenter.invalidate();
Pair<Integer, Integer> dataForMode = dataForMode(this.inputMode);
materialButton.setIconResource(((Integer) dataForMode.first).intValue());
materialButton.setContentDescription(getResources().getString(((Integer) dataForMode.second).intValue()));
materialButton.sendAccessibilityEvent(4);
}
private void updateCancelButtonVisibility() {
Button button = this.cancelButton;
if (button != null) {
button.setVisibility(isCancelable() ? 0 : 8);
}
}
private TimePickerPresenter initializeOrRetrieveActivePresenterForMode(int i, TimePickerView timePickerView, ViewStub viewStub) {
if (i != 0) {
if (this.timePickerTextInputPresenter == null) {
this.timePickerTextInputPresenter = new TimePickerTextInputPresenter((LinearLayout) viewStub.inflate(), this.time);
}
this.timePickerTextInputPresenter.clearCheck();
return this.timePickerTextInputPresenter;
}
TimePickerClockPresenter timePickerClockPresenter = this.timePickerClockPresenter;
if (timePickerClockPresenter == null) {
timePickerClockPresenter = new TimePickerClockPresenter(timePickerView, this.time);
}
this.timePickerClockPresenter = timePickerClockPresenter;
return timePickerClockPresenter;
}
private Pair<Integer, Integer> dataForMode(int i) {
if (i == 0) {
return new Pair<>(Integer.valueOf(this.keyboardIcon), Integer.valueOf(R.string.material_timepicker_text_input_mode_description));
}
if (i == 1) {
return new Pair<>(Integer.valueOf(this.clockIcon), Integer.valueOf(R.string.material_timepicker_clock_mode_description));
}
throw new IllegalArgumentException("no icon for mode: " + i);
}
public boolean addOnPositiveButtonClickListener(View.OnClickListener onClickListener) {
return this.positiveButtonListeners.add(onClickListener);
}
public boolean removeOnPositiveButtonClickListener(View.OnClickListener onClickListener) {
return this.positiveButtonListeners.remove(onClickListener);
}
public void clearOnPositiveButtonClickListeners() {
this.positiveButtonListeners.clear();
}
public boolean addOnNegativeButtonClickListener(View.OnClickListener onClickListener) {
return this.negativeButtonListeners.add(onClickListener);
}
public boolean removeOnNegativeButtonClickListener(View.OnClickListener onClickListener) {
return this.negativeButtonListeners.remove(onClickListener);
}
public void clearOnNegativeButtonClickListeners() {
this.negativeButtonListeners.clear();
}
public boolean addOnCancelListener(DialogInterface.OnCancelListener onCancelListener) {
return this.cancelListeners.add(onCancelListener);
}
public boolean removeOnCancelListener(DialogInterface.OnCancelListener onCancelListener) {
return this.cancelListeners.remove(onCancelListener);
}
public void clearOnCancelListeners() {
this.cancelListeners.clear();
}
public boolean addOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
return this.dismissListeners.add(onDismissListener);
}
public boolean removeOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
return this.dismissListeners.remove(onDismissListener);
}
public void clearOnDismissListeners() {
this.dismissListeners.clear();
}
private int getThemeResId() {
int i = this.overrideThemeResId;
if (i != 0) {
return i;
}
TypedValue resolve = MaterialAttributes.resolve(requireContext(), R.attr.materialTimePickerTheme);
if (resolve == null) {
return 0;
}
return resolve.data;
}
/* loaded from: classes2.dex */
public static final class Builder {
private Integer inputMode;
private CharSequence negativeButtonText;
private CharSequence positiveButtonText;
private CharSequence titleText;
private TimeModel time = new TimeModel();
private int titleTextResId = 0;
private int positiveButtonTextResId = 0;
private int negativeButtonTextResId = 0;
private int overrideThemeResId = 0;
public Builder setNegativeButtonText(int i) {
this.negativeButtonTextResId = i;
return this;
}
public Builder setNegativeButtonText(CharSequence charSequence) {
this.negativeButtonText = charSequence;
return this;
}
public Builder setPositiveButtonText(int i) {
this.positiveButtonTextResId = i;
return this;
}
public Builder setPositiveButtonText(CharSequence charSequence) {
this.positiveButtonText = charSequence;
return this;
}
public Builder setTheme(int i) {
this.overrideThemeResId = i;
return this;
}
public Builder setTitleText(int i) {
this.titleTextResId = i;
return this;
}
public Builder setTitleText(CharSequence charSequence) {
this.titleText = charSequence;
return this;
}
public Builder setInputMode(int i) {
this.inputMode = Integer.valueOf(i);
return this;
}
public Builder setHour(int i) {
this.time.setHourOfDay(i);
return this;
}
public Builder setMinute(int i) {
this.time.setMinute(i);
return this;
}
public Builder setTimeFormat(int i) {
int i2 = this.time.hour;
int i3 = this.time.minute;
TimeModel timeModel = new TimeModel(i);
this.time = timeModel;
timeModel.setMinute(i3);
this.time.setHourOfDay(i2);
return this;
}
public MaterialTimePicker build() {
return MaterialTimePicker.newInstance(this);
}
}
}