From f1db752ca2d547948cbe870904a9ef4c6f745ff0 Mon Sep 17 00:00:00 2001 From: Daniel Kaparunakis Date: Sun, 18 Sep 2016 23:46:28 -0500 Subject: [PATCH] Feature: Add sensible default for first day of the using locale This commits adds a default for the first day of the week setting. This is better than arbitrarily choosing a first day of the week. In addition, it reorders the days in the dailies screen with the first day in the list being the day the user chose in the setting. Issue: #546, Pull Request: #620 --- .../helpers/FirstDayOfTheWeekHelper.java | 37 ++++++++----------- .../habitica/helpers/RemindersManager.java | 3 +- .../ui/activities/TaskFormActivity.java | 7 ++-- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/FirstDayOfTheWeekHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/FirstDayOfTheWeekHelper.java index 95a9af896..56e8c9f70 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/FirstDayOfTheWeekHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/FirstDayOfTheWeekHelper.java @@ -10,36 +10,29 @@ public class FirstDayOfTheWeekHelper { private int firstDayOfTheWeek; private int dailyTaskFormOffset; - public FirstDayOfTheWeekHelper(String firstDayOfTheWeekSharedPref) { + private FirstDayOfTheWeekHelper(int dailyTaskFormOffset, int firstDayOfTheWeek) { + this.dailyTaskFormOffset = dailyTaskFormOffset; + this.firstDayOfTheWeek = firstDayOfTheWeek; + } + + public static FirstDayOfTheWeekHelper newInstance(String firstDayOfTheWeekSharedPref) { switch (firstDayOfTheWeekSharedPref){ case "1": - firstDayOfTheWeek = Calendar.SUNDAY; - dailyTaskFormOffset = 1; - break; + return new FirstDayOfTheWeekHelper(1, Calendar.SUNDAY); case "2": - firstDayOfTheWeek = Calendar.MONDAY; - dailyTaskFormOffset = 0; - break; + return new FirstDayOfTheWeekHelper(0, Calendar.MONDAY); case "3": - firstDayOfTheWeek = Calendar.TUESDAY; - dailyTaskFormOffset = 6; - break; + return new FirstDayOfTheWeekHelper(6, Calendar.TUESDAY); case "4": - firstDayOfTheWeek = Calendar.WEDNESDAY; - dailyTaskFormOffset = 5; - break; + return new FirstDayOfTheWeekHelper(5, Calendar.WEDNESDAY); case "5": - firstDayOfTheWeek = Calendar.THURSDAY; - dailyTaskFormOffset = 4; - break; + return new FirstDayOfTheWeekHelper(4, Calendar.THURSDAY); case "6": - firstDayOfTheWeek = Calendar.FRIDAY; - dailyTaskFormOffset = 3; - break; + return new FirstDayOfTheWeekHelper(3, Calendar.FRIDAY); case "7": - firstDayOfTheWeek = Calendar.SATURDAY; - dailyTaskFormOffset = 2; - break; + return new FirstDayOfTheWeekHelper(2, Calendar.SATURDAY); + default: + return new FirstDayOfTheWeekHelper(1, Calendar.SUNDAY); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemindersManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemindersManager.java index c638267c1..8f0ce0c0b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemindersManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemindersManager.java @@ -73,7 +73,8 @@ public class RemindersManager { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); String dayOfTheWeek = sharedPreferences.getString("FirstDayOfTheWeek", Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); - FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = new FirstDayOfTheWeekHelper(dayOfTheWeek); + FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = + FirstDayOfTheWeekHelper.newInstance(dayOfTheWeek); if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT_WATCH) { dialogDatePicker.getCalendarView().setFirstDayOfWeek( firstDayOfTheWeekHelper.getFirstDayOfTheWeek()); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java index 19970a3ec..32d3458a0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java @@ -574,8 +574,8 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); String dayOfTheWeek = sharedPreferences.getString("FirstDayOfTheWeek", Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); - FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = new FirstDayOfTheWeekHelper(dayOfTheWeek); - + FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = + FirstDayOfTheWeekHelper.newInstance(dayOfTheWeek); ArrayList weekdaysTemp = new ArrayList<>(Arrays.asList(weekdays)); Collections.rotate(weekdaysTemp, firstDayOfTheWeekHelper.getDailyTaskFormOffset()); weekdays = weekdaysTemp.toArray(new String[1]); @@ -923,7 +923,8 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); String dayOfTheWeek = sharedPreferences.getString("FirstDayOfTheWeek", Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); - FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = new FirstDayOfTheWeekHelper(dayOfTheWeek); + FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = + FirstDayOfTheWeekHelper.newInstance(dayOfTheWeek); if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT_WATCH) { datePickerDialog.getDatePicker().getCalendarView().setFirstDayOfWeek( firstDayOfTheWeekHelper.getFirstDayOfTheWeek());