From a003d519d5647be31786f4e6b46d0399fc7bbf2a Mon Sep 17 00:00:00 2001 From: HeinrichLohse Date: Mon, 23 Jan 2017 21:29:58 +0100 Subject: [PATCH] proper handling of custom date range selections - fixes #611 (#639) --- .../ui/util/dialog/DateRangePickerDialogFragment.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/gnucash/android/ui/util/dialog/DateRangePickerDialogFragment.java b/app/src/main/java/org/gnucash/android/ui/util/dialog/DateRangePickerDialogFragment.java index 954c10f2e..1447119d1 100644 --- a/app/src/main/java/org/gnucash/android/ui/util/dialog/DateRangePickerDialogFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/util/dialog/DateRangePickerDialogFragment.java @@ -52,6 +52,7 @@ public class DateRangePickerDialogFragment extends DialogFragment{ private Date mStartRange = LocalDate.now().minusMonths(1).toDate(); private Date mEndRange = LocalDate.now().toDate(); private OnDateRangeSetListener mDateRangeSetListener; + private static final long ONE_DAY_IN_MILLIS = 24 * 60 * 60 * 1000; public static DateRangePickerDialogFragment newInstance(OnDateRangeSetListener dateRangeSetListener){ DateRangePickerDialogFragment fragment = new DateRangePickerDialogFragment(); @@ -89,7 +90,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onClick(View v) { List selectedDates = mCalendarPickerView.getSelectedDates(); Date startDate = selectedDates.get(0); - Date endDate = selectedDates.size() == 2 ? selectedDates.get(1) : new Date(); + // If only one day is selected (no interval) start and end should be the same (the selected one) + Date endDate = selectedDates.size() > 1 ? selectedDates.get(selectedDates.size() - 1) : new Date(startDate.getTime()); + // CaledarPicker returns the start of the selected day but we want all transactions of that day to be included. + // Therefore we have to add 24 hours to the endDate. + endDate.setTime(endDate.getTime() + ONE_DAY_IN_MILLIS); mDateRangeSetListener.onDateRangeSet(startDate, endDate); dismiss(); }