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 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()) {

View File

@ -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">
<!-- Hour -->
@ -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">
<!-- Hour -->
@ -540,7 +540,7 @@
app:layout_constraintStart_toStartOf="parent">
<!-- Cancel Button -->
<Button
<androidx.appcompat.widget.AppCompatButton
android:layout_width="0dp"
android:layout_height="52dp"
android:layout_weight="1"

View File

@ -2,7 +2,7 @@
<resources>
<!-- Base application theme. -->
<!-- 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">-->
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
@ -25,7 +25,7 @@
<item name="iconTint">@color/white</item>
</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:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>