Commit e574e526 authored by Sajal Narang's avatar Sajal Narang

Add checks for timestamp validity, fix #54

parent 9713f7ff
...@@ -122,14 +122,13 @@ public class AddEventFragment extends BaseFragment { ...@@ -122,14 +122,13 @@ public class AddEventFragment extends BaseFragment {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Calendar calendar = Calendar.getInstance(); final Calendar calendar = Calendar.getInstance();
int mYear = calendar.get(Calendar.YEAR); int mYear = calendar.get(Calendar.YEAR);
int mMonth = calendar.get(Calendar.MONTH); int mMonth = calendar.get(Calendar.MONTH);
int mDay = calendar.get(Calendar.DAY_OF_MONTH); int mDay = calendar.get(Calendar.DAY_OF_MONTH);
final int mHour = calendar.get(Calendar.HOUR_OF_DAY); final int mHour = calendar.get(Calendar.HOUR_OF_DAY);
final int mMin = calendar.get(Calendar.MINUTE); final int mMin = calendar.get(Calendar.MINUTE);
final long millis = calendar.getTimeInMillis();
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() { DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
...@@ -139,19 +138,21 @@ public class AddEventFragment extends BaseFragment { ...@@ -139,19 +138,21 @@ public class AddEventFragment extends BaseFragment {
TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() { TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) { public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
timestamp_start = makeTimestamp(year, month, dayOfMonth, hourOfDay, minute);
if (timestamp_start.after(new Timestamp(Calendar.getInstance().getTimeInMillis()))) {
if (timestamp_end == null || timestamp_end.after(timestamp_start)) {
start.setText(dayOfMonth + "/" + month + "/" + year + " " + hourOfDay + ":" + minute); start.setText(dayOfMonth + "/" + month + "/" + year + " " + hourOfDay + ":" + minute);
enableEndDatePicker(year, month, dayOfMonth, hourOfDay, minute, millis); enableEndDatePicker(year, month, dayOfMonth, hourOfDay, minute);
end.setEnabled(true); }
} else {
Toast.makeText(getContext(), "Start Time cannot be in the past", Toast.LENGTH_SHORT).show();
}
} }
}, mHour, mMin, true); }, mHour, mMin, true);
timePickerDialog.show(); timePickerDialog.show();
} }
}, mYear, mMonth, mDay); }, mYear, mMonth, mDay);
datePickerDialog.show(); datePickerDialog.show();
timestamp_start = new Timestamp(millis);
} }
}); });
...@@ -203,7 +204,7 @@ public class AddEventFragment extends BaseFragment { ...@@ -203,7 +204,7 @@ public class AddEventFragment extends BaseFragment {
return view; return view;
} }
private void enableEndDatePicker(final int startYear, final int startMonth, final int startDayOfMonth, final int startHourOfDay, final int startMinute, long startMillis) { private void enableEndDatePicker(final int startYear, final int startMonth, final int startDayOfMonth, final int startHourOfDay, final int startMinute) {
end.setEnabled(true); end.setEnabled(true);
end.setOnClickListener(new View.OnClickListener() { end.setOnClickListener(new View.OnClickListener() {
@Override @Override
...@@ -215,14 +216,17 @@ public class AddEventFragment extends BaseFragment { ...@@ -215,14 +216,17 @@ public class AddEventFragment extends BaseFragment {
TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() { TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) { public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
end.setText(dayOfMonth + "/" + month + "/" + year + " " + hourOfDay + ":" + minute);
timestamp_end = makeTimestamp(year, month, dayOfMonth, hourOfDay, minute); timestamp_end = makeTimestamp(year, month, dayOfMonth, hourOfDay, minute);
if (timestamp_end.after(timestamp_start))
end.setText(dayOfMonth + "/" + month + "/" + year + " " + hourOfDay + ":" + minute);
else {
Toast.makeText(getContext(), "End Time cannot be before Start Time", Toast.LENGTH_SHORT).show();
}
} }
}, startHourOfDay, startMinute, true); }, startHourOfDay, startMinute, true);
timePickerDialog.show(); timePickerDialog.show();
} }
}, startYear, startMonth, startDayOfMonth); }, startYear, startMonth, startDayOfMonth);
datePickerDialog.show(); datePickerDialog.show();
} }
}); });
...@@ -231,12 +235,11 @@ public class AddEventFragment extends BaseFragment { ...@@ -231,12 +235,11 @@ public class AddEventFragment extends BaseFragment {
public static Timestamp makeTimestamp(int year, int month, int day, int hour, int minute) { public static Timestamp makeTimestamp(int year, int month, int day, int hour, int minute) {
Calendar cal = new GregorianCalendar(); Calendar cal = new GregorianCalendar();
cal.set(Calendar.YEAR, year); cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1); cal.set(Calendar.MONTH, month);
cal.set(Calendar.DATE, day); cal.set(Calendar.DATE, day);
cal.set(Calendar.HOUR_OF_DAY, hour); cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute); cal.set(Calendar.MINUTE, minute);
// now convert GregorianCalendar object to Timestamp object
return new Timestamp(cal.getTimeInMillis()); return new Timestamp(cal.getTimeInMillis());
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment