Skip to content

Commit

Permalink
Fix - Remove Restoration of XML parameters (#838)
Browse files Browse the repository at this point in the history
  • Loading branch information
quentin41500 committed Sep 7, 2018
1 parent bf1015c commit 7a5a045
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1120,53 +1120,35 @@ 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;
}

@Override
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);
Expand Down Expand Up @@ -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<CalendarDay> 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);
Expand All @@ -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<SavedState> CREATOR
Expand All @@ -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;
}
}

Expand Down
18 changes: 18 additions & 0 deletions sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,24 @@

</activity>

<activity
android:name=".RotationActivity"
android:label="@string/title_activity_rotation"
android:parentActivityName=".MainActivity"
>

<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"
/>

<intent-filter>
<action android:name="android.intent.action.RUN"/>
<category android:name="com.prolificinteractive.materialcalendarview.sample.SAMPLE"/>
</intent-filter>

</activity>

</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -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()));
}
}
30 changes: 30 additions & 0 deletions sample/src/main/res/layout-land/activity_rotation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".BasicActivity"
>

<com.prolificinteractive.materialcalendarview.MaterialCalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:mcv_calendarMode="week"
app:mcv_dateTextAppearance="@style/CustomTextAppearance"
app:mcv_firstDayOfWeek="sunday"
app:mcv_headerTextAppearance="@style/CustomTextAppearance"
app:mcv_showWeekDays="false"
app:mcv_tileHeight="30dp"
app:mcv_tileWidth="50dp"
app:mcv_titleAnimationOrientation="horizontal"
app:mcv_weekDayTextAppearance="@style/CustomTextAppearance"
/>

</LinearLayout>
27 changes: 27 additions & 0 deletions sample/src/main/res/layout/activity_rotation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".BasicActivity"
>

<com.prolificinteractive.materialcalendarview.MaterialCalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:mcv_calendarMode="month"
app:mcv_firstDayOfWeek="wednesday"
app:mcv_showWeekDays="true"
app:mcv_tileHeight="40dp"
app:mcv_titleAnimationOrientation="vertical"
app:mcv_tileWidth="30dp"
/>

</LinearLayout>
1 change: 1 addition & 0 deletions sample/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<string name="title_activity_dialogs">Calendar in Dialogs</string>
<string name="title_activity_decorators">Calendar with Decorators</string>
<string name="title_activity_getters">Calendar with Getters</string>
<string name="title_activity_rotation">Rotation Example</string>
<string name="title_activity_selections">Calendar Selection Modes</string>
<string name="title_activity_basic_modes">Calendar with Dynamic Modes</string>
<string name="title_activity_multiple_view">Multiple Basic Calendars</string>
Expand Down

0 comments on commit 7a5a045

Please sign in to comment.