diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java b/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java index 3415960..f43bda3 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java @@ -5,6 +5,8 @@ import android.app.TimePickerDialog; import androidx.lifecycle.Observer; +import com.google.android.material.timepicker.MaterialTimePicker; +import com.google.android.material.timepicker.TimeFormat; import com.nexgo.oaf.apiv3.SdkResult; import com.utsmyanmar.baselib.fragment.DataBindingFragment; import com.utsmyanmar.baselib.util.DataBindingConfig; @@ -155,15 +157,15 @@ public class TransactionSummaryFragment extends DataBindingFragment { summaryViewModel.startDate.postValue(selectedDate); // LogUtil.d(TAG, "Start date updated: " + selectedDate); // STATIC START TIME - summaryViewModel.startHr.setValue("00"); - summaryViewModel.startMin.setValue("00"); +// summaryViewModel.startHr.setValue("00"); +// summaryViewModel.startMin.setValue("00"); summaryViewModel.startDayOrNight.setValue(getString(R.string.txt_am)); } else { String selectedDate = dateFormat.format(myCalendar2.getTime()); summaryViewModel.endDate.postValue(selectedDate); // STATIC END TIME - summaryViewModel.endHr.setValue("23"); - summaryViewModel.endMin.setValue("59"); +// summaryViewModel.endHr.setValue("23"); +// summaryViewModel.endMin.setValue("59"); summaryViewModel.endDayOrNight.setValue(getString(R.string.txt_pm)); // LogUtil.d(TAG, "End date updated: " + selectedDate); } @@ -471,39 +473,92 @@ public class TransactionSummaryFragment extends DataBindingFragment { } public void onClickStartHr() { - showTimePicker(startTime, myCalendar); +// showTimePicker(startTime, myCalendar); + showMaterialTimePicker(myCalendar, true); } public void onClickEndHr() { - showTimePicker(endTime, myCalendar2); +// showTimePicker(endTime, myCalendar2); + showMaterialTimePicker(myCalendar2, false); } public void onClickStartMin() { - showTimePicker(startTime, myCalendar); +// showTimePicker(startTime, myCalendar); + showMaterialTimePicker(myCalendar, true); } public void onClickEndMin() { - showTimePicker(endTime, myCalendar2); +// showTimePicker(endTime, myCalendar2); + showMaterialTimePicker(myCalendar2, false); } public void onClickStartDayOrNight() { - showTimePicker(startTime, myCalendar); +// showTimePicker(startTime, myCalendar); + showMaterialTimePicker(myCalendar, true); } public void onClickEndDayOrNight() { - showTimePicker(endTime, myCalendar2); +// showTimePicker(endTime, myCalendar2); + showMaterialTimePicker(myCalendar2, false); } private void showTimePicker(TimePickerDialog.OnTimeSetListener listener, Calendar calendar) { try { - TimePickerDialog timePickerDialog = new TimePickerDialog(requireContext(), - listener, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false); + TimePickerDialog timePickerDialog = + new TimePickerDialog( + requireContext(), + listener, + calendar.get(Calendar.HOUR_OF_DAY), + calendar.get(Calendar.MINUTE), + false); + timePickerDialog.show(); } catch (Exception e) { LogUtil.e(TAG, "Error showing time picker: " + e.getMessage()); } } + private void showMaterialTimePicker( + Calendar calendar, + boolean isStart + ) { + MaterialTimePicker timePicker = new MaterialTimePicker.Builder() + .setTimeFormat(TimeFormat.CLOCK_24H) + .setHour(calendar.get(Calendar.HOUR_OF_DAY)) + .setMinute(calendar.get(Calendar.MINUTE)) + .setInputMode(MaterialTimePicker.INPUT_MODE_KEYBOARD) + .setTitleText("Select Time") + .build(); + + timePicker.addOnPositiveButtonClickListener(v -> { + int hour = timePicker.getHour(); + int minute = timePicker.getMinute(); + + calendar.set(Calendar.HOUR_OF_DAY, hour); + calendar.set(Calendar.MINUTE, minute); + + String amPm = hour >= 12 + ? getString(R.string.txt_pm) + : getString(R.string.txt_am); + + if (isStart) { + summaryViewModel.startHr.setValue(String.format(Locale.getDefault(), "%02d", hour)); + summaryViewModel.startMin.setValue(String.format(Locale.getDefault(), "%02d", minute)); + summaryViewModel.startDayOrNight.setValue(amPm); + } else { + summaryViewModel.endHr.setValue(String.format(Locale.getDefault(), "%02d", hour)); + summaryViewModel.endMin.setValue(String.format(Locale.getDefault(), "%02d", minute)); + summaryViewModel.endDayOrNight.setValue(amPm); + } + + LogUtil.d(TAG, (isStart ? "Start" : "End") + + " time selected: " + hour + ":" + minute); + }); + + timePicker.show(getParentFragmentManager(), "material_time_picker"); + } + + public void onPrint() { try { if (summaryViewModel.validateField()) { diff --git a/app/src/main/res/layout/fragment_transaction_summary_screen.xml b/app/src/main/res/layout/fragment_transaction_summary_screen.xml index 5124eea..1149d0a 100644 --- a/app/src/main/res/layout/fragment_transaction_summary_screen.xml +++ b/app/src/main/res/layout/fragment_transaction_summary_screen.xml @@ -189,7 +189,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:visibility="gone" + android:visibility="visible" android:gravity="center"> @@ -406,7 +406,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:visibility="gone" + android:visibility="visible" android:gravity="center"> @@ -540,7 +540,7 @@ app:layout_constraintStart_toStartOf="parent"> -