mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
233 lines
9.3 KiB
Java
233 lines
9.3 KiB
Java
package com.google.android.material.datepicker;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.ColorStateList;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.BaseAdapter;
|
|
import android.widget.TextView;
|
|
import androidx.core.util.Pair;
|
|
import com.google.android.material.R;
|
|
import com.google.android.material.timepicker.TimeModel;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes2.dex */
|
|
public class MonthAdapter extends BaseAdapter {
|
|
private static final int NO_DAY_NUMBER = -1;
|
|
final CalendarConstraints calendarConstraints;
|
|
CalendarStyle calendarStyle;
|
|
final DateSelector<?> dateSelector;
|
|
final DayViewDecorator dayViewDecorator;
|
|
final Month month;
|
|
private Collection<Long> previouslySelectedDates;
|
|
static final int MAXIMUM_WEEKS = UtcDates.getUtcCalendar().getMaximum(4);
|
|
private static final int MAXIMUM_GRID_CELLS = (UtcDates.getUtcCalendar().getMaximum(5) + UtcDates.getUtcCalendar().getMaximum(7)) - 1;
|
|
|
|
@Override // android.widget.Adapter
|
|
public int getCount() {
|
|
return MAXIMUM_GRID_CELLS;
|
|
}
|
|
|
|
@Override // android.widget.BaseAdapter, android.widget.Adapter
|
|
public boolean hasStableIds() {
|
|
return true;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public MonthAdapter(Month month, DateSelector<?> dateSelector, CalendarConstraints calendarConstraints, DayViewDecorator dayViewDecorator) {
|
|
this.month = month;
|
|
this.dateSelector = dateSelector;
|
|
this.calendarConstraints = calendarConstraints;
|
|
this.dayViewDecorator = dayViewDecorator;
|
|
this.previouslySelectedDates = dateSelector.getSelectedDays();
|
|
}
|
|
|
|
@Override // android.widget.Adapter
|
|
public Long getItem(int i) {
|
|
if (i < firstPositionInMonth() || i > lastPositionInMonth()) {
|
|
return null;
|
|
}
|
|
return Long.valueOf(this.month.getDay(positionToDay(i)));
|
|
}
|
|
|
|
@Override // android.widget.Adapter
|
|
public long getItemId(int i) {
|
|
return i / this.month.daysInWeek;
|
|
}
|
|
|
|
@Override // android.widget.Adapter
|
|
public TextView getView(int i, View view, ViewGroup viewGroup) {
|
|
int i2;
|
|
initializeStyles(viewGroup.getContext());
|
|
TextView textView = (TextView) view;
|
|
if (view == null) {
|
|
textView = (TextView) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.mtrl_calendar_day, viewGroup, false);
|
|
}
|
|
int firstPositionInMonth = i - firstPositionInMonth();
|
|
if (firstPositionInMonth < 0 || firstPositionInMonth >= this.month.daysInMonth) {
|
|
textView.setVisibility(8);
|
|
textView.setEnabled(false);
|
|
i2 = -1;
|
|
} else {
|
|
i2 = firstPositionInMonth + 1;
|
|
textView.setTag(this.month);
|
|
textView.setText(String.format(textView.getResources().getConfiguration().locale, TimeModel.NUMBER_FORMAT, Integer.valueOf(i2)));
|
|
textView.setVisibility(0);
|
|
textView.setEnabled(true);
|
|
}
|
|
Long item = getItem(i);
|
|
if (item == null) {
|
|
return textView;
|
|
}
|
|
updateSelectedState(textView, item.longValue(), i2);
|
|
return textView;
|
|
}
|
|
|
|
public void updateSelectedStates(MaterialCalendarGridView materialCalendarGridView) {
|
|
Iterator<Long> it = this.previouslySelectedDates.iterator();
|
|
while (it.hasNext()) {
|
|
updateSelectedStateForDate(materialCalendarGridView, it.next().longValue());
|
|
}
|
|
DateSelector<?> dateSelector = this.dateSelector;
|
|
if (dateSelector != null) {
|
|
Iterator<Long> it2 = dateSelector.getSelectedDays().iterator();
|
|
while (it2.hasNext()) {
|
|
updateSelectedStateForDate(materialCalendarGridView, it2.next().longValue());
|
|
}
|
|
this.previouslySelectedDates = this.dateSelector.getSelectedDays();
|
|
}
|
|
}
|
|
|
|
private void updateSelectedStateForDate(MaterialCalendarGridView materialCalendarGridView, long j) {
|
|
if (Month.create(j).equals(this.month)) {
|
|
int dayOfMonth = this.month.getDayOfMonth(j);
|
|
updateSelectedState((TextView) materialCalendarGridView.getChildAt(materialCalendarGridView.getAdapter().dayToPosition(dayOfMonth) - materialCalendarGridView.getFirstVisiblePosition()), j, dayOfMonth);
|
|
}
|
|
}
|
|
|
|
private void updateSelectedState(TextView textView, long j, int i) {
|
|
boolean z;
|
|
CalendarItemStyle calendarItemStyle;
|
|
CalendarItemStyle calendarItemStyle2;
|
|
if (textView == null) {
|
|
return;
|
|
}
|
|
Context context = textView.getContext();
|
|
String dayContentDescription = getDayContentDescription(context, j);
|
|
textView.setContentDescription(dayContentDescription);
|
|
boolean isValid = this.calendarConstraints.getDateValidator().isValid(j);
|
|
if (isValid) {
|
|
textView.setEnabled(true);
|
|
boolean isSelected = isSelected(j);
|
|
textView.setSelected(isSelected);
|
|
if (isSelected) {
|
|
calendarItemStyle2 = this.calendarStyle.selectedDay;
|
|
} else if (isToday(j)) {
|
|
calendarItemStyle2 = this.calendarStyle.todayDay;
|
|
} else {
|
|
calendarItemStyle2 = this.calendarStyle.day;
|
|
}
|
|
calendarItemStyle = calendarItemStyle2;
|
|
z = isSelected;
|
|
} else {
|
|
textView.setEnabled(false);
|
|
z = false;
|
|
calendarItemStyle = this.calendarStyle.invalidDay;
|
|
}
|
|
if (this.dayViewDecorator != null && i != -1) {
|
|
int i2 = this.month.year;
|
|
int i3 = this.month.month;
|
|
ColorStateList backgroundColor = this.dayViewDecorator.getBackgroundColor(context, i2, i3, i, isValid, z);
|
|
boolean z2 = z;
|
|
calendarItemStyle.styleItem(textView, backgroundColor, this.dayViewDecorator.getTextColor(context, i2, i3, i, isValid, z2));
|
|
Drawable compoundDrawableLeft = this.dayViewDecorator.getCompoundDrawableLeft(context, i2, i3, i, isValid, z2);
|
|
Drawable compoundDrawableTop = this.dayViewDecorator.getCompoundDrawableTop(context, i2, i3, i, isValid, z2);
|
|
Drawable compoundDrawableRight = this.dayViewDecorator.getCompoundDrawableRight(context, i2, i3, i, isValid, z2);
|
|
boolean z3 = z;
|
|
textView.setCompoundDrawables(compoundDrawableLeft, compoundDrawableTop, compoundDrawableRight, this.dayViewDecorator.getCompoundDrawableBottom(context, i2, i3, i, isValid, z3));
|
|
textView.setContentDescription(this.dayViewDecorator.getContentDescription(context, i2, i3, i, isValid, z3, dayContentDescription));
|
|
return;
|
|
}
|
|
calendarItemStyle.styleItem(textView);
|
|
}
|
|
|
|
private String getDayContentDescription(Context context, long j) {
|
|
return DateStrings.getDayContentDescription(context, j, isToday(j), isStartOfRange(j), isEndOfRange(j));
|
|
}
|
|
|
|
private boolean isToday(long j) {
|
|
return UtcDates.getTodayCalendar().getTimeInMillis() == j;
|
|
}
|
|
|
|
boolean isStartOfRange(long j) {
|
|
for (Pair<Long, Long> pair : this.dateSelector.getSelectedRanges()) {
|
|
if (pair.first != null && pair.first.longValue() == j) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
boolean isEndOfRange(long j) {
|
|
for (Pair<Long, Long> pair : this.dateSelector.getSelectedRanges()) {
|
|
if (pair.second != null && pair.second.longValue() == j) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private boolean isSelected(long j) {
|
|
Iterator<Long> it = this.dateSelector.getSelectedDays().iterator();
|
|
while (it.hasNext()) {
|
|
if (UtcDates.canonicalYearMonthDay(j) == UtcDates.canonicalYearMonthDay(it.next().longValue())) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void initializeStyles(Context context) {
|
|
if (this.calendarStyle == null) {
|
|
this.calendarStyle = new CalendarStyle(context);
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public int firstPositionInMonth() {
|
|
return this.month.daysFromStartOfWeekToFirstOfMonth(this.calendarConstraints.getFirstDayOfWeek());
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public int lastPositionInMonth() {
|
|
return (firstPositionInMonth() + this.month.daysInMonth) - 1;
|
|
}
|
|
|
|
int positionToDay(int i) {
|
|
return (i - firstPositionInMonth()) + 1;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public int dayToPosition(int i) {
|
|
return firstPositionInMonth() + (i - 1);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public boolean withinMonth(int i) {
|
|
return i >= firstPositionInMonth() && i <= lastPositionInMonth();
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public boolean isFirstInRow(int i) {
|
|
return i % this.month.daysInWeek == 0;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public boolean isLastInRow(int i) {
|
|
return (i + 1) % this.month.daysInWeek == 0;
|
|
}
|
|
}
|