Fixed edit for new reminder dialogue. Added new date format

This commit is contained in:
Keith Holliday 2016-07-12 13:13:41 -05:00
parent 364caa4646
commit 3dcff2f5de
8 changed files with 244 additions and 45 deletions

View file

@ -0,0 +1,73 @@
{
"project_info": {
"project_number": "726830572661",
"firebase_url": "https://habitica-android.firebaseio.com",
"project_id": "habitica-android",
"storage_bucket": "habitica-android.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:726830572661:android:d2e86a80d3b5f4f7",
"android_client_info": {
"package_name": "com.habitrpg.android.habitica"
}
},
"oauth_client": [
{
"client_id": "726830572661-e0bp1cplmf3v2sfl7e7goog768b7dv7b.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyDbtO8iErLD14Gk42Gg48fijX1mzfPKzS8"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:726830572661:android:ffd6914ad1a696e4",
"android_client_info": {
"package_name": "com.habitrpg.android.habitica.debug"
}
},
"oauth_client": [
{
"client_id": "726830572661-e0bp1cplmf3v2sfl7e7goog768b7dv7b.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyDbtO8iErLD14Gk42Gg48fijX1mzfPKzS8"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<DatePicker
android:id="@+id/datePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</DatePicker>
<TimePicker
android:id="@+id/timePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TimePicker>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Confirm"
android:id="@+id/customDialogConfirmButton"
/>
</LinearLayout>

View file

@ -1,4 +1,4 @@
package com.habitrpg.android.habitica.ui.helpers; package com.habitrpg.android.habitica.helpers;
import com.habitrpg.android.habitica.events.TaskSaveEvent; import com.habitrpg.android.habitica.events.TaskSaveEvent;
import com.habitrpg.android.habitica.receivers.TaskReceiver; import com.habitrpg.android.habitica.receivers.TaskReceiver;
@ -14,7 +14,6 @@ import android.app.AlarmManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.util.Log;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;

View file

@ -1,6 +1,6 @@
package com.habitrpg.android.habitica.receivers; package com.habitrpg.android.habitica.receivers;
import com.habitrpg.android.habitica.ui.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;

View file

@ -2,9 +2,8 @@ package com.habitrpg.android.habitica.receivers;
import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.ui.activities.MainActivity; import com.habitrpg.android.habitica.ui.activities.MainActivity;
import com.habitrpg.android.habitica.ui.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
import android.app.Notification;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;

View file

@ -9,7 +9,7 @@ import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter;
import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter; import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter;
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback; import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback;
import com.habitrpg.android.habitica.ui.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
import com.habitrpg.android.habitica.ui.helpers.ViewHelper; import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
import com.magicmicky.habitrpgwrapper.lib.models.Tag; import com.magicmicky.habitrpgwrapper.lib.models.Tag;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
@ -26,6 +26,7 @@ import net.pherth.android.emoji_library.EmojiPopup;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog; import android.app.TimePickerDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -56,11 +57,13 @@ import android.widget.NumberPicker;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TableRow; import android.widget.TableRow;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TimePicker;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@ -168,6 +171,9 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
private TaskAlarmManager taskAlarmManager; private TaskAlarmManager taskAlarmManager;
private List<Tag> selectedTags; private List<Tag> selectedTags;
//Used for reminders @TODO: Move this to reminders manager
DateFormat dateFormater = new SimpleDateFormat("dd MMMM yyyy HH:mm:ss");
@Override @Override
protected int getLayoutResId() { protected int getLayoutResId() {
return R.layout.activity_task_form; return R.layout.activity_task_form;
@ -429,6 +435,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
if (task != null && task.getReminders() != null) { if (task != null && task.getReminders() != null) {
reminders = task.getReminders(); reminders = task.getReminders();
} }
remindersAdapter = new RemindersAdapter(reminders); remindersAdapter = new RemindersAdapter(reminders);
LinearLayoutManager llm = new LinearLayoutManager(this); LinearLayoutManager llm = new LinearLayoutManager(this);
@ -446,37 +453,64 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
@OnClick(R.id.add_reminder_button) @OnClick(R.id.add_reminder_button)
public void addReminder() { public void addReminder() {
Date startDate = new Date(startDateListener.getCalendar().getTimeInMillis()); 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();
}
Date time = startDate;
String reminderTimeString = newRemindersEditText.getText().toString();
if (reminderTimeString.isEmpty()) return;
String[] reminderTimeSplit = reminderTimeString.split(":");
time.setHours(Integer.parseInt(reminderTimeSplit[0]));
time.setMinutes(Integer.parseInt(reminderTimeSplit[1]));
time.setSeconds(0);
RemindersItem item = new RemindersItem();
UUID randomUUID = UUID.randomUUID();
item.setId(randomUUID.toString());
item.setStartDate(startDate);
item.setTime(time);
remindersAdapter.addItem(item);
newRemindersEditText.setText(""); newRemindersEditText.setText("");
} }
@OnClick(R.id.new_reminder_edittext) @OnClick(R.id.new_reminder_edittext)
public void changeNewReminderTime() { public void changeNewReminderTime() {
Calendar mcurrentTime = Calendar.getInstance(); Calendar currentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); int hour = currentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE); int minute = currentTime.get(Calendar.MINUTE);
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(TaskFormActivity.this, (timePicker, selectedHour, selectedMinute) -> { if (taskType.equals("todo")) {
newRemindersEditText.setText(String.format("%d:%02d", selectedHour, selectedMinute)); Dialog dialog = new Dialog(this);
}, hour, minute, true); dialog.setContentView(R.layout.custom_date_time_dialogue);
mTimePicker.setTitle("Select Time"); dialog.setTitle("Select Date and Time");
mTimePicker.show();
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();
}
} }
private void createTagsCheckBoxes() { private void createTagsCheckBoxes() {

View file

@ -5,16 +5,23 @@ import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperAdapter;
import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperViewHolder; import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperViewHolder;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem;
import android.app.Dialog;
import android.app.TimePickerDialog; import android.app.TimePickerDialog;
import android.graphics.Color; import android.graphics.Color;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TimePicker;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -27,10 +34,13 @@ import butterknife.ButterKnife;
*/ */
public class RemindersAdapter extends RecyclerView.Adapter<RemindersAdapter.ItemViewHolder> public class RemindersAdapter extends RecyclerView.Adapter<RemindersAdapter.ItemViewHolder>
implements ItemTouchHelperAdapter { implements ItemTouchHelperAdapter {
private final List<RemindersItem> reminders = new ArrayList<>(); private final List<RemindersItem> reminders = new ArrayList<>();
private DateFormat dateFormater;
public RemindersAdapter(List<RemindersItem> remindersInc) { public RemindersAdapter(List<RemindersItem> remindersInc) {
reminders.addAll(remindersInc); reminders.addAll(remindersInc);
dateFormater = new SimpleDateFormat("dd MMMM yyyy HH:mm:ss");
} }
@Override @Override
@ -42,7 +52,7 @@ public class RemindersAdapter extends RecyclerView.Adapter<RemindersAdapter.Item
@Override @Override
public void onBindViewHolder(final ItemViewHolder holder, int position) { public void onBindViewHolder(final ItemViewHolder holder, int position) {
Date time = reminders.get(position).getTime(); Date time = reminders.get(position).getTime();
holder.reminderItemTextView.setText(String.format("%d:%02d", time.getHours(), time.getMinutes())); holder.reminderItemTextView.setText(dateFormater.format(time));
holder.hour = time.getHours(); holder.hour = time.getHours();
holder.minute = time.getMinutes(); holder.minute = time.getMinutes();
} }
@ -94,19 +104,59 @@ public class RemindersAdapter extends RecyclerView.Adapter<RemindersAdapter.Item
deleteButton.setOnClickListener(this); deleteButton.setOnClickListener(this);
reminderItemTextView.setOnClickListener(v -> { reminderItemTextView.setOnClickListener(v -> {
TimePickerDialog timePicker; RemindersItem reminder = reminders.get(getAdapterPosition());
timePicker = new TimePickerDialog(v.getContext(), (timePicker1, selectedHour, selectedMinute) -> {
reminderItemTextView.setText(String.format("%d:%02d", selectedHour, selectedMinute));
RemindersItem reminder = reminders.get(getAdapterPosition()); String taskType;
Date time = reminder.getTime();
time.setHours(selectedHour); if (reminder.getTask() == null) {
time.setMinutes(selectedMinute); taskType = reminder.getType();
time.setSeconds(0); } else {
reminder.setTime(time); taskType = reminder.getTask().getType();
}, hour, minute, true); }
timePicker.setTitle("Select Time");
timePicker.show(); 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();
}
}); });
} }

View file

@ -7,10 +7,13 @@ import com.raizlabs.android.dbflow.annotation.ForeignKey;
import com.raizlabs.android.dbflow.annotation.ForeignKeyReference; import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
import com.raizlabs.android.dbflow.annotation.PrimaryKey; import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table; import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.raizlabs.android.dbflow.structure.BaseModel; import com.raizlabs.android.dbflow.structure.BaseModel;
import com.raizlabs.android.dbflow.structure.container.ForeignKeyContainer; import com.raizlabs.android.dbflow.structure.container.ForeignKeyContainer;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* Created by keithholliday on 5/31/16. * Created by keithholliday on 5/31/16.
@ -35,6 +38,9 @@ public class RemindersItem extends BaseModel {
@Column @Column
private Integer alarmId; private Integer alarmId;
//Use to store task type before a task is created
private String type;
public String getId() { public String getId() {
return id; return id;
} }
@ -69,7 +75,13 @@ public class RemindersItem extends BaseModel {
public Task getTask() { public Task getTask() {
if (task != null) { if (task != null) {
return task.toModel(); //This will get all the task info
Task taskModel = task.toModel();
List<Task> task = new Select()
.from(Task.class)
.where(Condition.column("id").eq(taskModel.getId()))
.queryList();
return task.get(0);
} else { } else {
return null; return null;
} }
@ -81,6 +93,14 @@ public class RemindersItem extends BaseModel {
this.task.put("id", task.getId()); this.task.put("id", task.getId());
} }
public String getType() {
return this.type;
}
public void setType(String type) {
this.type = type;
}
@Override @Override
public void save() { public void save() {
if (this.getId() == null) { if (this.getId() == null) {