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 new file mode 100644 index 000000000..0ff869de7 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemindersManager.java @@ -0,0 +1,91 @@ +package com.habitrpg.android.habitica.helpers; + +import android.app.Dialog; +import android.app.TimePickerDialog; +import android.content.Context; +import android.view.View; +import android.widget.Button; +import android.widget.DatePicker; +import android.widget.EditText; +import android.widget.TimePicker; + +import com.habitrpg.android.habitica.R; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.UUID; + +/** + * Created by keithholliday on 7/12/16. + */ +public class RemindersManager { + + DateFormat dateFormater = new SimpleDateFormat("dd MMMM yyyy HH:mm:ss"); + + public RemindersItem createReminderFromDateString(String dateString) { + try { + Date date = dateFormater.parse(dateString); + RemindersItem item = new RemindersItem(); + UUID randomUUID = UUID.randomUUID(); + item.setId(randomUUID.toString()); + item.setStartDate(date); + item.setTime(date); + return item; + } catch (ParseException e) { + e.printStackTrace(); + return null; + } + } + + public String reminderTimeToString (Date time) { + return dateFormater.format(time); + } + + public void createDialogeForEditText(EditText editText, String taskType, Context context) { + Calendar currentTime = Calendar.getInstance(); + int hour = currentTime.get(Calendar.HOUR_OF_DAY); + int minute = currentTime.get(Calendar.MINUTE); + + if (taskType.equals("todo")) { + Dialog dialog = new Dialog(context); + dialog.setContentView(R.layout.custom_date_time_dialogue); + dialog.setTitle("Select Date and Time"); + + Button dialogConfirmButton = (Button) dialog.findViewById(R.id.customDialogConfirmButton); + TimePicker dialogTimePicker = (TimePicker) dialog.findViewById(R.id.timePicker); + DatePicker dialogDatePicker = (DatePicker) dialog.findViewById(R.id.datePicker); + + dialogConfirmButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int day = dialogDatePicker.getDayOfMonth(); + int month = dialogDatePicker.getMonth(); + int year = dialogDatePicker.getYear(); + int hour = dialogTimePicker.getCurrentHour(); + int minute = dialogTimePicker.getCurrentMinute(); + + Calendar calendar = Calendar.getInstance(); + calendar.set(year, month, day, hour, minute, 0); + + editText.setText(dateFormater.format(calendar.getTime())); + dialog.hide(); + } + }); + dialog.show(); + } else { + TimePickerDialog timePickerDialog; + timePickerDialog = new TimePickerDialog(context, (timePicker, selectedHour, selectedMinute) -> { + Calendar calendar = Calendar.getInstance(); + calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), selectedHour, selectedMinute, 0); + editText.setText(dateFormater.format(calendar.getTime())); + }, hour, minute, true); + timePickerDialog.setTitle("Select Time"); + timePickerDialog.show(); + } + } + +} 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 dd12ec442..13c607a3b 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 @@ -4,6 +4,7 @@ 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; @@ -171,8 +172,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem private TaskAlarmManager taskAlarmManager; private List selectedTags; - //Used for reminders @TODO: Move this to reminders manager - DateFormat dateFormater = new SimpleDateFormat("dd MMMM yyyy HH:mm:ss"); + private RemindersManager remindersManager; @Override protected int getLayoutResId() { @@ -195,6 +195,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem return; } + remindersManager = new RemindersManager(); taskAlarmManager = TaskAlarmManager.getInstance(this); dueDateListener = new DateEditTextListener(dueDatePickerText); @@ -453,64 +454,15 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem @OnClick(R.id.add_reminder_button) public void addReminder() { - try { - Date date = dateFormater.parse(newRemindersEditText.getText().toString()); - RemindersItem item = new RemindersItem(); - UUID randomUUID = UUID.randomUUID(); - item.setId(randomUUID.toString()); - item.setStartDate(date); - item.setTime(date); - item.setType(taskType); - remindersAdapter.addItem(item); - } catch (ParseException e) { - e.printStackTrace(); - } - + RemindersItem item = remindersManager.createReminderFromDateString(newRemindersEditText.getText().toString()); + item.setType(taskType); + remindersAdapter.addItem(item); newRemindersEditText.setText(""); } @OnClick(R.id.new_reminder_edittext) public void changeNewReminderTime() { - Calendar currentTime = Calendar.getInstance(); - int hour = currentTime.get(Calendar.HOUR_OF_DAY); - int minute = currentTime.get(Calendar.MINUTE); - - if (taskType.equals("todo")) { - Dialog dialog = new Dialog(this); - dialog.setContentView(R.layout.custom_date_time_dialogue); - dialog.setTitle("Select Date and Time"); - - Button dialogConfirmButton = (Button) dialog.findViewById(R.id.customDialogConfirmButton); - TimePicker dialogTimePicker = (TimePicker) dialog.findViewById(R.id.timePicker); - DatePicker dialogDatePicker = (DatePicker) dialog.findViewById(R.id.datePicker); - - dialogConfirmButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - int day = dialogDatePicker.getDayOfMonth(); - int month = dialogDatePicker.getMonth(); - int year = dialogDatePicker.getYear(); - int hour = dialogTimePicker.getCurrentHour(); - int minute = dialogTimePicker.getCurrentMinute(); - - Calendar calendar = Calendar.getInstance(); - calendar.set(year, month, day, hour, minute, 0); - - newRemindersEditText.setText(dateFormater.format(calendar.getTime())); - dialog.hide(); - } - }); - dialog.show(); - } else { - TimePickerDialog timePickerDialog; - timePickerDialog = new TimePickerDialog(TaskFormActivity.this, (timePicker, selectedHour, selectedMinute) -> { - Calendar calendar = Calendar.getInstance(); - calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), selectedHour, selectedMinute, 0); - newRemindersEditText.setText(dateFormater.format(calendar.getTime())); - }, hour, minute, true); - timePickerDialog.setTitle("Select Time"); - timePickerDialog.show(); - } + remindersManager.createDialogeForEditText(newRemindersEditText, taskType, this); } private void createTagsCheckBoxes() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RemindersAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RemindersAdapter.java index db2ca37fa..49c175b22 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RemindersAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RemindersAdapter.java @@ -1,6 +1,7 @@ package com.habitrpg.android.habitica.ui.adapter.tasks; import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.helpers.RemindersManager; import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperAdapter; import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperViewHolder; import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; @@ -36,11 +37,11 @@ public class RemindersAdapter extends RecyclerView.Adapter reminders = new ArrayList<>(); - private DateFormat dateFormater; + private RemindersManager remindersManager; public RemindersAdapter(List remindersInc) { reminders.addAll(remindersInc); - dateFormater = new SimpleDateFormat("dd MMMM yyyy HH:mm:ss"); + remindersManager = new RemindersManager(); } @Override @@ -52,7 +53,7 @@ public class RemindersAdapter extends RecyclerView.Adapter { - - Calendar calendar = Calendar.getInstance(); - calendar.setTime(reminder.getTime()); - calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), selectedHour, selectedMinute, 0); - - reminder.setTime(calendar.getTime()); - - reminderItemTextView.setText(dateFormater.format(calendar.getTime())); - }, hour, minute, true); - timePicker.setTitle("Select Time"); - timePicker.show(); - } + remindersManager.createDialogeForEditText(reminderItemTextView, taskType, v.getContext()); }); }