diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 1d216f65..5172884e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -11,6 +11,8 @@ import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePicking import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule; +import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent; +import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliModule; import it.integry.integrywmsnative.gest.main.MainActivityComponent; import it.integry.integrywmsnative.gest.main.MainActivityModule; import it.integry.integrywmsnative.gest.main.MainFragmentComponent; @@ -63,6 +65,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr MainActivityModule.class, MainFragmentModule.class, MainAccettazioneModule.class, + ListaBancaliModule.class, ContenutoBancaleModule.class, PVOrdineAcquistoGrigliaModule.class, PVOrdineAcquistoEditModule.class, @@ -90,6 +93,7 @@ public interface MainApplicationComponent { MainActivityComponent.Factory mainActivityComponent(); MainFragmentComponent.Factory mainFragmentComponent(); MainAccettazioneComponent.Factory mainAccettazioneComponent(); + ListaBancaliComponent.Factory listaBancaliComponent(); ContenutoBancaleComponent.Factory contenutoBancaleComponent(); PVOrdineAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java index 2cddbae5..6d9afe15 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java @@ -4,10 +4,16 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.expansion.BaseActivity; @@ -16,9 +22,10 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; -import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel; +import it.integry.integrywmsnative.gest.lista_bancali.ui.ListaColliMainListAdapter; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; -public class ListaBancaliActivity extends BaseActivity { +public class ListaBancaliActivity extends BaseActivity implements ListaBancaliViewModel.Listener{ private static class Key { private static final String MtbColtsKey = "mtbColtsKey"; @@ -28,9 +35,12 @@ public class ListaBancaliActivity extends BaseActivity { private static final String FlagOnlyResiduo = "flagOnlyResiduo"; } - public ActivityListaBancaliBinding bindings; + public ActivityListaBancaliBinding mBindings; - private ListaBancaliViewModel mViewModel; + @Inject + ListaBancaliViewModel mViewModel; + + private final ObservableArrayList mtbColts = new ObservableArrayList<>(); private RunnableArgsWithReturn mCanRecoverUl; private PrinterRESTConsumer.Type mPrinterType; @@ -78,7 +88,12 @@ public class ListaBancaliActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - bindings = DataBindingUtil.setContentView(this, R.layout.activity_lista_bancali); + mBindings = DataBindingUtil.setContentView(this, R.layout.activity_lista_bancali); + + MainApplication.appComponent + .listaBancaliComponent() + .create() + .inject(this); mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); @@ -86,16 +101,36 @@ public class ListaBancaliActivity extends BaseActivity { mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo)); - List mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey)); - mViewModel = new ListaBancaliViewModel(this, mtbColts, mFlagOnlyResiduo); + mtbColts.addAll(DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey))); + this.initRecyclerView(); - setSupportActionBar(this.bindings.toolbar); + setSupportActionBar(this.mBindings.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - } + + public void initRecyclerView() { + mBindings.listaColliMainList.setHasFixedSize(true); + mBindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(this)); + + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)); + mBindings.listaColliMainList.addItemDecoration(itemDecorator); + + + ListaColliMainListAdapter adapter = new ListaColliMainListAdapter(mtbColts) + .setOnItemClickListener(mtbColtSelected -> { + this.mViewModel.dispatchMtbColt(mtbColtSelected, mFlagOnlyResiduo, this::startContenutoBancaleActivity); + }); + + adapter.setEmptyView(mBindings.listaBancaliEmptyView); + mBindings.listaColliMainList.setAdapter(adapter); + + mBindings.elevatedToolbar.setRecyclerView(mBindings.listaColliMainList); + } + + @Override public boolean onSupportNavigateUp() { onBackPressed(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliComponent.java new file mode 100644 index 00000000..7e7e4379 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.lista_bancali; + +import dagger.Subcomponent; + +@Subcomponent +public interface ListaBancaliComponent { + + @Subcomponent.Factory + interface Factory { + ListaBancaliComponent create(); + } + + void inject(ListaBancaliActivity listaBancaliActivity); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliModule.java new file mode 100644 index 00000000..a2eddb5d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliModule.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.gest.lista_bancali; + + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; + +@Module(subcomponents = ListaBancaliComponent.class) +public class ListaBancaliModule { + + @Provides + ListaBancaliViewModel providesListaBancaliViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + return new ListaBancaliViewModel(colliMagazzinoRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java new file mode 100644 index 00000000..6f28e59c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java @@ -0,0 +1,67 @@ +package it.integry.integrywmsnative.gest.lista_bancali; + + +import androidx.databinding.ObservableArrayList; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; + +public class ListaBancaliViewModel { + + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + + private Listener mListener; + + @Inject + public ListaBancaliViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + } + + + public void dispatchMtbColt(MtbColt mtbColtToDispatch, boolean onlyResiduo, RunnableArgs onComplete) { + this.sendOnLoadingStarted(); + + new Thread(() -> { + mColliMagazzinoRESTConsumer.getByTestata(mtbColtToDispatch, onlyResiduo, false, mtbColt -> { + this.sendOnLoadingEnded(); + + ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>(); + if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr()); + mtbColtToDispatch.setMtbColr(mtbColrObservableArrayList); + + onComplete.run(mtbColtToDispatch); + }, this::sendError); + + }).start(); + } + + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + public ListaBancaliViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/ListaColliMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/ListaColliMainListAdapter.java new file mode 100644 index 00000000..de7758e3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/ListaColliMainListAdapter.java @@ -0,0 +1,76 @@ +package it.integry.integrywmsnative.gest.lista_bancali.ui; + +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.databinding.ListaBancaliListModelBinding; + +public class ListaColliMainListAdapter extends ExtendedRecyclerView { + + + private RunnableArgs mOnItemClickListener; + + public static class ViewHolder extends RecyclerView.ViewHolder { + protected ListaBancaliListModelBinding mViewDataBinding; + + + public ViewHolder(ListaBancaliListModelBinding v) { + super(v.getRoot()); + mViewDataBinding = v; + } + + public void bind(MtbColt mtbColt) { + mViewDataBinding.setMtbColt(mtbColt); + mViewDataBinding.executePendingBindings(); + } + } + + public ListaColliMainListAdapter(ObservableArrayList myDataset) { + super(myDataset); + } + + + @Override + public ListaColliMainListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + ListaBancaliListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_bancali_list_model, parent, false); + + return new ViewHolder(viewDataBinding); + } + + + @Override + public void onBindViewHolder(ListaColliMainListAdapter.ViewHolder holder, int position) { + MtbColt item = mDataset.get(position); + holder.bind(item); + + holder.mViewDataBinding.getRoot().setOnClickListener(x -> { + if(mOnItemClickListener != null) { + mOnItemClickListener.run(item); + } + }); + } + + @Override + public void onViewRecycled(ListaColliMainListAdapter.ViewHolder holder) { + super.onViewRecycled(holder); + } + + + + + public ListaColliMainListAdapter setOnItemClickListener(RunnableArgs onItemClickListener) { + this.mOnItemClickListener = onItemClickListener; + return this; + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/MainListListaColliAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/MainListListaColliAdapter.java deleted file mode 100644 index 2a8382f0..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/MainListListaColliAdapter.java +++ /dev/null @@ -1,126 +0,0 @@ -package it.integry.integrywmsnative.gest.lista_bancali.ui; - -import android.content.Context; -import androidx.databinding.DataBindingUtil; -import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; -import androidx.recyclerview.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import android.view.View; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.databinding.ListaBancaliListModelBinding; - -public class MainListListaColliAdapter extends RecyclerView.Adapter { - - protected Context mContext; - protected ObservableArrayList mDataset; - - private View mEmptyView; - - private IRecyclerItemClicked mOnItemClickListener; - - public static class ViewHolder extends RecyclerView.ViewHolder { - protected ListaBancaliListModelBinding mViewDataBinding; - - - public ViewHolder(ListaBancaliListModelBinding v) { - super(v.getRoot()); - mViewDataBinding = v; - } - - public void bind(MtbColt mtbColt) { - mViewDataBinding.setMtbColt(mtbColt); - mViewDataBinding.executePendingBindings(); - } - } - - public MainListListaColliAdapter(Context context, ObservableArrayList myDataset, IRecyclerItemClicked onItemClickListener, View emptyView) { - mContext = context; - mDataset = myDataset; - mEmptyView = emptyView; - mOnItemClickListener = onItemClickListener; - - myDataset.addOnListChangedCallback(onListChangedCallback); - - checkIfEmpty(); - } - - - @Override - public MainListListaColliAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - // create a new view - ListaBancaliListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_bancali_list_model, parent, false); - - return new ViewHolder(viewDataBinding); - } - - - @Override - public void onBindViewHolder(MainListListaColliAdapter.ViewHolder holder, int position) { - MtbColt item = mDataset.get(position); - holder.bind(item); - - holder.mViewDataBinding.getRoot().setOnClickListener(x -> { - if(mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(item, position); - } - }); - } - - @Override - public void onViewRecycled(MainListListaColliAdapter.ViewHolder holder) { - super.onViewRecycled(holder); - } - - - @Override - public int getItemCount() { - return mDataset.size(); - } - - - void checkIfEmpty() { - if (mEmptyView != null) { - final boolean emptyViewVisible = getItemCount() == 0; - mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE); - } - } - - - private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback>() { - @Override - public void onChanged(ObservableList sender) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - }; - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java deleted file mode 100644 index 38632bcc..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java +++ /dev/null @@ -1,82 +0,0 @@ -package it.integry.integrywmsnative.gest.lista_bancali.viewmodel; - -import android.app.Dialog; - -import androidx.core.content.ContextCompat; -import androidx.databinding.ObservableArrayList; -import androidx.recyclerview.widget.LinearLayoutManager; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; -import it.integry.integrywmsnative.core.model.MtbColr; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; -import it.integry.integrywmsnative.gest.lista_bancali.ui.MainListListaColliAdapter; -import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; - -public class ListaBancaliViewModel implements IRecyclerItemClicked { - - private ListaBancaliActivity mContext; - private ObservableArrayList mMtbColts; - - private MainListListaColliAdapter mAdapter; - - private boolean mLoadOnlyResiduo; - - public ListaBancaliViewModel(ListaBancaliActivity context, List mtbColts, boolean loadOnlyResiduo){ - mContext = context; - mMtbColts = new ObservableArrayList<>(); - mMtbColts.addAll(mtbColts); - - this.mLoadOnlyResiduo = loadOnlyResiduo; - - initRecyclerView(); - } - - public void initRecyclerView() { - mContext.bindings.listaColliMainList.setHasFixedSize(true); - mContext.bindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(mContext)); - - SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); - itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); - mContext.bindings.listaColliMainList.addItemDecoration(itemDecorator); - - - mAdapter = new MainListListaColliAdapter(mContext, mMtbColts, this, mContext.bindings.listaBancaliEmptyView); - mContext.bindings.listaColliMainList.setAdapter(mAdapter); - - mContext.bindings.elevatedToolbar.setRecyclerView(mContext.bindings.listaColliMainList); - - } - - @Override - public void onItemClick(MtbColt item, int position) { - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); - - try { - ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> { - - ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>(); - if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr()); - item.setMtbColr(mtbColrObservableArrayList); - - progress.dismiss(); - - mContext.startContenutoBancaleActivity(item); - - }, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); - - - } catch (Exception e) { - e.printStackTrace(); - UtilityExceptions.defaultException(mContext, e, progress); - } - } - -}