From 7a5a0459f8765b4b528eee70f7412dbb07228988 Mon Sep 17 00:00:00 2001 From: Quentin Colle Date: Mon, 6 Aug 2018 14:51:30 -0400 Subject: [PATCH] Fix - Remove Restoration of XML parameters (#838) --- .../MaterialCalendarView.java | 47 +------------------ sample/src/main/AndroidManifest.xml | 18 +++++++ .../sample/RotationActivity.java | 47 +++++++++++++++++++ .../res/layout-land/activity_rotation.xml | 30 ++++++++++++ .../src/main/res/layout/activity_rotation.xml | 27 +++++++++++ sample/src/main/res/values/strings.xml | 1 + 6 files changed, 124 insertions(+), 46 deletions(-) create mode 100644 sample/src/main/java/com/prolificinteractive/materialcalendarview/sample/RotationActivity.java create mode 100644 sample/src/main/res/layout-land/activity_rotation.xml create mode 100644 sample/src/main/res/layout/activity_rotation.xml diff --git a/library/src/main/java/com/prolificinteractive/materialcalendarview/MaterialCalendarView.java b/library/src/main/java/com/prolificinteractive/materialcalendarview/MaterialCalendarView.java index c20dfd4d..2bd7037f 100644 --- a/library/src/main/java/com/prolificinteractive/materialcalendarview/MaterialCalendarView.java +++ b/library/src/main/java/com/prolificinteractive/materialcalendarview/MaterialCalendarView.java @@ -1120,25 +1120,16 @@ public CalendarMode getCalendarMode() { @Override protected Parcelable onSaveInstanceState() { SavedState ss = new SavedState(super.onSaveInstanceState()); - ss.color = getSelectionColor(); - ss.dateTextAppearance = adapter.getDateTextAppearance(); - ss.weekDayTextAppearance = adapter.getWeekDayTextAppearance(); ss.showOtherDates = getShowOtherDates(); ss.allowClickDaysOutsideCurrentMonth = allowClickDaysOutsideCurrentMonth(); ss.minDate = getMinimumDate(); ss.maxDate = getMaximumDate(); ss.selectedDates = getSelectedDates(); - ss.firstDayOfWeek = getFirstDayOfWeek(); - ss.orientation = getTitleAnimationOrientation(); ss.selectionMode = getSelectionMode(); - ss.tileWidthPx = getTileWidth(); - ss.tileHeightPx = getTileHeight(); ss.topbarVisible = getTopbarVisible(); - ss.calendarMode = calendarMode; ss.dynamicHeightEnabled = mDynamicHeightEnabled; ss.currentMonth = currentMonth; ss.cacheCurrentPosition = state.cacheCurrentPosition; - ss.showWeekDays = showWeekDays; return ss; } @@ -1146,27 +1137,18 @@ protected Parcelable onSaveInstanceState() { protected void onRestoreInstanceState(Parcelable state) { SavedState ss = (SavedState) state; super.onRestoreInstanceState(ss.getSuperState()); - newState() - .setFirstDayOfWeek(ss.firstDayOfWeek) - .setCalendarDisplayMode(ss.calendarMode) + state().edit() .setMinimumDate(ss.minDate) .setMaximumDate(ss.maxDate) .isCacheCalendarPositionEnabled(ss.cacheCurrentPosition) - .setShowWeekDays(ss.showWeekDays) .commit(); - setSelectionColor(ss.color); - setDateTextAppearance(ss.dateTextAppearance); - setWeekDayTextAppearance(ss.weekDayTextAppearance); setShowOtherDates(ss.showOtherDates); setAllowClickDaysOutsideCurrentMonth(ss.allowClickDaysOutsideCurrentMonth); clearSelection(); for (CalendarDay calendarDay : ss.selectedDates) { setDateSelected(calendarDay, true); } - setTitleAnimationOrientation(ss.orientation); - setTileWidth(ss.tileWidthPx); - setTileHeight(ss.tileHeightPx); setTopbarVisible(ss.topbarVisible); setSelectionMode(ss.selectionMode); setDynamicHeightEnabled(ss.dynamicHeightEnabled); @@ -1197,25 +1179,16 @@ private void setRangeDates(CalendarDay min, CalendarDay max) { public static class SavedState extends BaseSavedState { - int color = 0; - int dateTextAppearance = 0; - int weekDayTextAppearance = 0; int showOtherDates = SHOW_DEFAULTS; boolean allowClickDaysOutsideCurrentMonth = true; CalendarDay minDate = null; CalendarDay maxDate = null; List selectedDates = new ArrayList<>(); - DayOfWeek firstDayOfWeek = WeekFields.of(Locale.getDefault()).getFirstDayOfWeek(); - int orientation = 0; - int tileWidthPx = -1; - int tileHeightPx = -1; boolean topbarVisible = true; int selectionMode = SELECTION_MODE_SINGLE; boolean dynamicHeightEnabled = false; - CalendarMode calendarMode = CalendarMode.MONTHS; CalendarDay currentMonth = null; boolean cacheCurrentPosition; - boolean showWeekDays; SavedState(Parcelable superState) { super(superState); @@ -1224,25 +1197,16 @@ public static class SavedState extends BaseSavedState { @Override public void writeToParcel(@NonNull Parcel out, int flags) { super.writeToParcel(out, flags); - out.writeInt(color); - out.writeInt(dateTextAppearance); - out.writeInt(weekDayTextAppearance); out.writeInt(showOtherDates); out.writeByte((byte) (allowClickDaysOutsideCurrentMonth ? 1 : 0)); out.writeParcelable(minDate, 0); out.writeParcelable(maxDate, 0); out.writeTypedList(selectedDates); - out.writeInt(firstDayOfWeek.getValue()); - out.writeInt(orientation); - out.writeInt(tileWidthPx); - out.writeInt(tileHeightPx); out.writeInt(topbarVisible ? 1 : 0); out.writeInt(selectionMode); out.writeInt(dynamicHeightEnabled ? 1 : 0); - out.writeInt(calendarMode == CalendarMode.WEEKS ? 1 : 0); out.writeParcelable(currentMonth, 0); out.writeByte((byte) (cacheCurrentPosition ? 1 : 0)); - out.writeByte((byte) (showWeekDays ? 1 : 0)); } public static final Parcelable.Creator CREATOR @@ -1258,26 +1222,17 @@ public SavedState[] newArray(int size) { private SavedState(Parcel in) { super(in); - color = in.readInt(); - dateTextAppearance = in.readInt(); - weekDayTextAppearance = in.readInt(); showOtherDates = in.readInt(); allowClickDaysOutsideCurrentMonth = in.readByte() != 0; ClassLoader loader = CalendarDay.class.getClassLoader(); minDate = in.readParcelable(loader); maxDate = in.readParcelable(loader); in.readTypedList(selectedDates, CalendarDay.CREATOR); - firstDayOfWeek = DayOfWeek.of(in.readInt()); - orientation = in.readInt(); - tileWidthPx = in.readInt(); - tileHeightPx = in.readInt(); topbarVisible = in.readInt() == 1; selectionMode = in.readInt(); dynamicHeightEnabled = in.readInt() == 1; - calendarMode = in.readInt() == 1 ? CalendarMode.WEEKS : CalendarMode.MONTHS; currentMonth = in.readParcelable(loader); cacheCurrentPosition = in.readByte() != 0; - showWeekDays = in.readByte() != 0; } } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index 1b41869b..db4839bb 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -271,6 +271,24 @@ + + + + + + + + + + + diff --git a/sample/src/main/java/com/prolificinteractive/materialcalendarview/sample/RotationActivity.java b/sample/src/main/java/com/prolificinteractive/materialcalendarview/sample/RotationActivity.java new file mode 100644 index 00000000..1db75395 --- /dev/null +++ b/sample/src/main/java/com/prolificinteractive/materialcalendarview/sample/RotationActivity.java @@ -0,0 +1,47 @@ +package com.prolificinteractive.materialcalendarview.sample; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.widget.Toast; +import butterknife.BindView; +import butterknife.ButterKnife; +import com.prolificinteractive.materialcalendarview.CalendarDay; +import com.prolificinteractive.materialcalendarview.MaterialCalendarView; +import com.prolificinteractive.materialcalendarview.OnDateLongClickListener; +import com.prolificinteractive.materialcalendarview.OnMonthChangedListener; +import org.threeten.bp.format.DateTimeFormatter; + +/** + * Shows off the most basic usage + */ +public class RotationActivity extends AppCompatActivity + implements OnMonthChangedListener, OnDateLongClickListener { + + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("EEE, d MMM yyyy"); + + @BindView(R.id.calendarView) + MaterialCalendarView widget; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_rotation); + ButterKnife.bind(this); + + widget.setOnDateLongClickListener(this); + widget.setOnMonthChangedListener(this); + } + + @Override + public void onDateLongClick(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date) { + final String text = String.format("%s is available", FORMATTER.format(date.getDate())); + Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); + } + + @Override + public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) { + //noinspection ConstantConditions + getSupportActionBar().setTitle(FORMATTER.format(date.getDate())); + } +} diff --git a/sample/src/main/res/layout-land/activity_rotation.xml b/sample/src/main/res/layout-land/activity_rotation.xml new file mode 100644 index 00000000..f55f2495 --- /dev/null +++ b/sample/src/main/res/layout-land/activity_rotation.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_rotation.xml b/sample/src/main/res/layout/activity_rotation.xml new file mode 100644 index 00000000..038132c4 --- /dev/null +++ b/sample/src/main/res/layout/activity_rotation.xml @@ -0,0 +1,27 @@ + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml index bf3de6e8..14c104be 100644 --- a/sample/src/main/res/values/strings.xml +++ b/sample/src/main/res/values/strings.xml @@ -14,6 +14,7 @@ Calendar in Dialogs Calendar with Decorators Calendar with Getters + Rotation Example Calendar Selection Modes Calendar with Dynamic Modes Multiple Basic Calendars