X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FDatePickerFragment.java;h=164371319e08e542c816d816a8d88ec9975ad150;hb=55831cbed33beff476a2a86bd143cd8a274916fd;hp=4ea1f8b3d228c1b394344cb66faa947cda431068;hpb=b3fff85cf8314bb335eab4e9e9aa0fa9681ad12b;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/DatePickerFragment.java b/app/src/main/java/net/ktnx/mobileledger/DatePickerFragment.java index 4ea1f8b3..16437131 100644 --- a/app/src/main/java/net/ktnx/mobileledger/DatePickerFragment.java +++ b/app/src/main/java/net/ktnx/mobileledger/DatePickerFragment.java @@ -18,7 +18,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class DatePickerFragment extends AppCompatDialogFragment -implements DatePickerDialog.OnDateSetListener +implements DatePickerDialog.OnDateSetListener, DatePicker.OnDateChangedListener { @NonNull @Override @@ -35,18 +35,26 @@ implements DatePickerDialog.OnDateSetListener Matcher m_mon_day = re_mon_day.matcher(present); if (m_mon_day.matches()) { - month = Integer.parseInt(m_mon_day.group(0)); - day = Integer.parseInt(m_mon_day.group(1)); + month = Integer.parseInt(m_mon_day.group(1))-1; + day = Integer.parseInt(m_mon_day.group(2)); } else { Pattern re_day = Pattern.compile("^\\s*(\\d{1,2})\\s*$"); Matcher m_day = re_day.matcher(present); if (m_day.matches()) { - day = Integer.parseInt(m_day.group(0)); + day = Integer.parseInt(m_day.group(1)); } } - return new DatePickerDialog(Objects.requireNonNull(getActivity()), this, year, month, day); + DatePickerDialog dpd = new DatePickerDialog(Objects.requireNonNull(getActivity()), this, year, month, day); + + // quicker date selection available in API 26 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + DatePicker dp = dpd.getDatePicker(); + dp.setOnDateChangedListener(this); + } + + return dpd; } @TargetApi(Build.VERSION_CODES.O) @@ -58,7 +66,22 @@ implements DatePickerDialog.OnDateSetListener date.setText(String.format(Locale.US, "%d", day)); } else { - date.setText(String.format(Locale.US, "%d/%d", month, day)); + date.setText(String.format(Locale.US, "%d/%d", month+1, day)); + } + } + + @Override + public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { + TextView date = Objects.requireNonNull(getActivity()).findViewById(R.id.new_transaction_date); + + final Calendar c = GregorianCalendar.getInstance(); + if ( c.get(GregorianCalendar.YEAR) == year && c.get(GregorianCalendar.MONTH) == monthOfYear) { + date.setText(String.format(Locale.US, "%d", dayOfMonth)); + } + else { + date.setText(String.format(Locale.US, "%d/%d", monthOfYear+1, dayOfMonth)); } + + this.dismiss(); } }