alexandroid/decompiled/jadx/sources/com/reactcommunity/rndatetimepicker/MinuteIntervalSnappableTimePickerDialog.java
KaKi87 a47fad5135 📦 Add decompiled Alexa 2.2.730155.0 (jadx, apktool, Hermes strings)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:04:16 +01:00

207 lines
8.4 KiB
Java

package com.reactcommunity.rndatetimepicker;
import android.annotation.SuppressLint;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.TimePicker;
import com.google.android.material.timepicker.TimeModel;
import java.util.ArrayList;
import rx.Single$$ExternalSyntheticBUOutline0;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
/* loaded from: classes9.dex */
class MinuteIntervalSnappableTimePickerDialog extends TimePickerDialog {
private Handler handler;
private Context mContext;
private RNTimePickerDisplay mDisplay;
private TimePicker mTimePicker;
private int mTimePickerInterval;
private final TimePickerDialog.OnTimeSetListener mTimeSetListener;
private Runnable runnable;
public MinuteIntervalSnappableTimePickerDialog(Context context, int i, TimePickerDialog.OnTimeSetListener onTimeSetListener, int i2, int i3, int i4, boolean z, RNTimePickerDisplay rNTimePickerDisplay) {
super(context, i, onTimeSetListener, i2, i3, z);
this.handler = new Handler();
this.mTimePickerInterval = i4;
this.mTimeSetListener = onTimeSetListener;
this.mDisplay = rNTimePickerDisplay;
this.mContext = context;
}
private void assertNotSpinner(String str) {
if (isSpinner()) {
Single$$ExternalSyntheticBUOutline0.m(str);
}
}
private void correctEnteredMinutes(final TimePicker timePicker, final int i, final int i2) {
assertNotSpinner("spinner never needs to be corrected because wrong values are not offered to user (both in scrolling and textInput mode)!");
Runnable runnable = new Runnable() { // from class: com.reactcommunity.rndatetimepicker.MinuteIntervalSnappableTimePickerDialog.1
private void fixTime() {
timePicker.setHour(i);
timePicker.setMinute(i2);
}
private void moveCursorToEnd() {
View findFocus = timePicker.findFocus();
if (!(findFocus instanceof EditText)) {
Log.e("RN-datetimepicker", "could not set selection on time picker, this is a known issue on some Huawei devices");
} else {
EditText editText = (EditText) findFocus;
editText.setSelection(editText.getText().length());
}
}
@Override // java.lang.Runnable
public void run() {
if (!MinuteIntervalSnappableTimePickerDialog.this.pickerIsInTextInputMode()) {
fixTime();
} else if (i2 > 5) {
fixTime();
moveCursorToEnd();
}
}
};
this.runnable = runnable;
this.handler.postDelayed(runnable, 500L);
}
private int getRealMinutes() {
return getRealMinutes(this.mTimePicker.getCurrentMinute().intValue());
}
private boolean isSpinner() {
return this.mDisplay == RNTimePickerDisplay.SPINNER;
}
public static boolean isValidMinuteInterval(int i) {
return i >= 1 && i <= 30 && 60 % i == 0;
}
private boolean minutesNeedCorrection(int i) {
assertNotSpinner("minutesNeedCorrection is not intended to be used with spinner, spinner won't allow picking invalid values");
return timePickerHasCustomMinuteInterval() && i != snapRealMinutesToInterval(i);
}
/* JADX INFO: Access modifiers changed from: private */
public boolean pickerIsInTextInputMode() {
View findViewById = findViewById(this.mContext.getResources().getIdentifier("input_mode", "id", "android"));
return findViewById != null && findViewById.hasFocus();
}
@SuppressLint({"DefaultLocale"})
private void setSpinnerDisplayedValues() {
NumberPicker numberPicker = (NumberPicker) findViewById(this.mContext.getResources().getIdentifier("minute", "id", "android"));
numberPicker.setMinValue(0);
numberPicker.setMaxValue((60 / this.mTimePickerInterval) - 1);
ArrayList arrayList = new ArrayList(60 / this.mTimePickerInterval);
int i = 0;
while (i < 60) {
arrayList.add(String.format(TimeModel.ZERO_LEADING_NUMBER_FORMAT, Integer.valueOf(i)));
i += this.mTimePickerInterval;
}
numberPicker.setDisplayedValues((String[]) arrayList.toArray(new String[0]));
}
private void setupPickerDialog() {
TimePicker timePicker = this.mTimePicker;
if (timePicker == null) {
Log.e("RN-datetimepicker", "time picker was null");
return;
}
int intValue = timePicker.getCurrentMinute().intValue();
if (!isSpinner()) {
this.mTimePicker.setCurrentMinute(Integer.valueOf(snapRealMinutesToInterval(intValue)));
} else {
setSpinnerDisplayedValues();
this.mTimePicker.setCurrentMinute(Integer.valueOf(snapRealMinutesToInterval(intValue) / this.mTimePickerInterval));
}
}
private int snapRealMinutesToInterval(int i) {
int round = Math.round(i / this.mTimePickerInterval);
int i2 = this.mTimePickerInterval;
int i3 = round * i2;
return i3 == 60 ? i3 - i2 : i3;
}
private boolean timePickerHasCustomMinuteInterval() {
return this.mTimePickerInterval != 1;
}
@Override // android.app.Dialog, android.view.Window.Callback
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.mTimePicker = (TimePicker) findViewById(this.mContext.getResources().getIdentifier("timePicker", "id", "android"));
if (timePickerHasCustomMinuteInterval()) {
setupPickerDialog();
}
}
@Override // android.app.TimePickerDialog, android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialogInterface, int i) {
boolean z = timePickerHasCustomMinuteInterval() || isSpinner();
TimePicker timePicker = this.mTimePicker;
if (timePicker == null || i != -1 || !z) {
super.onClick(dialogInterface, i);
return;
}
timePicker.clearFocus();
int intValue = this.mTimePicker.getCurrentHour().intValue();
int realMinutes = getRealMinutes();
if (timePickerHasCustomMinuteInterval()) {
realMinutes = snapRealMinutesToInterval(realMinutes);
}
TimePickerDialog.OnTimeSetListener onTimeSetListener = this.mTimeSetListener;
if (onTimeSetListener != null) {
onTimeSetListener.onTimeSet(this.mTimePicker, intValue, realMinutes);
}
}
@Override // android.app.Dialog, android.view.Window.Callback
public void onDetachedFromWindow() {
this.handler.removeCallbacks(this.runnable);
super.onDetachedFromWindow();
}
@Override // android.app.TimePickerDialog, android.widget.TimePicker.OnTimeChangedListener
public void onTimeChanged(TimePicker timePicker, int i, int i2) {
int realMinutes = getRealMinutes(i2);
this.handler.removeCallbacks(this.runnable);
if (isSpinner() || !minutesNeedCorrection(realMinutes)) {
super.onTimeChanged(timePicker, i, i2);
} else {
correctEnteredMinutes(timePicker, i, snapRealMinutesToInterval(realMinutes));
}
}
@Override // android.app.TimePickerDialog
public void updateTime(int i, int i2) {
if (!timePickerHasCustomMinuteInterval()) {
super.updateTime(i, i2);
} else if (isSpinner()) {
super.updateTime(i, snapRealMinutesToInterval(getRealMinutes()) / this.mTimePickerInterval);
} else {
super.updateTime(i, snapRealMinutesToInterval(i2));
}
}
private int getRealMinutes(int i) {
return isSpinner() ? i * this.mTimePickerInterval : i;
}
public MinuteIntervalSnappableTimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener onTimeSetListener, int i, int i2, int i3, boolean z, RNTimePickerDisplay rNTimePickerDisplay) {
super(context, onTimeSetListener, i, i2, z);
this.handler = new Handler();
this.mTimePickerInterval = i3;
this.mTimeSetListener = onTimeSetListener;
this.mDisplay = rNTimePickerDisplay;
this.mContext = context;
}
}