From ea6b26e00fcfd527fbcb9497a9778c643e5cfacc Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 5 Aug 2021 19:11:44 +0200 Subject: [PATCH] Refactoring activity contenuto bancale --- .../MainApplicationComponent.java | 6 +- .../MainApplicationModule.java | 7 + .../core/expansion/BaseActivity.java | 47 ++- .../rest/consumers/DepositoRESTConsumer.java | 14 +- .../rest/consumers/PrinterRESTConsumer.java | 20 -- .../AccettazionePickingActivity.java | 2 - .../ContenutoBancaleActivity.java | 138 +++++++- .../ContenutoBancaleComponent.java | 15 + .../ContenutoBancaleModule.java | 7 + .../ContenutoBancaleViewModel.java | 39 +++ .../core/ContenutoBancaleListAdapter.java | 86 ++--- .../viewmodel/ContenutoBancaleViewModel.java | 143 -------- .../res/layout/activity_contenuto_bancale.xml | 305 +++++++++--------- 13 files changed, 418 insertions(+), 411 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index b09c57e6..1d216f65 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -9,6 +9,8 @@ import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent; 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.main.MainActivityComponent; import it.integry.integrywmsnative.gest.main.MainActivityModule; import it.integry.integrywmsnative.gest.main.MainFragmentComponent; @@ -58,9 +60,10 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr RoomModule.class, SplashActivityModule.class, MainApplicationModule.class, + MainActivityModule.class, MainFragmentModule.class, MainAccettazioneModule.class, - MainActivityModule.class, + ContenutoBancaleModule.class, PVOrdineAcquistoGrigliaModule.class, PVOrdineAcquistoEditModule.class, PickingLiberoModule.class, @@ -87,6 +90,7 @@ public interface MainApplicationComponent { MainActivityComponent.Factory mainActivityComponent(); MainFragmentComponent.Factory mainFragmentComponent(); MainAccettazioneComponent.Factory mainAccettazioneComponent(); + ContenutoBancaleComponent.Factory contenutoBancaleComponent(); PVOrdineAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent(); PickingLiberoComponent.Factory pickingLiberoComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index c7f743f8..b8050226 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -14,6 +14,7 @@ import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; @@ -82,6 +83,12 @@ public class MainApplicationModule { return new ArticoloRESTConsumer(); } + @Provides + @Singleton + DepositoRESTConsumer provideDepositoRESTConsumer() { + return new DepositoRESTConsumer(); + } + @Provides @Singleton MenuRESTConsumer provideMenuRESTConsumer() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java index 4bb3dc50..89bb6199 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java @@ -6,6 +6,7 @@ import android.view.KeyEvent; import androidx.appcompat.app.AppCompatActivity; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; public class BaseActivity extends AppCompatActivity { @@ -38,19 +39,45 @@ public class BaseActivity extends AppCompatActivity { } - protected void openProgress() { - BarcodeManager.disable(); - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); - } + runOnUiThread(() -> { + BarcodeManager.disable(); + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); + } + }); } protected void closeProgress() { - BarcodeManager.enable(); - if (mCurrentProgress != null) { - mCurrentProgress.dismiss(); - mCurrentProgress = null; - } + runOnUiThread(() -> { + BarcodeManager.enable(); + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + }); + } + + + public void onLoadingStarted() { + new Thread(() -> { + BarcodeManager.disable(); + this.openProgress(); + }).start(); + } + + public void onLoadingEnded() { + new Thread(() -> { + this.closeProgress(); + BarcodeManager.enable(); + }).start(); + } + + public void onError(Exception ex) { + this.runOnUiThread(() -> { + this.closeProgress(); + UtilityExceptions.defaultException(this, ex, mCurrentProgress); + BarcodeManager.enable(); + }); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java index e1a8d5ee..7eeeb3d2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java @@ -2,31 +2,33 @@ package it.integry.integrywmsnative.core.rest.consumers; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbDepo; -import it.integry.integrywmsnative.core.utility.UtilityLogger; -public class DepositoRESTConsumer { +@Singleton +public class DepositoRESTConsumer extends _BaseRESTConsumer { - public static void getDepoByCodMdep(String codMdep, RunnableArgs onComplete) { + public void getDepoByCodMdep(String codMdep, RunnableArgs onComplete, RunnableArgs onFailed) { MtbDepo mtbDepo = new MtbDepo(); mtbDepo.setCodMdep(codMdep); mtbDepo.setOperation(CommonModelConsts.OPERATION.SELECT); mtbDepo.setOnlyPkMaster(false); - EntityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback>() { + EntityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback<>() { @Override public void onSuccess(List value) { - if(value != null && value.size() > 0) { + if (value != null && value.size() > 0) { onComplete.run(value.get(0)); } } @Override public void onFailed(Exception ex) { - UtilityLogger.errorMe(ex); + onFailed.run(ex); } }, MtbDepo.class); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index 7362e3a0..9136247d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java @@ -32,27 +32,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { } - public static void getAvailablePrintersStatic(final ISimpleOperationCallback> callback) { - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); - printerService.getAvailablePrinters().enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "GetAvailablePrinters", callback); - } - - @Override - public void onFailure(Call>> call, Throwable t) { - - } - }); - } - public void getAvailablePrinters(String codMdep, final RunnableArgs> onComplete, final RunnableArgs onFailed) { - getAvailablePrintersStatic(codMdep, onComplete, onFailed); - } - - public static void getAvailablePrintersStatic(String codMdep, final RunnableArgs> onComplete, RunnableArgs onFailed) { - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); printerService.getAvailablePrinters(codMdep).enqueue(new Callback>>() { @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java index cb91bac0..3f9687fc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java @@ -117,8 +117,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta mBindings.bottomSheetLuContent.setListener(this); mBottomSheetFragmentLUContentViewModel.setListener(this); - setSupportActionBar(this.mBindings.toolbar); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); mShowSecondaryUntMis = sharedPreferences.getBoolean("picking_ingresso_enable_sec_unt_mis", true); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java index 4632345a..a2da3873 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java @@ -1,25 +1,53 @@ package it.integry.integrywmsnative.gest.contenuto_bancale; -import androidx.databinding.DataBindingUtil; -import androidx.appcompat.app.AppCompatActivity; - import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.os.Bundle; +import android.text.SpannableString; +import androidx.core.content.ContextCompat; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableField; +import androidx.recyclerview.widget.LinearLayoutManager; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.BaseActivity; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.data_cache.DataCache; +import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.report.ReportManager; +import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding; -import it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel.ContenutoBancaleViewModel; +import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -public class ContenutoBancaleActivity extends BaseActivity { +public class ContenutoBancaleActivity extends BaseActivity implements ContenutoBancaleViewModel.Listener { public ActivityContenutoBancaleBinding bindings; - private ContenutoBancaleViewModel mViewModel; + @Inject + ContenutoBancaleViewModel mViewModel; + + @Inject + DepositoRESTConsumer mDepositoRESTConsumer; + + @Inject + PrinterRESTConsumer mPrinterRESTConsumer; + + public final ObservableField mtbColt = new ObservableField<>(); + public final ObservableField descrizioneDepo = new ObservableField<>(); + + public ObservableField fabVisible = new ObservableField<>(true); + public ObservableField recoverFabMenuVisible = new ObservableField<>(false); + + private String mReportName; + private PrinterRESTConsumer.Type mPrinterType; private static class Key { private static final String MtbColtKey = "mtbColtKey"; @@ -50,24 +78,106 @@ public class ContenutoBancaleActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); + mtbColt.set(DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey))); + mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); + mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); + bindings = DataBindingUtil.setContentView(this, R.layout.activity_contenuto_bancale); - boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); - MtbColt mtbColt = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey)); - String reportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); + MainApplication.appComponent + .contenutoBancaleComponent() + .create() + .inject(this); - PrinterRESTConsumer.Type mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); - - mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType, reportName); + bindings.setView(this); + bindings.setViewModel(this.mViewModel); bindings.elevatedToolbar.setNestedScrollView(bindings.scrollView); setSupportActionBar(this.bindings.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + mViewModel.setListener(this); + mViewModel.init(mtbColt.get(), mPrinterType, mReportName); + + recoverFabMenuVisible.set(canRecoverUL); + + initRecyclerView(); + initColloInfo(); } + private void initRecyclerView() { + this.bindings.contenutoBancaleMainList.setNestedScrollingEnabled(false); + + this.bindings.contenutoBancaleMainList.setHasFixedSize(true); + + this.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(this)); + + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)); + this.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator); + + ContenutoBancaleListAdapter adapter = new ContenutoBancaleListAdapter(mtbColt.get().getMtbColr()); + this.bindings.contenutoBancaleMainList.setAdapter(adapter); + } + + + private void initColloInfo() { + mDepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> { + descrizioneDepo.set("(" + depo.getDescrizione() + ")"); + }, this::onError); + } + + + public void recoverUL() { + Intent data = new Intent(); + String key = DataCache.addItem(mtbColt.get()); + data.putExtra("key", key); + + this.setResult(RESULT_OK, data); + this.finish(); + } + + + public void printUL() { + this.bindings.contenutoBancaleFab.close(true); + this.onLoadingStarted(); + + this.mPrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> { + if (value.size() > 0) { + + try { + String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum()); + reportName = mReportName != null ? mReportName : reportName; + + this.mPrinterRESTConsumer.printCollo(value.get(0), + mtbColt.get(), + 1, + reportName, + () -> { + this.onLoadingEnded(); + + Resources res = this.getResources(); + String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); + DialogSimpleMessageView + .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) + .show(getSupportFragmentManager(), "tag"); + }, this::onError); + + } catch (Exception ex) { + this.onError(ex); + } + + } else { + this.onLoadingEnded(); + String errorMessage = "Nessuna stampante configurata"; + this.onError(new Exception(errorMessage)); + } + }, this::onError); + + } @Override public boolean onSupportNavigateUp() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleComponent.java new file mode 100644 index 00000000..fc3f891c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.contenuto_bancale; + +import dagger.Subcomponent; + +@Subcomponent +public interface ContenutoBancaleComponent { + + @Subcomponent.Factory + interface Factory { + ContenutoBancaleComponent create(); + } + + void inject(ContenutoBancaleActivity contenutoBancaleActivity); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleModule.java new file mode 100644 index 00000000..dc6c3a92 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.gest.contenuto_bancale; + +import dagger.Module; + +@Module(subcomponents = ContenutoBancaleComponent.class) +public class ContenutoBancaleModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java new file mode 100644 index 00000000..ef70a79d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java @@ -0,0 +1,39 @@ +package it.integry.integrywmsnative.gest.contenuto_bancale; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; + +public class ContenutoBancaleViewModel { + + private final DepositoRESTConsumer mDepositoRESTConsumer; + + + private Listener mListener; + + @Inject + public ContenutoBancaleViewModel(DepositoRESTConsumer depositoRESTConsumer) { + this.mDepositoRESTConsumer = depositoRESTConsumer; + } + + public void init(MtbColt mtbColt, PrinterRESTConsumer.Type printerType, String defaultReportName) { + + + } + + + public ContenutoBancaleViewModel 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/contenuto_bancale/core/ContenutoBancaleListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java index cd23aae4..51cfdc61 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java @@ -1,15 +1,15 @@ package it.integry.integrywmsnative.gest.contenuto_bancale.core; -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 androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityNumber; @@ -17,13 +17,13 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ListaContenutoBancaleListModelBinding; -public class ContenutoBancaleListAdapter extends RecyclerView.Adapter { +public class ContenutoBancaleListAdapter extends ExtendedRecyclerView { + private RunnableArgs mOnItemClickListener; - protected static Context mContext; - protected ObservableArrayList mDataset; - - private IRecyclerItemClicked mOnItemClickListener; + public ContenutoBancaleListAdapter(ObservableArrayList myDataset) { + super(myDataset); + } public static class ViewHolder extends RecyclerView.ViewHolder { protected ListaContenutoBancaleListModelBinding mViewDataBinding; @@ -37,12 +37,11 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter myDataset, IRecyclerItemClicked onItemClickListener) { - mContext = context; - mDataset = myDataset; - mOnItemClickListener = onItemClickListener; - - myDataset.addOnListChangedCallback(onListChangedCallback); - } - @Override public ContenutoBancaleListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view @@ -78,10 +69,10 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter { - if(mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(mtbColr, position); + if (mOnItemClickListener != null) { + mOnItemClickListener.run(mtbColr); } }); } - @Override - public void onViewRecycled(ContenutoBancaleListAdapter.ViewHolder holder) { - super.onViewRecycled(holder); + + public ContenutoBancaleListAdapter setOnItemClickListener(RunnableArgs onItemClickListener) { + this.mOnItemClickListener = onItemClickListener; + return this; } - - @Override - public int getItemCount() { - return mDataset.size(); - } - - - private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback>(){ - - @Override - public void onChanged(ObservableList sender) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - } - }; - - } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java deleted file mode 100644 index 5219400b..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java +++ /dev/null @@ -1,143 +0,0 @@ -package it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel; - -import android.app.Dialog; -import android.content.Intent; -import android.content.res.Resources; -import android.text.SpannableString; - -import androidx.core.content.ContextCompat; -import androidx.databinding.ObservableField; -import androidx.recyclerview.widget.LinearLayoutManager; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.data_cache.DataCache; -import it.integry.integrywmsnative.core.di.BindableString; -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.report.ReportManager; -import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; -import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter; -import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; - -import static android.app.Activity.RESULT_OK; - -public class ContenutoBancaleViewModel implements IRecyclerItemClicked { - - private ContenutoBancaleActivity mContext; - - public ObservableField mtbColt; - public BindableString descrizioneDepo = new BindableString(); - - public ObservableField isFabVisible = new ObservableField<>(); - public ObservableField isRecoverFabMenuVisible = new ObservableField<>(); - - private ContenutoBancaleListAdapter mAdapter; - - private PrinterRESTConsumer.Type mPrinterType; - private String mReportName; - - public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName) { - mContext = context; - this.mtbColt = new ObservableField<>(mtbColt); - this.isFabVisible.set(true); - this.isRecoverFabMenuVisible.set(canRecoverUL); - this.mPrinterType = printerType; - this.mReportName = defaultReportName; - - mContext.bindings.setViewModel(this); - - initRecyclerView(); - - initColloInfo(); - } - - - private void initRecyclerView() { - mContext.bindings.contenutoBancaleMainList.setNestedScrollingEnabled(false); - - mContext.bindings.contenutoBancaleMainList.setHasFixedSize(true); - - mContext.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(mContext)); - - SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); - itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); - mContext.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator); - - mAdapter = new ContenutoBancaleListAdapter(mContext, mtbColt.get().getMtbColr(), this); - mContext.bindings.contenutoBancaleMainList.setAdapter(mAdapter); - } - - - private void initColloInfo() { - DepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> { - descrizioneDepo.set("(" + depo.getDescrizione() + ")"); - }); - } - - @Override - public void onItemClick(MtbColr item, int position) { - } - - - public void recoverUL() { - Intent data = new Intent(); - String key = DataCache.addItem(mtbColt.get()); - data.putExtra("key", key); - - mContext.setResult(RESULT_OK, data); - mContext.finish(); - } - - - public void printUL() { - mContext.bindings.contenutoBancaleFab.close(true); - final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); - - PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> { - - if (value.size() > 0) { - - try { - String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum()); - - reportName = mReportName != null ? mReportName : reportName; - - PrinterRESTConsumer.printColloStatic(value.get(0), - mtbColt.get(), - 1, - reportName, - () -> { - progress.dismiss(); - - Resources res = mContext.getResources(); - String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); - DialogSimpleMessageView - .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) - .show(mContext.getSupportFragmentManager(), "tag"); - }, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); - - } catch (Exception ex) { - UtilityExceptions.defaultException(mContext, ex, progress); - } - - } else { - progress.dismiss(); - String errorMessage = "Nessuna stampante configurata"; - DialogSimpleMessageView - .makeWarningDialog(new SpannableString(errorMessage), null, null) - .show(mContext.getSupportFragmentManager(), "tag");; - } - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progress); - }); - - } - -} diff --git a/app/src/main/res/layout/activity_contenuto_bancale.xml b/app/src/main/res/layout/activity_contenuto_bancale.xml index 7508d0b7..e6c2bf2c 100644 --- a/app/src/main/res/layout/activity_contenuto_bancale.xml +++ b/app/src/main/res/layout/activity_contenuto_bancale.xml @@ -1,15 +1,21 @@ - + xmlns:fab="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + + type="it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleViewModel" /> + + @@ -18,183 +24,182 @@ android:layout_height="match_parent"> - - - - - - - - - - + android:background="@color/full_white" + android:orientation="vertical"> - - + android:layout_height="wrap_content"> + + + + + + + android:paddingTop="8dp" + tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity"> + + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:background="@drawable/gray_detail_background_round8" + android:orientation="vertical" + android:padding="16dp"> - + android:orientation="horizontal"> - + + + + + + android:orientation="horizontal"> + + + + + + + + + + + + + + + + + + + + + + + - + android:layout_marginTop="16dp" + android:layout_marginBottom="92dp" + android:paddingStart="2dp" + android:paddingEnd="2dp"> - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - + + app:onClick="@{() -> view.recoverUL()}" + app:visibility="@{view.recoverFabMenuVisible}" + fab:fab_label="@string/action_recover_ul" />