From 36349801169f0d4675b295f8989ee7a88bf02299 Mon Sep 17 00:00:00 2001 From: Daniel Kaparunakis Date: Fri, 16 Sep 2016 12:29:27 -0500 Subject: [PATCH] Feature: Refactor the order of days in dailies This commit refactors the order of days in the dailies in accordance to the First Day of the Week setting. In addition, it sets the default value for the setting using the user's locale as opposed to an arbitrary value. --- Habitica/res/xml/preferences_fragment.xml | 3 +- .../helpers/FirstDayOfTheWeekHelper.java | 12 ++++ .../habitica/helpers/RemindersManager.java | 3 +- .../habitica/ui/activities/MainActivity.java | 70 +++++++++++++++++++ .../habitica/ui/activities/SetupActivity.java | 8 +++ .../ui/activities/TaskFormActivity.java | 14 +++- 6 files changed, 106 insertions(+), 4 deletions(-) diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml index f3ed1434d..6e8bb0a9e 100644 --- a/Habitica/res/xml/preferences_fragment.xml +++ b/Habitica/res/xml/preferences_fragment.xml @@ -63,8 +63,7 @@ android:order="2"/> newTasks = this.taskSetupFragment.createSampleTasks(); 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 71e6fda7e..19970a3ec 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 @@ -66,7 +66,9 @@ import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; @@ -569,6 +571,15 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem this.frequencyContainer.removeAllViews(); if (this.dailyFrequencySpinner.getSelectedItemPosition() == 0) { String[] weekdays = getResources().getStringArray(R.array.weekdays); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + String dayOfTheWeek = sharedPreferences.getString("FirstDayOfTheWeek", + Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); + FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = new FirstDayOfTheWeekHelper(dayOfTheWeek); + + ArrayList weekdaysTemp = new ArrayList<>(Arrays.asList(weekdays)); + Collections.rotate(weekdaysTemp, firstDayOfTheWeekHelper.getDailyTaskFormOffset()); + weekdays = weekdaysTemp.toArray(new String[1]); + for (int i = 0; i < 7; i++) { View weekdayRow = getLayoutInflater().inflate(R.layout.row_checklist, this.frequencyContainer, false); CheckBox checkbox = (CheckBox) weekdayRow.findViewById(R.id.checkbox); @@ -910,7 +921,8 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem calendar.get(Calendar.DAY_OF_MONTH)); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - String dayOfTheWeek = sharedPreferences.getString("dayOfTheWeek", "1"); + String dayOfTheWeek = sharedPreferences.getString("FirstDayOfTheWeek", + Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = new FirstDayOfTheWeekHelper(dayOfTheWeek); if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT_WATCH) { datePickerDialog.getDatePicker().getCalendarView().setFirstDayOfWeek(