diff --git a/app/build.gradle b/app/build.gradle index 01280859..cadf3583 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 491 - def appVersionName = '1.46.03' + def appVersionCode = 493 + def appVersionName = '1.46.05' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 7e32be22..c7116656 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -132,6 +132,8 @@ import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUComponen import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUModule; import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent; import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule; +import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsComponent; +import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListComponent; @@ -248,7 +250,8 @@ import it.integry.integrywmsnative.view.dialogs.update_available.DialogUpdateAva DialogAskLivelloPosizioneModule.class, VerificaGiacenzeModule.class, DialogExtraInfoModule.class, - DialogAskDepositoModule.class + DialogAskDepositoModule.class, + DialogChooseArtFromListaArtsModule.class }) public interface MainApplicationComponent { @@ -417,6 +420,8 @@ public interface MainApplicationComponent { DialogAskDepositoComponent.Factory dialogAskDepositoComponent(); + DialogChooseArtFromListaArtsComponent.Factory dialogChooseArtFromListaArtsComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index 1acacb2f..141958e0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -4,6 +4,8 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; +import android.os.Handler; +import android.text.InputType; import android.text.SpannableString; import androidx.databinding.DataBindingUtil; @@ -51,6 +53,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.DialogConsts; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; @@ -68,6 +71,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Inject DialogInputQuantityV2View mDialogInputQuantityV2View; + @Inject + Handler handler; + private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; private ObservableArrayList mPickingResiMutableData = new ObservableArrayList<>(); @@ -250,10 +256,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag public void createNewLU() { this.mBindings.mainFab.close(true); this.onLoadingStarted(); - - this.mViewmodel.createNewLU(null, null, () -> { - this.onLoadingEnded(); - }); + this.mViewmodel.createNewLU(null, null, this::onLoadingEnded); } public void removeListFilter() { @@ -333,7 +336,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag mDialogInputQuantityV2View .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) .setOnComplete(resultDTO -> { - if(resultDTO == null || resultDTO.isAborted()) { + if (resultDTO == null || resultDTO.isAborted()) { this.mViewmodel.resetMatchedRows(); return; } @@ -369,7 +372,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Override public void onRowSaved() { Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT) - .setBackgroundTint(getResources().getColor(R. color. green_500)) + .setBackgroundTint(getResources().getColor(R.color.green_500)) .show(); } @@ -385,21 +388,25 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Override public void onLUOpened(MtbColt mtbColt) { - noLUPresent.set(false); + handler.post(() -> { + noLUPresent.set(false); - Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT) - .setBackgroundTint(getResources().getColor(R. color. green_500)) - .show(); + Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT) + .setBackgroundTint(getResources().getColor(R.color.green_500)) + .show(); - this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt); + this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt); + }); } @Override public void onLUClosed() { - noLUPresent.set(true); - this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null); + handler.post(() -> { + noLUPresent.set(true); + this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null); - if (this.mShouldCloseActivity) super.onBackPressed(); + if (this.mShouldCloseActivity) super.onBackPressed(); + }); } @Override 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 bc1002d7..749b2792 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 @@ -329,8 +329,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr @Override public void onArtListLoaded(ArrayList artList, RunnableArgs onArtChoosed) { - new DialogChooseArtFromListaArtsView(true, artList, onArtChoosed) - .show(requireActivity().getSupportFragmentManager(), "tag"); + DialogChooseArtFromListaArtsView.newInstance(true, artList, onArtChoosed) + .show(requireActivity().getSupportFragmentManager(), "dialog-choose-art"); } @Override 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 29c43d92..70b10dee 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 @@ -1173,8 +1173,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Override public void onChooseArtRequest(List artsList, RunnableArgs onComplete) { - new DialogChooseArtFromListaArtsView(true, artsList, onComplete) - .show(getSupportFragmentManager(), "tag"); + DialogChooseArtFromListaArtsView.newInstance(true, artsList, onComplete) + .show(getSupportFragmentManager(), "dialog-choose-art"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index 6f4508c5..cc8ef490 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -366,8 +366,23 @@ public class SpedizioneViewModel { if (this.mListener != null) mListener.onCreateDocsRequest(); } - private void sendChooseArtRequest(List mtbAarts, RunnableArgs onComplete) { - if (this.mListener != null) mListener.onChooseArtRequest(mtbAarts, onComplete); + private MtbAart sendChooseArtRequest(List mtbAarts) { + final CountDownLatch latch = new CountDownLatch(1); + AtomicReference result = new AtomicReference<>(); + + mListener.onChooseArtRequest(mtbAarts, data -> { + result.set(data); + latch.countDown(); + }); + + try { + latch.await(); // Attende che il dialog venga chiuso + return result.get(); + } catch (InterruptedException e) { + this.sendError(e); + } + + return null; } private List sendChooseArtsRequest(List mtbAarts) { @@ -754,13 +769,9 @@ public class SpedizioneViewModel { if (mtbAartList.size() == 1) { this.searchArtFromAnag(mtbAartList.get(0), pickData); } else { - this.sendChooseArtRequest(mtbAartList, art -> { - try { - this.searchArtFromAnag(art, pickData); - } catch (Exception e) { - this.sendError(e); - } - }); + var art = this.sendChooseArtRequest(mtbAartList); + if (art == null) return; + this.searchArtFromAnag(art, pickData); } } else { throw new NoResultFromBarcodeException(barcodeProd); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java index b8714c7c..31639926 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUModule.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.view.dialogs.basket_lu; +import android.os.Handler; + import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -10,8 +12,8 @@ import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2.DialogBask public class DialogBasketLUModule { @Provides - DialogBasketLU_Page1_ViewModel providesDialogBasketLUPage1ViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { - return new DialogBasketLU_Page1_ViewModel(colliMagazzinoRESTConsumer); + DialogBasketLU_Page1_ViewModel providesDialogBasketLUPage1ViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, Handler handler) { + return new DialogBasketLU_Page1_ViewModel(colliMagazzinoRESTConsumer, handler); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java index 7c6d90c2..cf737bcb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.view.dialogs.basket_lu; import android.app.Dialog; import android.os.Bundle; +import android.os.Handler; import android.view.LayoutInflater; import androidx.annotation.NonNull; @@ -36,7 +37,8 @@ public class DialogBasketLUView extends BaseDialogFragment { private final RunnableArgs mOnComplete; private DialogBasketLuBinding mBindings; - + @Inject + Handler handler; public DialogBasketLUView(RunnableArgs onComplete) { mOnComplete = onComplete; @@ -52,7 +54,7 @@ public class DialogBasketLUView extends BaseDialogFragment { public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { mBindings = DialogBasketLuBinding.inflate(LayoutInflater.from(requireContext()), null, false); - var alertDialog = new MaterialAlertDialogBuilder(requireContext()) + var alertDialog = new MaterialAlertDialogBuilder(requireContext()) .setView(mBindings.getRoot()) .setCancelable(false) .create(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java index d71dff93..4e7627a9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1; import android.content.Context; +import android.os.Handler; import android.view.View; import androidx.core.content.ContextCompat; @@ -30,9 +31,12 @@ public class DialogBasketLU_Page1_ViewModel extends DialogBasketLU_BaseViewModel private final ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer; + private final Handler handler; + @Inject - public DialogBasketLU_Page1_ViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + public DialogBasketLU_Page1_ViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, Handler handler) { this.colliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + this.handler = handler; } @Override @@ -53,16 +57,19 @@ public class DialogBasketLU_Page1_ViewModel extends DialogBasketLU_BaseViewModel @Override public void onShow() { this.mBinding.getRoot().requestLayout(); - mBinding.constraintLayout.setMaxHeight((int) (mContext.getResources().getDisplayMetrics().heightPixels * 0.75)); colliMagazzinoRESTConsumer.retrieveBasketColli(mtbColts -> { - availableMtbColts = mtbColts; - if(mtbColts != null && !mtbColts.isEmpty()) initRecyclerView(availableMtbColts); + handler.post(() -> { + availableMtbColts = mtbColts; + if(mtbColts != null && !mtbColts.isEmpty()) initRecyclerView(availableMtbColts); - mBinding.emptyView.setVisibility(mtbColts != null && !mtbColts.isEmpty() ? View.GONE : View.VISIBLE); + mBinding.emptyView.setVisibility(mtbColts != null && !mtbColts.isEmpty() ? View.GONE : View.VISIBLE); + }); }, ex -> { - mBinding.emptyView.setVisibility(View.VISIBLE); + handler.post(() -> { + mBinding.emptyView.setVisibility(View.VISIBLE); + }); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsAdapter.java deleted file mode 100644 index c522e3eb..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsAdapter.java +++ /dev/null @@ -1,77 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; -import it.integry.integrywmsnative.core.model.MtbAart; -import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtItemModelBinding; - -public class DialogChooseArtFromListaArtsAdapter extends RecyclerView.Adapter { - - protected Context mContext; - - private List mDataset; - private final IRecyclerItemClicked mOnItemClickListener; - - public static class ViewHolder extends RecyclerView.ViewHolder { - protected DialogChooseArtFromListaArtItemModelBinding mViewDataBinding; - - - public ViewHolder(DialogChooseArtFromListaArtItemModelBinding v) { - super(v.getRoot()); - mViewDataBinding = v; - } - - public void bind(MtbAart mtbAart) { - mViewDataBinding.setItem(mtbAart); - mViewDataBinding.executePendingBindings(); - } - } - - public DialogChooseArtFromListaArtsAdapter(Context context, List myDataset, IRecyclerItemClicked onItemClickListener) { - mContext = context; - mDataset = myDataset; - mOnItemClickListener = onItemClickListener; - } - - @Override - public DialogChooseArtFromListaArtsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - // create a new view - DialogChooseArtFromListaArtItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_art_from_lista_art__item_model, parent, false); - - return new ViewHolder(viewDataBinding); - } - - @Override - public void onBindViewHolder(DialogChooseArtFromListaArtsAdapter.ViewHolder holder, int position) { - MtbAart item = mDataset.get(position); - holder.bind(item); - - holder.mViewDataBinding.getRoot().setOnClickListener(x -> { - if(mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(item, position); - } - }); - } - - @Override - public void onViewRecycled(DialogChooseArtFromListaArtsAdapter.ViewHolder holder) { - super.onViewRecycled(holder); - } - - @Override - public int getItemCount() { - return mDataset.size(); - } - - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsComponent.java new file mode 100644 index 00000000..e972c960 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogChooseArtFromListaArtsComponent { + + @Subcomponent.Factory + interface Factory { + DialogChooseArtFromListaArtsComponent create(); + } + + void inject(DialogChooseArtFromListaArtsView dialogChooseArtFromListaArtsView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsModule.java new file mode 100644 index 00000000..c38d4ccd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogChooseArtFromListaArtsComponent.class) +public class DialogChooseArtFromListaArtsModule { + + @Provides + DialogChooseArtFromListaArtsViewModel providesDialogChooseArtFromListaArtsViewModel() { + return new DialogChooseArtFromListaArtsViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java index eed2e817..5b2b1319 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java @@ -1,6 +1,8 @@ package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts; import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; @@ -10,76 +12,116 @@ import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.ravikoradiya.liveadapter.LiveAdapter; +import com.ravikoradiya.liveadapter.Type; import java.util.List; +import java.util.Objects; +import javax.inject.Inject; + +import it.integry.integrywmsnative.BR; +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.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.model.MtbAart; -import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding; +import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtItemModelBinding; +import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtsBinding; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; +import kotlin.Unit; public class DialogChooseArtFromListaArtsView extends BaseDialogFragment { + @Inject + DialogChooseArtFromListaArtsViewModel mViewModel; - + private DialogChooseArtFromListaArtsBinding mBindings; + private Context mContext; + private final RunnableArgs onComplete; private final boolean mEnableSelection; private final List mListaArts; - private final RunnableArgs mOnItemChoosed; + //Pass here all external parameters + public static DialogChooseArtFromListaArtsView newInstance(boolean enableSelection, List listaArts, RunnableArgs onComplete) { + return new DialogChooseArtFromListaArtsView(enableSelection, listaArts, onComplete); + } - public DialogChooseArtFromListaArtsView(boolean enableSelection, List listaArts, RunnableArgs onItemChoosed) { + private DialogChooseArtFromListaArtsView(boolean enableSelection, List listaArts, RunnableArgs onComplete) { super(); - + this.onComplete = onComplete; this.mEnableSelection = enableSelection; this.mListaArts = listaArts; - this.mOnItemChoosed = onItemChoosed; + + MainApplication.appComponent + .dialogChooseArtFromListaArtsComponent() + .create() + .inject(this); } @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { - var binding = DialogChooseArtFromListaArtBinding.inflate(LayoutInflater.from(requireContext())); + this.mContext = requireContext(); - binding.titleText.setText(this.mEnableSelection ? R.string.dialog_choose_art_from_lista_art : + mBindings = DialogChooseArtFromListaArtsBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + mBindings.titleText.setText(this.mEnableSelection ? R.string.dialog_choose_art_from_lista_art : R.string.articoli_disponibili); - initRecyclerView(binding, mListaArts); + initRecyclerView(mBindings, mListaArts); - setCancelable(false); + setCancelable(true); - var alertDialog = new MaterialAlertDialogBuilder(requireContext()) - .setView(binding.getRoot()) + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) .setCancelable(isCancelable()) .create(); alertDialog.setCanceledOnTouchOutside(isCancelable()); alertDialog.setOnShowListener(this); + alertDialog.setOnDismissListener(this); return alertDialog; } - private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List dataset) { + @Override + public void dismiss() { + dismiss(null); + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + dismiss(); + } + + public void dismiss(MtbAart item) { + if (getDialog() != null) getDialog().dismiss(); + onComplete.run(item); + } + + private void initRecyclerView(DialogChooseArtFromListaArtsBinding binding, List dataset) { binding.itemsList.setNestedScrollingEnabled(false); binding.itemsList.setHasFixedSize(true); binding.itemsList.setLayoutManager(new LinearLayoutManager(requireContext())); SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL); - itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider)); + itemDecorator.setDrawable(Objects.requireNonNull(ContextCompat.getDrawable(requireContext(), R.drawable.divider))); binding.itemsList.addItemDecoration(itemDecorator); - IRecyclerItemClicked onItemClickListener = (item, position) -> { - if (mOnItemChoosed != null) { - mOnItemChoosed.run(item); - } + var itemType = new Type(R.layout.dialog_choose_art_from_lista_art__item_model, BR.item); - dismiss(); - }; + itemType.onClick(x -> { + dismiss(x.getBinding().getItem()); + return null; + }); - DialogChooseArtFromListaArtsAdapter mCurrentAdapter = new DialogChooseArtFromListaArtsAdapter( - requireContext(), dataset, this.mEnableSelection ? onItemClickListener : null); - binding.itemsList.setAdapter(mCurrentAdapter); + new LiveAdapter(dataset, BR.item) + .map(MtbAart.class, itemType) + .onNoData(noData -> { +// mBindings.emptyView.setVisibility(noData ? View.VISIBLE : View.GONE); + return Unit.INSTANCE; + }) + .into(this.mBindings.itemsList); } - -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsViewModel.java new file mode 100644 index 00000000..1580e077 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts; + +public class DialogChooseArtFromListaArtsViewModel { + +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_art_from_lista_arts.xml b/app/src/main/res/layout/dialog_choose_art_from_lista_arts.xml new file mode 100644 index 00000000..4ff53faf --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_art_from_lista_arts.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file