timePicker added

This commit is contained in:
MooN 2026-02-03 22:21:15 +06:30
parent 7346bae086
commit caf656be60
3 changed files with 72 additions and 17 deletions

View File

@ -5,6 +5,8 @@ import android.app.TimePickerDialog;
import androidx.lifecycle.Observer; 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.nexgo.oaf.apiv3.SdkResult;
import com.utsmyanmar.baselib.fragment.DataBindingFragment; import com.utsmyanmar.baselib.fragment.DataBindingFragment;
import com.utsmyanmar.baselib.util.DataBindingConfig; import com.utsmyanmar.baselib.util.DataBindingConfig;
@ -155,15 +157,15 @@ public class TransactionSummaryFragment extends DataBindingFragment {
summaryViewModel.startDate.postValue(selectedDate); summaryViewModel.startDate.postValue(selectedDate);
// LogUtil.d(TAG, "Start date updated: " + selectedDate); // LogUtil.d(TAG, "Start date updated: " + selectedDate);
// STATIC START TIME // STATIC START TIME
summaryViewModel.startHr.setValue("00"); // summaryViewModel.startHr.setValue("00");
summaryViewModel.startMin.setValue("00"); // summaryViewModel.startMin.setValue("00");
summaryViewModel.startDayOrNight.setValue(getString(R.string.txt_am)); summaryViewModel.startDayOrNight.setValue(getString(R.string.txt_am));
} else { } else {
String selectedDate = dateFormat.format(myCalendar2.getTime()); String selectedDate = dateFormat.format(myCalendar2.getTime());
summaryViewModel.endDate.postValue(selectedDate); summaryViewModel.endDate.postValue(selectedDate);
// STATIC END TIME // STATIC END TIME
summaryViewModel.endHr.setValue("23"); // summaryViewModel.endHr.setValue("23");
summaryViewModel.endMin.setValue("59"); // summaryViewModel.endMin.setValue("59");
summaryViewModel.endDayOrNight.setValue(getString(R.string.txt_pm)); summaryViewModel.endDayOrNight.setValue(getString(R.string.txt_pm));
// LogUtil.d(TAG, "End date updated: " + selectedDate); // LogUtil.d(TAG, "End date updated: " + selectedDate);
} }
@ -471,39 +473,92 @@ public class TransactionSummaryFragment extends DataBindingFragment {
} }
public void onClickStartHr() { public void onClickStartHr() {
showTimePicker(startTime, myCalendar); // showTimePicker(startTime, myCalendar);
showMaterialTimePicker(myCalendar, true);
} }
public void onClickEndHr() { public void onClickEndHr() {
showTimePicker(endTime, myCalendar2); // showTimePicker(endTime, myCalendar2);
showMaterialTimePicker(myCalendar2, false);
} }
public void onClickStartMin() { public void onClickStartMin() {
showTimePicker(startTime, myCalendar); // showTimePicker(startTime, myCalendar);
showMaterialTimePicker(myCalendar, true);
} }
public void onClickEndMin() { public void onClickEndMin() {
showTimePicker(endTime, myCalendar2); // showTimePicker(endTime, myCalendar2);
showMaterialTimePicker(myCalendar2, false);
} }
public void onClickStartDayOrNight() { public void onClickStartDayOrNight() {
showTimePicker(startTime, myCalendar); // showTimePicker(startTime, myCalendar);
showMaterialTimePicker(myCalendar, true);
} }
public void onClickEndDayOrNight() { public void onClickEndDayOrNight() {
showTimePicker(endTime, myCalendar2); // showTimePicker(endTime, myCalendar2);
showMaterialTimePicker(myCalendar2, false);
} }
private void showTimePicker(TimePickerDialog.OnTimeSetListener listener, Calendar calendar) { private void showTimePicker(TimePickerDialog.OnTimeSetListener listener, Calendar calendar) {
try { try {
TimePickerDialog timePickerDialog = new TimePickerDialog(requireContext(), TimePickerDialog timePickerDialog =
listener, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false); new TimePickerDialog(
requireContext(),
listener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
false);
timePickerDialog.show(); timePickerDialog.show();
} catch (Exception e) { } catch (Exception e) {
LogUtil.e(TAG, "Error showing time picker: " + e.getMessage()); 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() { public void onPrint() {
try { try {
if (summaryViewModel.validateField()) { if (summaryViewModel.validateField()) {

View File

@ -189,7 +189,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone" android:visibility="visible"
android:gravity="center"> android:gravity="center">
<!-- Hour --> <!-- Hour -->
@ -406,7 +406,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone" android:visibility="visible"
android:gravity="center"> android:gravity="center">
<!-- Hour --> <!-- Hour -->
@ -540,7 +540,7 @@
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">
<!-- Cancel Button --> <!-- Cancel Button -->
<Button <androidx.appcompat.widget.AppCompatButton
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="52dp" android:layout_height="52dp"
android:layout_weight="1" android:layout_weight="1"

View File

@ -2,7 +2,7 @@
<resources> <resources>
<!-- Base application theme. --> <!-- Base application theme. -->
<!-- DarkActionBar--> <!-- DarkActionBar-->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">--> <!-- <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">-->
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
@ -25,7 +25,7 @@
<item name="iconTint">@color/white</item> <item name="iconTint">@color/white</item>
</style> </style>
<style name="DefaultDialogStyle" parent="android:Theme.Holo.Light.Dialog"> <style name="DefaultDialogStyle" parent="Theme.MaterialComponents.Light.Dialog">
<item name="android:windowFrame">@null</item> <item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item> <item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item> <item name="android:windowIsFloating">true</item>