mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-16 11:11:41 +00:00
Abstracted logic from ui to manager
This commit is contained in:
parent
3dcff2f5de
commit
9b8df61348
3 changed files with 103 additions and 101 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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<Tag> 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() {
|
||||
|
|
|
|||
|
|
@ -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<RemindersAdapter.Item
|
|||
implements ItemTouchHelperAdapter {
|
||||
|
||||
private final List<RemindersItem> reminders = new ArrayList<>();
|
||||
private DateFormat dateFormater;
|
||||
private RemindersManager remindersManager;
|
||||
|
||||
public RemindersAdapter(List<RemindersItem> 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<RemindersAdapter.Item
|
|||
@Override
|
||||
public void onBindViewHolder(final ItemViewHolder holder, int position) {
|
||||
Date time = reminders.get(position).getTime();
|
||||
holder.reminderItemTextView.setText(dateFormater.format(time));
|
||||
holder.reminderItemTextView.setText(remindersManager.reminderTimeToString(time));
|
||||
holder.hour = time.getHours();
|
||||
holder.minute = time.getMinutes();
|
||||
}
|
||||
|
|
@ -114,49 +115,7 @@ public class RemindersAdapter extends RecyclerView.Adapter<RemindersAdapter.Item
|
|||
taskType = reminder.getTask().getType();
|
||||
}
|
||||
|
||||
if (taskType.equals("todo")) {
|
||||
Dialog dialog = new Dialog(v.getContext());
|
||||
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);
|
||||
|
||||
reminder.setTime(calendar.getTime());
|
||||
|
||||
reminderItemTextView.setText(dateFormater.format(calendar.getTime()));
|
||||
dialog.hide();
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
} else {
|
||||
TimePickerDialog timePicker;
|
||||
timePicker = new TimePickerDialog(v.getContext(), (timePicker1, selectedHour, selectedMinute) -> {
|
||||
|
||||
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());
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue