Rabbit-R1/android (non root)/java/sources/com/google/android/material/timepicker/TimePickerClockPresenter.java

187 lines
8.4 KiB
Java
Raw Normal View History

2024-05-21 16:08:36 -05:00
package com.google.android.material.timepicker;
import android.view.View;
import android.view.accessibility.AccessibilityManager;
import androidx.core.content.ContextCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.exifinterface.media.ExifInterface;
import com.google.android.material.R;
import com.google.android.material.timepicker.ClockHandView;
import com.google.android.material.timepicker.TimePickerView;
/* loaded from: classes2.dex */
class TimePickerClockPresenter implements ClockHandView.OnRotateListener, TimePickerView.OnSelectionChange, TimePickerView.OnPeriodChangeListener, ClockHandView.OnActionUpListener, TimePickerPresenter {
private static final int DEGREES_PER_HOUR = 30;
private static final int DEGREES_PER_MINUTE = 6;
private boolean broadcasting = false;
private float hourRotation;
private float minuteRotation;
private final TimeModel time;
private final TimePickerView timePickerView;
private static final String[] HOUR_CLOCK_VALUES = {"12", "1", ExifInterface.GPS_MEASUREMENT_2D, ExifInterface.GPS_MEASUREMENT_3D, "4", "5", "6", "7", "8", "9", "10", "11"};
private static final String[] HOUR_CLOCK_24_VALUES = {"00", "1", ExifInterface.GPS_MEASUREMENT_2D, ExifInterface.GPS_MEASUREMENT_3D, "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"};
private static final String[] MINUTE_CLOCK_VALUES = {"00", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55"};
public TimePickerClockPresenter(TimePickerView timePickerView, TimeModel timeModel) {
this.timePickerView = timePickerView;
this.time = timeModel;
initialize();
}
@Override // com.google.android.material.timepicker.TimePickerPresenter
public void initialize() {
if (this.time.format == 0) {
this.timePickerView.showToggle();
}
this.timePickerView.addOnRotateListener(this);
this.timePickerView.setOnSelectionChangeListener(this);
this.timePickerView.setOnPeriodChangeListener(this);
this.timePickerView.setOnActionUpListener(this);
updateValues();
invalidate();
}
@Override // com.google.android.material.timepicker.TimePickerPresenter
public void invalidate() {
this.hourRotation = getHourRotation();
this.minuteRotation = this.time.minute * 6;
setSelection(this.time.selection, false);
updateTime();
}
@Override // com.google.android.material.timepicker.TimePickerPresenter
public void show() {
this.timePickerView.setVisibility(0);
}
@Override // com.google.android.material.timepicker.TimePickerPresenter
public void hide() {
this.timePickerView.setVisibility(8);
}
private String[] getHourClockValues() {
return this.time.format == 1 ? HOUR_CLOCK_24_VALUES : HOUR_CLOCK_VALUES;
}
@Override // com.google.android.material.timepicker.ClockHandView.OnRotateListener
public void onRotate(float f, boolean z) {
if (this.broadcasting) {
return;
}
int i = this.time.hour;
int i2 = this.time.minute;
int round = Math.round(f);
if (this.time.selection == 12) {
this.time.setMinute((round + 3) / 6);
this.minuteRotation = (float) Math.floor(this.time.minute * 6);
} else {
int i3 = (round + 15) / 30;
if (this.time.format == 1) {
i3 %= 12;
if (this.timePickerView.getCurrentLevel() == 2) {
i3 += 12;
}
}
this.time.setHour(i3);
this.hourRotation = getHourRotation();
}
if (z) {
return;
}
updateTime();
performHapticFeedback(i, i2);
}
private void performHapticFeedback(int i, int i2) {
if (this.time.minute == i2 && this.time.hour == i) {
return;
}
this.timePickerView.performHapticFeedback(4);
}
@Override // com.google.android.material.timepicker.TimePickerView.OnSelectionChange
public void onSelectionChanged(int i) {
setSelection(i, true);
}
@Override // com.google.android.material.timepicker.TimePickerView.OnPeriodChangeListener
public void onPeriodChange(int i) {
this.time.setPeriod(i);
}
void setSelection(int i, boolean z) {
boolean z2 = i == 12;
this.timePickerView.setAnimateOnTouchUp(z2);
this.time.selection = i;
this.timePickerView.setValues(z2 ? MINUTE_CLOCK_VALUES : getHourClockValues(), z2 ? R.string.material_minute_suffix : this.time.getHourContentDescriptionResId());
updateCurrentLevel();
this.timePickerView.setHandRotation(z2 ? this.minuteRotation : this.hourRotation, z);
this.timePickerView.setActiveSelection(i);
this.timePickerView.setMinuteHourDelegate(new ClickActionDelegate(this.timePickerView.getContext(), R.string.material_hour_selection) { // from class: com.google.android.material.timepicker.TimePickerClockPresenter.1
@Override // com.google.android.material.timepicker.ClickActionDelegate, androidx.core.view.AccessibilityDelegateCompat
public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
accessibilityNodeInfoCompat.setContentDescription(view.getResources().getString(TimePickerClockPresenter.this.time.getHourContentDescriptionResId(), String.valueOf(TimePickerClockPresenter.this.time.getHourForDisplay())));
}
});
this.timePickerView.setHourClickDelegate(new ClickActionDelegate(this.timePickerView.getContext(), R.string.material_minute_selection) { // from class: com.google.android.material.timepicker.TimePickerClockPresenter.2
@Override // com.google.android.material.timepicker.ClickActionDelegate, androidx.core.view.AccessibilityDelegateCompat
public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
accessibilityNodeInfoCompat.setContentDescription(view.getResources().getString(R.string.material_minute_suffix, String.valueOf(TimePickerClockPresenter.this.time.minute)));
}
});
}
private void updateCurrentLevel() {
int i = 1;
if (this.time.selection == 10 && this.time.format == 1 && this.time.hour >= 12) {
i = 2;
}
this.timePickerView.setCurrentLevel(i);
}
@Override // com.google.android.material.timepicker.ClockHandView.OnActionUpListener
public void onActionUp(float f, boolean z) {
this.broadcasting = true;
int i = this.time.minute;
int i2 = this.time.hour;
if (this.time.selection == 10) {
this.timePickerView.setHandRotation(this.hourRotation, false);
AccessibilityManager accessibilityManager = (AccessibilityManager) ContextCompat.getSystemService(this.timePickerView.getContext(), AccessibilityManager.class);
if (accessibilityManager == null || !accessibilityManager.isTouchExplorationEnabled()) {
setSelection(12, true);
}
} else {
int round = Math.round(f);
if (!z) {
this.time.setMinute(((round + 15) / 30) * 5);
this.minuteRotation = this.time.minute * 6;
}
this.timePickerView.setHandRotation(this.minuteRotation, z);
}
this.broadcasting = false;
updateTime();
performHapticFeedback(i2, i);
}
private void updateTime() {
this.timePickerView.updateTime(this.time.period, this.time.getHourForDisplay(), this.time.minute);
}
private void updateValues() {
updateValues(HOUR_CLOCK_VALUES, TimeModel.NUMBER_FORMAT);
updateValues(MINUTE_CLOCK_VALUES, TimeModel.ZERO_LEADING_NUMBER_FORMAT);
}
private void updateValues(String[] strArr, String str) {
for (int i = 0; i < strArr.length; i++) {
strArr[i] = TimeModel.formatText(this.timePickerView.getResources(), strArr[i], str);
}
}
private int getHourRotation() {
return (this.time.getHourForDisplay() * 30) % 360;
}
}