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.
This commit is contained in:
Daniel Kaparunakis 2016-09-16 12:29:27 -05:00
parent e02b52aac9
commit 3634980116
6 changed files with 106 additions and 4 deletions

View file

@ -63,8 +63,7 @@
android:order="2"/>
<ListPreference android:title="@string/pref_first_day_of_the_week_title"
android:defaultValue="@string/pref_first_day_of_the_week_default_value"
android:key="dayOfTheWeek"
android:key="@string/pref_first_day_of_the_week_key"
android:entries="@array/weekdays"
android:entryValues="@array/weekdayValues"
android:summary="@string/pref_first_day_of_the_week_summary"

View file

@ -8,29 +8,37 @@ import java.util.Calendar;
public class FirstDayOfTheWeekHelper {
private int firstDayOfTheWeek;
private int dailyTaskFormOffset;
public FirstDayOfTheWeekHelper(String firstDayOfTheWeekSharedPref) {
switch (firstDayOfTheWeekSharedPref){
case "1":
firstDayOfTheWeek = Calendar.SUNDAY;
dailyTaskFormOffset = 1;
break;
case "2":
firstDayOfTheWeek = Calendar.MONDAY;
dailyTaskFormOffset = 0;
break;
case "3":
firstDayOfTheWeek = Calendar.TUESDAY;
dailyTaskFormOffset = 6;
break;
case "4":
firstDayOfTheWeek = Calendar.WEDNESDAY;
dailyTaskFormOffset = 5;
break;
case "5":
firstDayOfTheWeek = Calendar.THURSDAY;
dailyTaskFormOffset = 4;
break;
case "6":
firstDayOfTheWeek = Calendar.FRIDAY;
dailyTaskFormOffset = 3;
break;
case "7":
firstDayOfTheWeek = Calendar.SATURDAY;
dailyTaskFormOffset = 2;
break;
}
}
@ -38,4 +46,8 @@ public class FirstDayOfTheWeekHelper {
public int getFirstDayOfTheWeek() {
return firstDayOfTheWeek;
}
public int getDailyTaskFormOffset() {
return dailyTaskFormOffset;
}
}

View file

@ -71,7 +71,8 @@ public class RemindersManager {
DatePicker dialogDatePicker = (DatePicker) dialog.findViewById(R.id.datePicker);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
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) {
dialogDatePicker.getCalendarView().setFirstDayOfWeek(

View file

@ -1,5 +1,40 @@
package com.habitrpg.android.habitica.ui.activities;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.sqlite.SQLiteDoneException;
import android.databinding.DataBindingUtil;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.FileProvider;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.amplitude.api.Amplitude;
import com.habitrpg.android.habitica.APIHelper;
import com.habitrpg.android.habitica.HabiticaApplication;
@ -131,6 +166,41 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
||||||| merged common ancestors
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.sqlite.SQLiteDoneException;
import android.databinding.DataBindingUtil;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.FileProvider;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.File;
import java.util.ArrayList;
import java.util.Calendar;

View file

@ -1,10 +1,12 @@
package com.habitrpg.android.habitica.ui.activities;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
@ -28,6 +30,7 @@ import org.greenrobot.eventbus.Subscribe;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Calendar;
import java.util.List;
import javax.inject.Inject;
@ -148,6 +151,11 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("FirstDayOfTheWeek",
Integer.toString(Calendar.getInstance().getFirstDayOfWeek()));
editor.commit();
if (v == this.nextButton) {
if (this.pager.getCurrentItem() == 1) {
List<Task> newTasks = this.taskSetupFragment.createSampleTasks();

View file

@ -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<String> 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(