From 64e012a88afda7e6455b2fc1257d985192b19b16 Mon Sep 17 00:00:00 2001 From: Daniel Kaparunakis Date: Sat, 10 Sep 2016 18:21:14 -0500 Subject: [PATCH] Feature: Add logic to files where calendar views occur This commit adds the first day of the week calendar logic to the RemindersManager & the TaskFormActivity classes. The date pickers present themselves on two occassions: reminders & due dates. Both were covered. --- Habitica/res/values/strings.xml | 2 + Habitica/res/xml/preferences_fragment.xml | 1 + .../helpers/FirstDayOfTheWeekHelper.java | 41 ++++++++++ .../habitica/helpers/RemindersManager.java | 15 +++- .../ui/activities/TaskFormActivity.java | 74 +++++++++++-------- 5 files changed, 100 insertions(+), 33 deletions(-) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/helpers/FirstDayOfTheWeekHelper.java diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index c41344a81..4894049b6 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -20,6 +20,8 @@ Account First Day of the Week First day of the week in all calendars + 5 + FirstDayOfTheWeek Daily Reminder Activate Reminder Set Reminder Time diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml index dcd97ada9..f3ed1434d 100644 --- a/Habitica/res/xml/preferences_fragment.xml +++ b/Habitica/res/xml/preferences_fragment.xml @@ -63,6 +63,7 @@ android:order="2"/> { int day = dialogDatePicker.getDayOfMonth(); int month = dialogDatePicker.getMonth(); 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 bc85040d1..71e6fda7e 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 @@ -1,42 +1,17 @@ package com.habitrpg.android.habitica.ui.activities; -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.components.AppComponent; -import com.habitrpg.android.habitica.events.TaskSaveEvent; -import com.habitrpg.android.habitica.events.commands.DeleteTaskCommand; -import com.habitrpg.android.habitica.helpers.RemindersManager; -import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager; -import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter; -import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter; -import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; -import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback; -import com.habitrpg.android.habitica.helpers.TaskAlarmManager; -import com.habitrpg.android.habitica.ui.helpers.ViewHelper; -import com.magicmicky.habitrpgwrapper.lib.models.Tag; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag; -import com.raizlabs.android.dbflow.sql.builder.Condition; -import com.raizlabs.android.dbflow.sql.language.Select; - -import net.pherth.android.emoji_library.EmojiEditText; -import net.pherth.android.emoji_library.EmojiPopup; - -import org.greenrobot.eventbus.EventBus; - import android.app.DatePickerDialog; -import android.app.Dialog; -import android.app.TimePickerDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Build; import android.os.Bundle; import android.support.design.widget.TextInputLayout; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; +import android.support.v7.preference.PreferenceManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; @@ -58,19 +33,43 @@ import android.widget.NumberPicker; import android.widget.Spinner; import android.widget.TableRow; import android.widget.TextView; -import android.widget.TimePicker; + +import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.components.AppComponent; +import com.habitrpg.android.habitica.events.TaskSaveEvent; +import com.habitrpg.android.habitica.events.commands.DeleteTaskCommand; +import com.habitrpg.android.habitica.helpers.FirstDayOfTheWeekHelper; +import com.habitrpg.android.habitica.helpers.RemindersManager; +import com.habitrpg.android.habitica.helpers.TaskAlarmManager; +import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager; +import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter; +import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter; +import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; +import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback; +import com.habitrpg.android.habitica.ui.helpers.ViewHelper; +import com.magicmicky.habitrpgwrapper.lib.models.Tag; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag; +import com.raizlabs.android.dbflow.sql.builder.Condition; +import com.raizlabs.android.dbflow.sql.language.Select; + +import net.pherth.android.emoji_library.EmojiEditText; +import net.pherth.android.emoji_library.EmojiPopup; + +import org.greenrobot.eventbus.EventBus; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; -import java.util.UUID; import butterknife.BindView; import butterknife.OnClick; @@ -901,6 +900,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem public DateEditTextListener(EditText dateText) { calendar = Calendar.getInstance(); + this.datePickerText = dateText; this.datePickerText.setOnClickListener(this); this.dateFormatter = DateFormat.getDateInstance(); @@ -908,6 +908,18 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + String dayOfTheWeek = sharedPreferences.getString("dayOfTheWeek", "1"); + FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = new FirstDayOfTheWeekHelper(dayOfTheWeek); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT_WATCH) { + datePickerDialog.getDatePicker().getCalendarView().setFirstDayOfWeek( + firstDayOfTheWeekHelper.getFirstDayOfTheWeek()); + } else { + datePickerDialog.getDatePicker().setFirstDayOfWeek(firstDayOfTheWeekHelper + .getFirstDayOfTheWeek()); + } + this.datePickerDialog.setButton(DialogInterface.BUTTON_NEUTRAL, getResources().getString(R.string.today), (dialog, which) -> { setCalendar(Calendar.getInstance().getTime()); });