X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FDatePickerFragment.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FDatePickerFragment.java;h=4ea1f8b3d228c1b394344cb66faa947cda431068;hb=b3fff85cf8314bb335eab4e9e9aa0fa9681ad12b;hp=0000000000000000000000000000000000000000;hpb=8afa247b37e10e048df040bb7fa281bd708a5997;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 new file mode 100644 index 00000000..4ea1f8b3 --- /dev/null +++ b/app/src/main/java/net/ktnx/mobileledger/DatePickerFragment.java @@ -0,0 +1,64 @@ +package net.ktnx.mobileledger; + +import android.annotation.TargetApi; +import android.app.DatePickerDialog; +import android.app.Dialog; +import android.os.Build; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatDialogFragment; +import android.widget.DatePicker; +import android.widget.TextView; + +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.Locale; +import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class DatePickerFragment extends AppCompatDialogFragment +implements DatePickerDialog.OnDateSetListener +{ + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Calendar c = GregorianCalendar.getInstance(); + int year = c.get(GregorianCalendar.YEAR); + int month = c.get(GregorianCalendar.MONTH); + int day = c.get(GregorianCalendar.DAY_OF_MONTH); + TextView date = getActivity().findViewById(R.id.new_transaction_date); + + CharSequence present = date.getText(); + + Pattern re_mon_day = Pattern.compile("^\\s*(\\d+)\\s*/\\s*(\\d+)\\s*$"); + 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)); + } + 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)); + } + } + + return new DatePickerDialog(Objects.requireNonNull(getActivity()), this, year, month, day); + } + + @TargetApi(Build.VERSION_CODES.O) + public void onDateSet(DatePicker view, int year, int month, int day) { + TextView date = getActivity().findViewById(R.id.new_transaction_date); + + final Calendar c = GregorianCalendar.getInstance(); + if ( c.get(GregorianCalendar.YEAR) == year && c.get(GregorianCalendar.MONTH) == month) { + date.setText(String.format(Locale.US, "%d", day)); + } + else { + date.setText(String.format(Locale.US, "%d/%d", month, day)); + } + } +}