diff --git a/.idea/fileTemplates/Android Dialog.java b/.idea/fileTemplates/Android Dialog.java index 452a0f27..a47314d9 100644 --- a/.idea/fileTemplates/Android Dialog.java +++ b/.idea/fileTemplates/Android Dialog.java @@ -122,5 +122,10 @@ Create the following layout resource file [dialog_${dashName}.xml] alertDialog.setOnShowListener(this); return alertDialog; } + + @Override + public void dismiss() { + if(getDialog() != null) getDialog().dismiss(); + } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 4a4d6aed..758f5e87 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -116,6 +116,10 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModu import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaComponent; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule; +import it.integry.integrywmsnative.view.dialogs.ask_livello_posizione.DialogAskLivelloPosizioneComponent; +import it.integry.integrywmsnative.view.dialogs.ask_livello_posizione.DialogAskLivelloPosizioneModule; +import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUComponent; +import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUModule; import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent; import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule; import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreComponent; @@ -233,7 +237,9 @@ import it.integry.integrywmsnative.view.dialogs.update_available.DialogUpdateAva DialogAskVettoreModule.class, DialogCreateNewArtModule.class, DialogSwitchUserDepoModule.class, - DialogUpdateAvailableModule.class + DialogUpdateAvailableModule.class, + DialogAskPositionOfLUModule.class, + DialogAskLivelloPosizioneModule.class }) public interface MainApplicationComponent { @@ -392,6 +398,11 @@ public interface MainApplicationComponent { DialogUpdateAvailableComponent.Factory dialogUpdateAvailableComponent(); + DialogAskPositionOfLUComponent.Factory dialogAskPositionOfLUComponent(); + + DialogAskLivelloPosizioneComponent.Factory dialogAskLivelloPosizioneComponent(); + + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaFragment.java index 6bb6d754..3832ac9d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaFragment.java @@ -99,7 +99,7 @@ public class ArticoliInGiacenzaFragment extends BaseFragment implements ITitledF } private void choosePosition(RunnableArgs onComplete) { - DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLUView.newInstance(false, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { popMe(); @@ -107,7 +107,7 @@ public class ArticoliInGiacenzaFragment extends BaseFragment implements ITitledF onComplete.run(mtbDepoPosizione); } - }, this::onError) + }) .show(requireActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java index 8f7e2ebb..753c9614 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java @@ -252,7 +252,7 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements }; private void choosePosition(RunnableArgs onComplete) { - DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLUView.newInstance(false, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { popMe(); @@ -260,7 +260,7 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements onComplete.run(mtbDepoPosizione); } - }, this::onError) + }) .show(requireActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java index a73843a7..4c9f2df4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java @@ -224,7 +224,7 @@ public class ProdVersamentoMaterialeFragment extends BaseFragment implements Pro // } private void choosePosition(RunnableArgs onComplete) { - DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLUView.newInstance(false, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { popMe(); @@ -232,7 +232,7 @@ public class ProdVersamentoMaterialeFragment extends BaseFragment implements Pro onComplete.run(mtbDepoPosizione); } - }, this::onError) + }) .show(requireActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale_su_mag_prossimita/ProdVersamentoMaterialeInBufferFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale_su_mag_prossimita/ProdVersamentoMaterialeInBufferFragment.java index 77789eeb..89af359c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale_su_mag_prossimita/ProdVersamentoMaterialeInBufferFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale_su_mag_prossimita/ProdVersamentoMaterialeInBufferFragment.java @@ -95,7 +95,7 @@ public class ProdVersamentoMaterialeInBufferFragment extends BaseFragment implem private void choosePosition() { - DialogAskPositionOfLUView.makeBase(true, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLUView.newInstance(true, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { popMe(); @@ -105,7 +105,7 @@ public class ProdVersamentoMaterialeInBufferFragment extends BaseFragment implem }); } - }, this::onError) + }) .show(requireActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index f71df24c..43aad056 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -531,7 +531,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr DialogYesNoView.newInstance(null, "Vuoi cambiare la posizione della UL corrente?", result -> { switch (result) { case YES: - DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLUView.newInstance(false, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { onComplete.run(false, null); } else { @@ -541,7 +541,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr onComplete.run(true, null); } } - }, this::onError) + }) .show(requireActivity().getSupportFragmentManager(), "tag"); break; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 3f184b63..be11478c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -1035,13 +1035,13 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo DialogYesNoView.newInstance(null, "Vuoi cambiare la posizione della UL corrente?", result -> { switch (result) { case YES: - DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLUView.newInstance(false, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { onComplete.run(false, null); } else { onComplete.run(true, mtbDepoPosizione); } - }, this::onError).show(getSupportFragmentManager(), "tag"); + }).show(getSupportFragmentManager(), "tag"); break; case NO: diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java index 06fea57a..f9afe54a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.versamento_merce; import android.content.Context; import android.os.Bundle; +import android.os.Handler; import android.text.Html; import android.text.SpannableString; import android.view.LayoutInflater; @@ -34,8 +35,8 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentMainVersamentoMerceBinding; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; -import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione; import it.integry.integrywmsnative.view.dialogs.DialogCommon; +import it.integry.integrywmsnative.view.dialogs.ask_livello_posizione.DialogAskLivelloPosizioneView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; @@ -51,6 +52,9 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag @Inject DialogInputQuantityV2View mDialogInputQuantityV2View; + @Inject + Handler handler; + private FragmentMainVersamentoMerceBinding mBindings = null; private final List mOnPreDestroyList = new ArrayList<>(); @@ -151,25 +155,26 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag @Override public void onLivelloPosizioneRequired(MtbDepoPosizione posizione, RunnableArgs onComplete) { - this.getActivity().runOnUiThread(() -> { - DialogAskLivelloPosizione.make(getActivity(), posizione, false, onComplete, this::onError); + handler.post(() -> { + DialogAskLivelloPosizioneView.newInstance(posizione, false, onComplete, this::onError) + .show(requireActivity().getSupportFragmentManager(), "ask-livello-posizione"); }); } @Override public void onSpostamentoTraDepConfirmRequired(String sourceCodMdep, String destinationCodMdep, RunnableArgs onComplete) { - this.getActivity().runOnUiThread(() -> { + handler.post(() -> { DialogSimpleMessageView.makeWarningDialog(Html.fromHtml("Stai spostando una UL dal deposito " + sourceCodMdep + " al deposito " + destinationCodMdep + ""), null, () -> onComplete.run(true), () -> onComplete.run(false)) - .show(getActivity().getSupportFragmentManager(), "tag"); + .show(requireActivity().getSupportFragmentManager(), "tag"); }); } @Override public void onArtsChooseRequired(List mtbColrList, RunnableArgs> onComplete, Runnable onAbort) { - this.requireActivity().runOnUiThread(() -> { + handler.post(() -> { DialogChooseArtsFromMtbColrList .newInstance(mtbColrList, data -> { if(data == null || data.isEmpty()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskLivelloPosizione.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskLivelloPosizione.java deleted file mode 100644 index 5cd598e0..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskLivelloPosizione.java +++ /dev/null @@ -1,162 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs; - -import android.app.Dialog; -import android.content.Context; - -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; - -import androidx.fragment.app.FragmentActivity; - -import com.google.android.material.textfield.TextInputLayout; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbDepoPosizione; -import it.integry.integrywmsnative.core.utility.UtilityDialog; -import it.integry.integrywmsnative.core.utility.UtilityFocus; -import it.integry.integrywmsnative.core.utility.UtilityPosizione; - -public class DialogAskLivelloPosizione { - - - private Context mContext; - private MtbDepoPosizione mtbDepoPosizione; - - private Dialog mDialog; - - private RunnableArgs onComplete; - private RunnableArgs onFailed; - - private TextInputLayout livelloTextInputLayout; - - private boolean completedFLow = false; - - public static void make(FragmentActivity activity, MtbDepoPosizione mtbDepoPosizione, boolean canAbort, RunnableArgs onComplete, RunnableArgs onFailed) { - activity.runOnUiThread(() -> { - new DialogAskLivelloPosizione(activity, mtbDepoPosizione, canAbort, onComplete, onFailed).mDialog.show(); - }); - } - - - - public DialogAskLivelloPosizione(Context context, MtbDepoPosizione mtbDepoPosizione, boolean canAbort, RunnableArgs onComplete, RunnableArgs onFailed) { - mContext = context; - this.mtbDepoPosizione = mtbDepoPosizione; - this.onComplete = onComplete; - this.onFailed = onFailed; - - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - View currentView = inflater.inflate(R.layout.dialog_ask_livello_of_position, null, false); - - mDialog = new Dialog(mContext); - mDialog.setContentView(currentView); - mDialog.setCanceledOnTouchOutside(false); - mDialog.setCancelable(false); - mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - UtilityDialog.setTo90PercentWidth(mContext, mDialog); - - mDialog.setOnDismissListener(dialog -> { - if(!completedFLow) onComplete.run(null); - }); - - mDialog.setOnShowListener(dialog -> { - - if(!canAbort) currentView.findViewById(R.id.button_abort).setVisibility(View.GONE); - - - currentView.findViewById(R.id.button_confirm).setOnClickListener(v -> { - String levelNumber = ((TextView)currentView.findViewById(R.id.level_number)).getText().toString(); - onLevelConfirm(levelNumber); - }); - - currentView.findViewById(R.id.button_abort).setOnClickListener(v -> { - onLevelAbort(); - }); - - livelloTextInputLayout = currentView.findViewById(R.id.level_number_layout); - - - UtilityFocus.focusTextBox(mContext, livelloTextInputLayout.getEditText()); - livelloTextInputLayout.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - if(livelloTextInputLayout.getEditText().getText() != null) { - validateLevel(livelloTextInputLayout.getEditText().getText().toString()); - } else resetLevelError(); - } - - @Override - public void afterTextChanged(Editable s) { - - } - }); - - }); - - - } - - - private void onLevelConfirm(String levelString) { - - String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1); - newPosizione += levelString; - - MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(newPosizione); - - if(foundPosizione != null) { - resetLevelError(); - - completedFLow = true; - onComplete.run(foundPosizione); - mDialog.dismiss(); - - - } else { - setLevelError(mContext.getResources().getString(R.string.not_valid)); - } - } - - - private void validateLevel(String levelString) { - String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1); - newPosizione += levelString; - - if(UtilityPosizione.getFromCache(newPosizione) != null) { - resetLevelError(); - } else setLevelError(mContext.getResources().getString(R.string.not_valid)); - } - - private void setLevelError(String message){ - livelloTextInputLayout.setErrorEnabled(true); - livelloTextInputLayout.setError(message); - livelloTextInputLayout.setErrorIconDrawable(null); - } - - private void resetLevelError() { - livelloTextInputLayout.setError(null); - } - - - private void onLevelAbort() { - completedFLow = true; - onComplete.run(null); - mDialog.dismiss(); - } - - -} - - diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneComponent.java new file mode 100644 index 00000000..b3876750 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.ask_livello_posizione; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogAskLivelloPosizioneComponent { + + @Subcomponent.Factory + interface Factory { + DialogAskLivelloPosizioneComponent create(); + } + + void inject(DialogAskLivelloPosizioneView dialogAskLivelloPosizioneView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneModule.java new file mode 100644 index 00000000..dc220be8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.ask_livello_posizione; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogAskLivelloPosizioneComponent.class) +public class DialogAskLivelloPosizioneModule { + + @Provides + DialogAskLivelloPosizioneViewModel providesDialogAskLivelloPosizioneViewModel() { + return new DialogAskLivelloPosizioneViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneView.java new file mode 100644 index 00000000..f91b0b95 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneView.java @@ -0,0 +1,177 @@ +package it.integry.integrywmsnative.view.dialogs.ask_livello_posizione; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import javax.inject.Inject; + +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.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.utility.UtilityFocus; +import it.integry.integrywmsnative.core.utility.UtilityPosizione; +import it.integry.integrywmsnative.databinding.DialogAskLivelloPosizioneBinding; + +public class DialogAskLivelloPosizioneView extends BaseDialogFragment { + + @Inject + DialogAskLivelloPosizioneViewModel mViewModel; + + private MtbDepoPosizione mtbDepoPosizione; + + private boolean canAbort; + private RunnableArgs onComplete; + private RunnableArgs onFailed; + + private DialogAskLivelloPosizioneBinding mBindings; + private Context mContext; + + private boolean completedFLow = false; + + //Pass here all external parameters + public static DialogAskLivelloPosizioneView newInstance(MtbDepoPosizione mtbDepoPosizione, boolean canAbort, RunnableArgs onComplete, RunnableArgs onFailed) { + return new DialogAskLivelloPosizioneView(mtbDepoPosizione, canAbort, onComplete, onFailed); + } + + private DialogAskLivelloPosizioneView(MtbDepoPosizione mtbDepoPosizione, boolean canAbort, RunnableArgs onComplete, RunnableArgs onFailed) { + super(); + + this.mtbDepoPosizione = mtbDepoPosizione; + this.onComplete = onComplete; + this.onFailed = onFailed; + this.canAbort = canAbort; + + MainApplication.appComponent + .dialogAskLivelloPosizioneComponent() + .create() + .inject(this); + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogAskLivelloPosizioneBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + setCancelable(false); + + var alertDialogBuilder = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(isCancelable()) + .setPositiveButton(R.string.confirm, (dialogInterface, i) -> { + String levelNumber = mBindings.levelNumber.getText().toString(); + onLevelConfirm(levelNumber); + }); + + if (canAbort) + alertDialogBuilder.setNeutralButton(R.string.abort, ((dialogInterface, i) -> { + onLevelAbort(); + })); + + var alertDialog = alertDialogBuilder.create(); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + return alertDialog; + } + + @Override + public void dismiss() { + if (getDialog() != null) getDialog().dismiss(); + } + + @Override + public void onShow(DialogInterface dialogInterface) { + + UtilityFocus.focusTextBox(mContext, mBindings.levelNumberLayout.getEditText()); + mBindings.levelNumberLayout.getEditText().addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (mBindings.levelNumberLayout.getEditText().getText() != null) { + validateLevel(mBindings.levelNumberLayout.getEditText().getText().toString()); + } else resetLevelError(); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + super.onDismiss(dialog); + + if(!completedFLow) onComplete.run(null); + } + + + private void onLevelConfirm(String levelString) { + + String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length() - 1); + newPosizione += levelString; + + MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(newPosizione); + + if (foundPosizione != null) { + resetLevelError(); + + completedFLow = true; + onComplete.run(foundPosizione); + dismiss(); + + + } else { + setLevelError(mContext.getResources().getString(R.string.not_valid)); + } + } + + + private void validateLevel(String levelString) { + String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length() - 1); + newPosizione += levelString; + + if (UtilityPosizione.getFromCache(newPosizione) != null) { + resetLevelError(); + } else setLevelError(mContext.getResources().getString(R.string.not_valid)); + } + + private void setLevelError(String message) { + mBindings.levelNumberLayout.setErrorEnabled(true); + mBindings.levelNumberLayout.setError(message); + mBindings.levelNumberLayout.setErrorIconDrawable(null); + } + + private void resetLevelError() { + mBindings.levelNumberLayout.setError(null); + } + + + private void onLevelAbort() { + completedFLow = true; + onComplete.run(null); + dismiss(); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneViewModel.java new file mode 100644 index 00000000..608ceaf3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_livello_posizione/DialogAskLivelloPosizioneViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.view.dialogs.ask_livello_posizione; + +public class DialogAskLivelloPosizioneViewModel { + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUComponent.java new file mode 100644 index 00000000..73dbbc57 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.ask_position_of_lu; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogAskPositionOfLUComponent { + + @Subcomponent.Factory + interface Factory { + DialogAskPositionOfLUComponent create(); + } + + void inject(DialogAskPositionOfLUView dialogAskPositionOfLUView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUModule.java new file mode 100644 index 00000000..12d1cb38 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.ask_position_of_lu; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogAskPositionOfLUComponent.class) +public class DialogAskPositionOfLUModule { + + @Provides + DialogAskPositionOfLUViewModel providesDialogAskPositionOfLUViewModel() { + return new DialogAskPositionOfLUViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUView.java index c5493af8..ee0f31c6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUView.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.view.dialogs.ask_position_of_lu; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.text.Editable; @@ -20,7 +21,10 @@ import com.google.android.material.textfield.TextInputLayout; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; @@ -33,41 +37,49 @@ import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.databinding.DialogAskPositionOfLuBinding; import it.integry.integrywmsnative.view.dialogs.DialogConsts; -public class DialogAskPositionOfLUView extends BaseDialogFragment implements DialogInterface.OnShowListener { +public class DialogAskPositionOfLUView extends BaseDialogFragment { + + + @Inject + DialogAskPositionOfLUViewModel mViewModel; private DialogAskPositionOfLuBinding mBindings; private DialogAskPositionOfLUAdapter viewpagerAdapter; + private Context mContext; private int mBarcodeScannerInstanceID; - private boolean mCheckForLineaProd; - private MtbDepoPosizione currentMtbDepoPosizione; - private RunnableArgss onComplete; - private RunnableArgs onFailed; - - private TextInputLayout livelloTextInputLayout; + private boolean mCheckForLineaProd = false; + private RunnableArgss onComplete = null; private boolean completedFlow = false; + private TextInputLayout livelloTextInputLayout; - public static DialogAskPositionOfLUView makeBase(boolean checkForLineaProd, RunnableArgss onComplete, RunnableArgs onFailed) { - return new DialogAskPositionOfLUView(checkForLineaProd, onComplete, onFailed); + //Pass here all external parameters + public static DialogAskPositionOfLUView newInstance(boolean checkForLineaProd, RunnableArgss onComplete) { + return new DialogAskPositionOfLUView(checkForLineaProd, onComplete); } - private DialogAskPositionOfLUView(boolean checkForLineaProd, RunnableArgss onComplete, RunnableArgs onFailed) { + private DialogAskPositionOfLUView(boolean checkForLineaProd, RunnableArgss onComplete) { super(); this.mCheckForLineaProd = checkForLineaProd; this.onComplete = onComplete; - this.onFailed = onFailed; + + MainApplication.appComponent + .dialogAskPositionOfLUComponent() + .create() + .inject(this); } + @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { - this.initBarcode(); + this.mContext = requireContext(); - mBindings = DialogAskPositionOfLuBinding.inflate(LayoutInflater.from(requireActivity()), null, false); + mBindings = DialogAskPositionOfLuBinding.inflate(LayoutInflater.from(this.mContext), null, false); mBindings.setLifecycleOwner(this); List views = new ArrayList<>(); @@ -78,11 +90,16 @@ public class DialogAskPositionOfLUView extends BaseDialogFragment implements Dia mBindings.viewpager.setAdapter(viewpagerAdapter); mBindings.viewpager.beginFakeDrag(); - var alertDialog = new MaterialAlertDialogBuilder(requireContext()) + this.initBarcode(); + + setCancelable(false); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) .setView(mBindings.getRoot()) - .setCancelable(false) + .setCancelable(isCancelable()) .create(); - alertDialog.setCanceledOnTouchOutside(false); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); alertDialog.setOnShowListener(this); return alertDialog; } @@ -97,6 +114,11 @@ public class DialogAskPositionOfLUView extends BaseDialogFragment implements Dia } } + @Override + public void dismiss() { + if (getDialog() != null) getDialog().dismiss(); + } + @Override public void onShow(DialogInterface dialog) { ((AppCompatTextView) viewpagerAdapter.getPage(0) @@ -146,7 +168,7 @@ public class DialogAskPositionOfLUView extends BaseDialogFragment implements Dia .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(this::onError)); - BarcodeManager.enable(mBarcodeScannerInstanceID); + BarcodeManager.enable(); } @Override @@ -158,7 +180,7 @@ public class DialogAskPositionOfLUView extends BaseDialogFragment implements Dia private final RunnableArgs onScanSuccessfull = data -> { - BarcodeManager.disable(mBarcodeScannerInstanceID); + BarcodeManager.disable(); if (!isOnLivelloPage()) { @@ -169,11 +191,11 @@ public class DialogAskPositionOfLUView extends BaseDialogFragment implements Dia if (!mCheckForLineaProd && !currentMtbDepoPosizione.isFlagLineaProduzione() && UtilityPosizione.isPosizioneWithLivello(foundPosizione)) { askLivello(); - BarcodeManager.enable(mBarcodeScannerInstanceID); + BarcodeManager.enable(); } else { completedFlow = true; - BarcodeManager.enable(mBarcodeScannerInstanceID); + BarcodeManager.enable(); if (onComplete != null) onComplete.run(DialogConsts.Results.YES, foundPosizione); @@ -181,14 +203,14 @@ public class DialogAskPositionOfLUView extends BaseDialogFragment implements Dia } } else { - BarcodeManager.enable(mBarcodeScannerInstanceID); + BarcodeManager.enable(); Toast.makeText(requireContext(), "Barcode non riconosciuto", Toast.LENGTH_SHORT) .show(); } } else { Toast.makeText(requireContext(), "Barcode non riconosciuto", Toast.LENGTH_SHORT) .show(); - BarcodeManager.enable(mBarcodeScannerInstanceID); + BarcodeManager.enable(); } }; @@ -237,4 +259,5 @@ public class DialogAskPositionOfLUView extends BaseDialogFragment implements Dia onComplete.run(DialogConsts.Results.ABORT, null); dismiss(); } -} + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUViewModel.java new file mode 100644 index 00000000..2ed9b2cb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.view.dialogs.ask_position_of_lu; + +public class DialogAskPositionOfLUViewModel { + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java index 5a47ae4a..15ac4692 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java @@ -109,15 +109,22 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial .setView(mBindings.getRoot()) .setCancelable(isCancelable()) .create(); - alertDialog.setCanceledOnTouchOutside(false); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); alertDialog.setOnShowListener(this); + alertDialog.setOnDismissListener(this); + return alertDialog; } + @Override + public void dismiss() { + if(getDialog() != null) getDialog().dismiss(); + } + @Override public void onDismiss(@NonNull DialogInterface dialog) { BarcodeManager.removeCallback(mBarcodeScannerInstanceID); - BarcodeManager.enable(mBarcodeScannerInstanceID); if (openedMtbColt == null) { mOnComplete.run(null, false); } @@ -125,11 +132,13 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial } + + private void initBarcode() { mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(this::onError)); - BarcodeManager.enable(mBarcodeScannerInstanceID); + BarcodeManager.enable(); setBarcodeListener(true); } @@ -165,6 +174,7 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial public void onLUOpened(MtbColt mtbColt, boolean created) { this.openedMtbColt = mtbColt; mOnComplete.run(mtbColt, created); + dismiss(); } diff --git a/app/src/main/res/layout/dialog_ask_livello_of_position.xml b/app/src/main/res/layout/dialog_ask_livello_of_position.xml deleted file mode 100644 index f1e13a5d..00000000 --- a/app/src/main/res/layout/dialog_ask_livello_of_position.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_livello_posizione.xml b/app/src/main/res/layout/dialog_ask_livello_posizione.xml new file mode 100644 index 00000000..3f5c99ec --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_livello_posizione.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_position_of_lu.xml b/app/src/main/res/layout/dialog_ask_position_of_lu.xml index 7bb7f200..6900bba1 100644 --- a/app/src/main/res/layout/dialog_ask_position_of_lu.xml +++ b/app/src/main/res/layout/dialog_ask_position_of_lu.xml @@ -1,11 +1,5 @@ - - - - - - - \ No newline at end of file