X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2FDatePickerFragment.java;h=54a2093247e47ccf73982b1c64d5ce5d7a2a2ca4;hb=5df10dc0b58df4d4be4e9ab34f1e0f477ca46766;hp=3115d477a2ba97450ec7254344cecdde46fed398;hpb=1a35d85c28218c830bf09daa4a5f1b808575e1dc;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/DatePickerFragment.java b/app/src/main/java/net/ktnx/mobileledger/ui/DatePickerFragment.java index 3115d477..54a20932 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/DatePickerFragment.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/DatePickerFragment.java @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2020 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -22,14 +22,15 @@ import android.os.Bundle; import android.widget.CalendarView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatDialogFragment; import net.ktnx.mobileledger.R; -import net.ktnx.mobileledger.model.MobileLedgerProfile; +import net.ktnx.mobileledger.model.FutureDates; +import net.ktnx.mobileledger.utils.SimpleDate; import java.util.Calendar; import java.util.GregorianCalendar; -import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -38,14 +39,56 @@ public class DatePickerFragment extends AppCompatDialogFragment static final Pattern reYMD = Pattern.compile("^\\s*(\\d+)\\d*/\\s*(\\d+)\\s*/\\s*(\\d+)\\s*$"); static final Pattern reMD = Pattern.compile("^\\s*(\\d+)\\s*/\\s*(\\d+)\\s*$"); static final Pattern reD = Pattern.compile("\\s*(\\d+)\\s*$"); - private Calendar presentDate = GregorianCalendar.getInstance(); + private final Calendar presentDate = GregorianCalendar.getInstance(); private DatePickedListener onDatePickedListener; - private MobileLedgerProfile.FutureDates futureDates = MobileLedgerProfile.FutureDates.None; - public MobileLedgerProfile.FutureDates getFutureDates() { - return futureDates; + private long minDate = 0; + private long maxDate = Long.MAX_VALUE; + public void setDateRange(@Nullable SimpleDate minDate, @Nullable SimpleDate maxDate) { + if (minDate == null) + this.minDate = 0; + else + this.minDate = minDate.toDate().getTime(); + + if (maxDate == null) + this.maxDate = Long.MAX_VALUE; + else + this.maxDate = maxDate.toDate().getTime(); } - public void setFutureDates(MobileLedgerProfile.FutureDates futureDates) { - this.futureDates = futureDates; + public void setFutureDates(FutureDates futureDates) { + if (futureDates == FutureDates.All) { + maxDate = Long.MAX_VALUE; + } + else { + final Calendar dateLimit = GregorianCalendar.getInstance(); + switch (futureDates) { + case None: + // already there + break; + case OneWeek: + dateLimit.add(Calendar.DAY_OF_MONTH, 7); + break; + case TwoWeeks: + dateLimit.add(Calendar.DAY_OF_MONTH, 14); + break; + case OneMonth: + dateLimit.add(Calendar.MONTH, 1); + break; + case TwoMonths: + dateLimit.add(Calendar.MONTH, 2); + break; + case ThreeMonths: + dateLimit.add(Calendar.MONTH, 3); + break; + case SixMonths: + dateLimit.add(Calendar.MONTH, 6); + break; + case OneYear: + dateLimit.add(Calendar.YEAR, 1); + break; + } + maxDate = dateLimit.getTime() + .getTime(); + } } public void setCurrentDateFromText(CharSequence present) { final Calendar now = GregorianCalendar.getInstance(); @@ -78,47 +121,15 @@ public class DatePickerFragment extends AppCompatDialogFragment @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - Dialog dpd = new Dialog(Objects.requireNonNull(getActivity())); + Dialog dpd = new Dialog(requireActivity()); dpd.setContentView(R.layout.date_picker_view); dpd.setTitle(null); CalendarView cv = dpd.findViewById(R.id.calendarView); cv.setDate(presentDate.getTime() .getTime()); - if (futureDates == MobileLedgerProfile.FutureDates.All) { - cv.setMaxDate(Long.MAX_VALUE); - } - else { - final Calendar dateLimit = GregorianCalendar.getInstance(); - switch (futureDates) { - case None: - // already there - break; - case OneWeek: - dateLimit.add(Calendar.DAY_OF_MONTH, 7); - break; - case TwoWeeks: - dateLimit.add(Calendar.DAY_OF_MONTH, 14); - break; - case OneMonth: - dateLimit.add(Calendar.MONTH, 1); - break; - case TwoMonths: - dateLimit.add(Calendar.MONTH, 2); - break; - case ThreeMonths: - dateLimit.add(Calendar.MONTH, 3); - break; - case SixMonths: - dateLimit.add(Calendar.MONTH, 6); - break; - case OneYear: - dateLimit.add(Calendar.YEAR, 1); - break; - } - cv.setMaxDate(dateLimit.getTime() - .getTime()); - } + cv.setMinDate(minDate); + cv.setMaxDate(maxDate); cv.setOnDateChangeListener(this);