diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java index 089702ba..d36e21a0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.di; import android.app.DatePickerDialog; import android.content.res.ColorStateList; +import android.text.SpannableString; import android.util.Log; import android.view.View; import android.widget.AutoCompleteTextView; @@ -37,11 +38,13 @@ import java.util.Locale; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class Converters { @@ -244,8 +247,8 @@ public class Converters { } } - @BindingAdapter({"binding"}) - public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField observableDate) { + @BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false) + public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) { Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable); if (pair == null || pair.first != observableDate) { if (pair != null) { @@ -274,8 +277,20 @@ public class Converters { DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(), (cView, year, month, day) -> { Date resultDate = new GregorianCalendar(year, month, day).getTime(); - view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - observableDate.set(resultDate); + + if(parentFragment != null && warningOnOldDates && resultDate.before(new Date())) { + DialogSimpleMessageView + .makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> { + view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + observableDate.set(resultDate); + }, () -> { + + }) + .show(parentFragment.requireActivity().getSupportFragmentManager(), "tag"); + } else { + view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + observableDate.set(resultDate); + } }, mYear, mMonth, mDay); datePickerDialog.show(); }; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java index dbae356b..7ede3676 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java @@ -2,12 +2,15 @@ package it.integry.integrywmsnative.core.expansion; import android.app.Dialog; import android.os.Bundle; +import android.util.Log; import android.view.KeyEvent; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -23,6 +26,17 @@ public class BaseDialogFragment extends DialogFragment { } + @Override + public void show(FragmentManager manager, String tag) { + try { + FragmentTransaction ft = manager.beginTransaction(); + ft.add(this, tag); + ft.commit(); + } catch (IllegalStateException e) { + Log.d("ABSDIALOGFRAG", "Exception", e); + } + } + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 82353801..f1abc006 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -365,6 +365,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public void onError(Exception ex) { DialogSimpleMessageView .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) - .show(getActivity().getSupportFragmentManager(), "tag"); + .show(requireActivity().getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml index b259e83f..dfb091da 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml @@ -442,7 +442,9 @@ android:focusableInTouchMode="false" android:hint="@string/expire_date" android:inputType="text" - app:binding="@{view.currentDataScad}" /> + app:binding="@{view.currentDataScad}" + app:parentView="@{view}" + app:warningOnOldDates="@{true}" /> diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index b330b509..6d147a83 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -436,6 +436,8 @@ android:hint="@string/expire_date" android:focusableInTouchMode="false" app:binding="@{view.currentDataScad}" + app:warningOnOldDates="@{true}" + app:parentView="@{view}" android:inputType="text" />