From c6b948cbf56b627165b50ac601edced1ddcf1845 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Tue, 8 Mar 2016 18:15:59 -0500 Subject: [PATCH] Save changes on configuration change Fixes #16 --- .../dialogs/HabitSelectionCallback.java | 2 +- .../uhabits/fragments/EditHabitFragment.java | 29 +++++++++++++++++++ .../uhabits/fragments/ListHabitsFragment.java | 11 +++++-- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/dialogs/HabitSelectionCallback.java b/app/src/main/java/org/isoron/uhabits/dialogs/HabitSelectionCallback.java index 6577ec440..67c3a7ced 100644 --- a/app/src/main/java/org/isoron/uhabits/dialogs/HabitSelectionCallback.java +++ b/app/src/main/java/org/isoron/uhabits/dialogs/HabitSelectionCallback.java @@ -168,7 +168,7 @@ public class HabitSelectionCallback implements ActionMode.Callback { EditHabitFragment frag = EditHabitFragment.editSingleHabitFragment(firstHabit.getId()); frag.setOnSavedListener(onSavedListener); - frag.show(activity.getFragmentManager(), "dialog"); + frag.show(activity.getFragmentManager(), "editHabit"); return true; } diff --git a/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java index 04cf6847c..a48087023 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java @@ -144,6 +144,21 @@ public class EditHabitFragment extends DialogFragment tvDescription.append(modifiedHabit.description); } + if(savedInstanceState != null) + { + modifiedHabit.color = savedInstanceState.getInt("color", modifiedHabit.color); + modifiedHabit.reminderMin = savedInstanceState.getInt("reminderMin", -1); + modifiedHabit.reminderHour = savedInstanceState.getInt("reminderHour", -1); + modifiedHabit.reminderDays = savedInstanceState.getInt("reminderDays", -1); + + if(modifiedHabit.reminderMin < 0) + { + modifiedHabit.reminderMin = null; + modifiedHabit.reminderHour = null; + modifiedHabit.reminderDays = 127; + } + } + tvFreqNum.append(modifiedHabit.freqNum.toString()); tvFreqDen.append(modifiedHabit.freqDen.toString()); @@ -340,4 +355,18 @@ public class EditHabitFragment extends DialogFragment modifiedHabit.reminderDays = DateHelper.packWeekdayList(selectedDays); updateReminder(); } + + @Override + public void onSaveInstanceState(Bundle outState) + { + super.onSaveInstanceState(outState); + + outState.putInt("color", modifiedHabit.color); + if(modifiedHabit.reminderHour != null) + { + outState.putInt("reminderMin", modifiedHabit.reminderMin); + outState.putInt("reminderHour", modifiedHabit.reminderHour); + outState.putInt("reminderDays", modifiedHabit.reminderDays); + } + } } diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java index d6aa8b9a1..ef11a2301 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java @@ -129,9 +129,16 @@ public class ListHabitsFragment extends Fragment listView.setDragEnabled(true); listView.setLongClickable(true); + if(savedInstanceState != null) + { + EditHabitFragment frag = (EditHabitFragment) getFragmentManager() + .findFragmentByTag("editHabit"); + if(frag != null) frag.setOnSavedListener(this); + } + loader.updateAllHabits(true); - setHasOptionsMenu(true); + setHasOptionsMenu(true); return view; } @@ -202,7 +209,7 @@ public class ListHabitsFragment extends Fragment { EditHabitFragment frag = EditHabitFragment.createHabitFragment(); frag.setOnSavedListener(this); - frag.show(getFragmentManager(), "dialog"); + frag.show(getFragmentManager(), "editHabit"); return true; }