From dcd0c61b8d9fa6457746809eb5748e92008d7581 Mon Sep 17 00:00:00 2001 From: Rechee Date: Thu, 2 Jan 2020 18:07:55 -0800 Subject: [PATCH 1/4] fixed issue where weekly picker dialog isn't being restored on rotation squash! fixed issue where weekly picker dialog isn't being restored on rotation --- .../common/dialogs/WeekdayPickerDialog.java | 18 ++++++++++++++++ .../habits/edit/EditHabitDialog.java | 21 ++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java index 41b9346c1..4a0b378ef 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java @@ -22,6 +22,8 @@ package org.isoron.uhabits.activities.common.dialogs; import android.app.*; import android.content.*; import android.os.*; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; import android.support.v7.app.*; @@ -38,6 +40,7 @@ public class WeekdayPickerDialog extends AppCompatDialogFragment implements DialogInterface.OnMultiChoiceClickListener, DialogInterface.OnClickListener { + private static final String KEY_SELECTED_DAYS = "selectedDays"; private boolean[] selectedDays; private OnWeekdaysPickedListener listener; @@ -48,6 +51,21 @@ public class WeekdayPickerDialog extends AppCompatDialogFragment implements selectedDays[which] = isChecked; } + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if(savedInstanceState != null){ + selectedDays = savedInstanceState.getBooleanArray(KEY_SELECTED_DAYS); + } + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBooleanArray(KEY_SELECTED_DAYS, selectedDays); + } + @Override public void onClick(DialogInterface dialog, int which) { diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java index 6ff96bb3b..93f05b6a0 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java @@ -23,8 +23,10 @@ import android.app.Dialog; import android.content.*; import android.os.*; import android.support.annotation.*; +import android.support.v4.app.Fragment; import android.support.v7.app.*; import android.text.format.*; +import android.util.Log; import android.view.*; import com.android.datetimepicker.time.*; @@ -47,6 +49,8 @@ public class EditHabitDialog extends AppCompatDialogFragment public static final String BUNDLE_HABIT_ID = "habitId"; public static final String BUNDLE_HABIT_TYPE = "habitType"; + public static final String EDIT_HABIT_TAG = "editHabit"; + private static final String WEEKDAY_PICKER_TAG = "weekdayPicker"; protected Habit originalHabit; @@ -109,6 +113,8 @@ public class EditHabitDialog extends AppCompatDialogFragment setupReminderController(); setupNameController(); + restoreChildFragmentListeners(); + return view; } @@ -268,8 +274,21 @@ public class EditHabitDialog extends AppCompatDialogFragment WeekdayPickerDialog dialog = new WeekdayPickerDialog(); dialog.setListener(reminderPanel); dialog.setSelectedDays(currentDays); - dialog.show(getFragmentManager(), "weekdayPicker"); + dialog.show(getChildFragmentManager(), WEEKDAY_PICKER_TAG); } }); } + + /** + * Used to restore any child fragment listeners on rotation/config change. + * + * Can possibly be refactored to use ViewModel/ + */ + private void restoreChildFragmentListeners() { + final WeekdayPickerDialog weekdayPickerDialog = + (WeekdayPickerDialog) getChildFragmentManager().findFragmentByTag(WEEKDAY_PICKER_TAG); + if(weekdayPickerDialog != null) { + weekdayPickerDialog.setListener(reminderPanel); + } + } } From 897887f80241842fa65b195c3d650b521206652a Mon Sep 17 00:00:00 2001 From: Rechee Date: Thu, 2 Jan 2020 18:14:32 -0800 Subject: [PATCH 2/4] optimize imports --- .../common/dialogs/WeekdayPickerDialog.java | 16 +++--- .../habits/edit/EditHabitDialog.java | 55 ++++++++++++------- 2 files changed, 43 insertions(+), 28 deletions(-) diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java index 4a0b378ef..753569b79 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/WeekdayPickerDialog.java @@ -19,19 +19,19 @@ package org.isoron.uhabits.activities.common.dialogs; -import android.app.*; -import android.content.*; -import android.os.*; +import android.app.Dialog; +import android.content.DialogInterface; +import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; -import android.support.v7.app.*; +import android.support.v7.app.AppCompatDialogFragment; -import org.isoron.uhabits.*; -import org.isoron.uhabits.core.models.*; -import org.isoron.uhabits.core.utils.*; +import org.isoron.uhabits.R; +import org.isoron.uhabits.core.models.WeekdayList; +import org.isoron.uhabits.core.utils.DateUtils; -import java.util.*; +import java.util.Calendar; /** * Dialog that allows the user to pick one or more days of the week. diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java index 93f05b6a0..ace1376fa 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java @@ -20,27 +20,42 @@ package org.isoron.uhabits.activities.habits.edit; import android.app.Dialog; -import android.content.*; -import android.os.*; -import android.support.annotation.*; -import android.support.v4.app.Fragment; -import android.support.v7.app.*; -import android.text.format.*; -import android.util.Log; -import android.view.*; - -import com.android.datetimepicker.time.*; - -import org.isoron.uhabits.*; +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatDialogFragment; +import android.text.format.DateFormat; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; + +import com.android.datetimepicker.time.TimePickerDialog; + +import org.isoron.uhabits.HabitsApplication; +import org.isoron.uhabits.HabitsApplicationComponent; import org.isoron.uhabits.R; -import org.isoron.uhabits.activities.*; -import org.isoron.uhabits.activities.common.dialogs.*; -import org.isoron.uhabits.activities.habits.edit.views.*; -import org.isoron.uhabits.core.commands.*; -import org.isoron.uhabits.core.models.*; -import org.isoron.uhabits.core.preferences.*; - -import butterknife.*; +import org.isoron.uhabits.activities.HabitsActivity; +import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialog; +import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialogFactory; +import org.isoron.uhabits.activities.common.dialogs.WeekdayPickerDialog; +import org.isoron.uhabits.activities.habits.edit.views.FrequencyPanel; +import org.isoron.uhabits.activities.habits.edit.views.NameDescriptionPanel; +import org.isoron.uhabits.activities.habits.edit.views.ReminderPanel; +import org.isoron.uhabits.activities.habits.edit.views.TargetPanel; +import org.isoron.uhabits.core.commands.CommandRunner; +import org.isoron.uhabits.core.models.Frequency; +import org.isoron.uhabits.core.models.Habit; +import org.isoron.uhabits.core.models.HabitList; +import org.isoron.uhabits.core.models.ModelFactory; +import org.isoron.uhabits.core.models.WeekdayList; +import org.isoron.uhabits.core.preferences.Preferences; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; import static android.view.View.GONE; From ceed784acdaadc8dcc15b6bbc36126cd67539248 Mon Sep 17 00:00:00 2001 From: Rechee Date: Thu, 2 Jan 2020 18:15:30 -0800 Subject: [PATCH 3/4] remove unused tag --- .../isoron/uhabits/activities/habits/edit/EditHabitDialog.java | 1 - 1 file changed, 1 deletion(-) diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java index ace1376fa..27a62f339 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java @@ -64,7 +64,6 @@ public class EditHabitDialog extends AppCompatDialogFragment public static final String BUNDLE_HABIT_ID = "habitId"; public static final String BUNDLE_HABIT_TYPE = "habitType"; - public static final String EDIT_HABIT_TAG = "editHabit"; private static final String WEEKDAY_PICKER_TAG = "weekdayPicker"; protected Habit originalHabit; From 29e4a8d4ec05e27c56657001ff1dd403040d1c9e Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Fri, 3 Jan 2020 08:27:00 -0600 Subject: [PATCH 4/4] Minor style changes --- .../habits/edit/EditHabitDialog.java | 71 +++++++------------ 1 file changed, 25 insertions(+), 46 deletions(-) diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java index 27a62f339..01b7133dd 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java @@ -19,51 +19,35 @@ package org.isoron.uhabits.activities.habits.edit; -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatDialogFragment; -import android.text.format.DateFormat; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; +import android.app.*; +import android.content.*; +import android.os.*; +import android.support.annotation.*; +import android.support.v7.app.*; +import android.text.format.*; +import android.view.*; import com.android.datetimepicker.time.TimePickerDialog; -import org.isoron.uhabits.HabitsApplication; -import org.isoron.uhabits.HabitsApplicationComponent; +import org.isoron.uhabits.*; import org.isoron.uhabits.R; -import org.isoron.uhabits.activities.HabitsActivity; -import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialog; -import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialogFactory; -import org.isoron.uhabits.activities.common.dialogs.WeekdayPickerDialog; -import org.isoron.uhabits.activities.habits.edit.views.FrequencyPanel; -import org.isoron.uhabits.activities.habits.edit.views.NameDescriptionPanel; -import org.isoron.uhabits.activities.habits.edit.views.ReminderPanel; -import org.isoron.uhabits.activities.habits.edit.views.TargetPanel; -import org.isoron.uhabits.core.commands.CommandRunner; -import org.isoron.uhabits.core.models.Frequency; -import org.isoron.uhabits.core.models.Habit; -import org.isoron.uhabits.core.models.HabitList; -import org.isoron.uhabits.core.models.ModelFactory; -import org.isoron.uhabits.core.models.WeekdayList; -import org.isoron.uhabits.core.preferences.Preferences; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; - -import static android.view.View.GONE; +import org.isoron.uhabits.activities.*; +import org.isoron.uhabits.activities.common.dialogs.*; +import org.isoron.uhabits.activities.habits.edit.views.*; +import org.isoron.uhabits.core.commands.*; +import org.isoron.uhabits.core.models.*; +import org.isoron.uhabits.core.preferences.*; + +import butterknife.*; + +import static android.view.View.*; public class EditHabitDialog extends AppCompatDialogFragment { public static final String BUNDLE_HABIT_ID = "habitId"; public static final String BUNDLE_HABIT_TYPE = "habitType"; + private static final String WEEKDAY_PICKER_TAG = "weekdayPicker"; protected Habit originalHabit; @@ -293,16 +277,11 @@ public class EditHabitDialog extends AppCompatDialogFragment }); } - /** - * Used to restore any child fragment listeners on rotation/config change. - * - * Can possibly be refactored to use ViewModel/ - */ - private void restoreChildFragmentListeners() { - final WeekdayPickerDialog weekdayPickerDialog = - (WeekdayPickerDialog) getChildFragmentManager().findFragmentByTag(WEEKDAY_PICKER_TAG); - if(weekdayPickerDialog != null) { - weekdayPickerDialog.setListener(reminderPanel); - } + private void restoreChildFragmentListeners() + { + final WeekdayPickerDialog dialog = + (WeekdayPickerDialog) getChildFragmentManager() + .findFragmentByTag(WEEKDAY_PICKER_TAG); + if(dialog != null) dialog.setListener(reminderPanel); } }