mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-27 09:32:27 -06:00
187 lines
8.4 KiB
Java
187 lines
8.4 KiB
Java
|
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;
|
||
|
}
|
||
|
}
|