From 653f0d6d705afed786480ede8d79600383c6f2dd Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 8 Apr 2020 19:59:47 +0200 Subject: [PATCH] Completata gestione del contenuto UL in BottomSheetFragment --- .../integrywmsnative/MainActivity.java | 34 +- .../core/utility/UtilityLogger.java | 2 + .../spedizione_new/SpedizioneActivity.java | 20 +- .../spedizione_new/SpedizioneViewModel.java | 3 +- .../AutoCloseBottomSheetBehavior.java | 34 + .../BottomSheetFragmentBaseView.java | 129 ++++ ...etFragmentViewNotInitializedException.java | 2 +- ...ttomSheetFragmentLUContentListAdapter.java | 2 +- .../BottomSheetFragmentLUContentView.java | 126 +--- ...BottomSheetFragmentLUContentViewModel.java | 10 + .../BottomSheetMtbColrEditView.java | 97 +++ .../BottomSheetMtbColrEditViewModel.java | 22 + .../exceptions/NullMtbColrException.java | 9 + .../layout/bottom_sheet__mtb_colr_edit.xml | 229 ++++++ .../bottom_sheet_fragment__lu_content.xml | 674 +++++++++--------- ...ragment_articoli_in_collo_bottom_sheet.xml | 3 +- 16 files changed, 949 insertions(+), 447 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/AutoCloseBottomSheetBehavior.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/BottomSheetFragmentBaseView.java rename app/src/main/java/it/integry/integrywmsnative/view/{bottom_sheet__lu_content => bottom_sheet__base}/exceptions/BottomSheetFragmentViewNotInitializedException.java (74%) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/exceptions/NullMtbColrException.java create mode 100644 app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index 574fc65a..14977d3d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -315,23 +315,23 @@ public class MainActivity extends BaseActivity private void init(){ - ServerStatusChecker.getInstance().addCallback(value -> { - if(value && (!mIsOnline || firstCheckExecution)){ - - SettingsManager.loadDBVariables(() -> { - mIsOnline = true; - firstCheckExecution = false; - - }, ex -> { - //mNoConnectionLayout.expand(true); - if(mIsOnline) mIsOnline = false; - } - ); - - } else if(!value && mIsOnline){ - mIsOnline = false; - } - }); +// ServerStatusChecker.getInstance().addCallback(value -> { +// if(value && (!mIsOnline || firstCheckExecution)){ +// +// SettingsManager.loadDBVariables(() -> { +// mIsOnline = true; +// firstCheckExecution = false; +// +// }, ex -> { +// //mNoConnectionLayout.expand(true); +// if(mIsOnline) mIsOnline = false; +// } +// ); +// +// } else if(!value && mIsOnline){ +// mIsOnline = false; +// } +// }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java index d13ef3d4..dc478f3c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java @@ -44,6 +44,8 @@ public class UtilityLogger { public static void errorMe(Exception ex, String additionalText, Runnable onComplete, RunnableArgs onFailed) { if(!BuildConfig.DEBUG) FirebaseCrashlytics.getInstance().recordException(ex); + logMe(ex.getMessage()); + // if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) || // (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) || // (!(ex instanceof IOException) && !(ex.getCause() instanceof IOException))) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java index d2a17466..45597395 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java @@ -8,6 +8,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import android.app.Dialog; import android.os.Bundle; import android.text.SpannableString; +import android.widget.Toast; import com.annimon.stream.Stream; import com.tfb.fbtoast.FBToast; @@ -35,13 +36,11 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding; @@ -51,7 +50,6 @@ import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; 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.bottom_sheet__lu_content.exceptions.BottomSheetFragmentViewNotInitializedException; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; @@ -61,7 +59,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO; -public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners, BottomSheetFragmentLUContentViewModel.Listener { +public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener { private ActivitySpedizioneBinding mBindings; @@ -117,9 +115,9 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV mBindings.setLifecycleOwner(this); mBindings.setSpedizioneView(this); - mBindings.bottomSheetLuContent.init(mBindings.bottomSheetLuContent); + mBindings.bottomSheetLuContent.setListener(this); + mBindings.bottomSheetLuContent.init(mBindings.bottomSheetLuContent, null); mBottomSheetFragmentLUContentViewModel = mBindings.bottomSheetLuContent.getViewModelInstance(); - mBottomSheetFragmentLUContentViewModel.setListener(this); this.initVars(); @@ -505,4 +503,14 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV public void onBottomSheetLUClose() { this.mViewmodel.closeLU(true); } + + @Override + public void onMtbColrEdit(MtbColr mtbColr) { + Toast.makeText(this, "Edit", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onMtbColrDelete(MtbColr mtbColr) { + Toast.makeText(this, "Delete", Toast.LENGTH_SHORT).show(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java index ada2d15e..27caf042 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java @@ -675,12 +675,11 @@ public class SpedizioneViewModel { if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) { numCnfDaPrelevare = mtbColrToDispatch.getNumCnf(); qtaColDaPrelevare = mtbColrToDispatch.getQtaCol(); - qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf(); } else { numCnfDaPrelevare = numCnfDaEvadere; qtaColDaPrelevare = qtaDaEvadere; - qtaCnfDaPrelevare = qtaCnfDaEvadere; } + qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf(); totalQtaAvailable = mtbColrToDispatch.getQtaCol(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/AutoCloseBottomSheetBehavior.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/AutoCloseBottomSheetBehavior.java new file mode 100644 index 00000000..4f0551ad --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/AutoCloseBottomSheetBehavior.java @@ -0,0 +1,34 @@ +package it.integry.integrywmsnative.view.bottom_sheet__base; + +import android.content.Context; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; + +import androidx.coordinatorlayout.widget.CoordinatorLayout; + +import com.google.android.material.bottomsheet.BottomSheetBehavior; + +public class AutoCloseBottomSheetBehavior extends BottomSheetBehavior { + + public AutoCloseBottomSheetBehavior(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN && + getState() == BottomSheetBehavior.STATE_EXPANDED) { + + Rect outRect = new Rect(); + child.getGlobalVisibleRect(outRect); + + if (!outRect.contains((int) event.getRawX(), (int) event.getRawY())) { + setState(BottomSheetBehavior.STATE_COLLAPSED); + } + } + return super.onInterceptTouchEvent(parent, child, event); + } +} + diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/BottomSheetFragmentBaseView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/BottomSheetFragmentBaseView.java new file mode 100644 index 00000000..9e878e01 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/BottomSheetFragmentBaseView.java @@ -0,0 +1,129 @@ +package it.integry.integrywmsnative.view.bottom_sheet__base; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; + +import com.google.android.material.bottomsheet.BottomSheetBehavior; + +import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.view.bottom_sheet__base.exceptions.BottomSheetFragmentViewNotInitializedException; + +public abstract class BottomSheetFragmentBaseView extends ConstraintLayout { + + protected Context mContext; + protected View parentView; + + protected BottomSheetBehavior mBottomSheetBehavior; + + public BottomSheetFragmentBaseView(Context context) { + this(context, null); + } + + public BottomSheetFragmentBaseView(Context context, AttributeSet attrs) { + super(context, attrs); + this.mContext = context; + } + + public BottomSheetFragmentBaseView(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs); + } + + public BottomSheetFragmentBaseView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + this(context, attrs); + } + + + public void init(View view, View backgroundView) { + this.parentView = view; + this.mBottomSheetBehavior = BottomSheetBehavior.from(this.parentView); + + this.mBottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { + @Override + public void onStateChanged(@NonNull View bottomSheet, int newState) { + if (newState == BottomSheetBehavior.STATE_COLLAPSED && backgroundView != null) + backgroundView.setVisibility(View.GONE); + + onStateChangedCallback(mapState(newState)); + } + + @Override + public void onSlide(@NonNull View bottomSheet, float slideOffset) { + if(backgroundView != null) { + backgroundView.setVisibility(View.VISIBLE); + backgroundView.setAlpha(slideOffset); + } + + onSlideCallback(1 - slideOffset); + } + }); + } + + public void expand() { + if(this.mBottomSheetBehavior == null) { + UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); + return; + } + + this.mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + } + + public void collapse() { + if(this.mBottomSheetBehavior == null) { + UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); + return; + } + + this.mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + + public boolean isExpanded() { + return this.getState() == State.EXPANDED; + } + + public boolean isCollapsed() { + return this.getState() == State.COLLAPSED; + } + + + public State getState() { + if(this.mBottomSheetBehavior == null) { + UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); + return null; + } + + return mapState(this.mBottomSheetBehavior.getState()); + } + + public void toggle() { + if(isExpanded()) collapse(); + else expand(); + } + + protected State mapState(int stateInt) { + if(stateInt == BottomSheetBehavior.STATE_DRAGGING) return State.DRAGGING; + if(stateInt == BottomSheetBehavior.STATE_SETTLING) return State.SETTLING; + if(stateInt == BottomSheetBehavior.STATE_EXPANDED) return State.EXPANDED; + if(stateInt == BottomSheetBehavior.STATE_COLLAPSED) return State.COLLAPSED; + if(stateInt == BottomSheetBehavior.STATE_HIDDEN) return State.HIDDEN; + if(stateInt == BottomSheetBehavior.STATE_HALF_EXPANDED) return State.HALF_EXPANDED; + + return null; + } + + protected abstract void onStateChangedCallback(State newState); + + protected abstract void onSlideCallback(float slideOffset); + + public enum State { + DRAGGING, + SETTLING, + EXPANDED, + COLLAPSED, + HIDDEN, + HALF_EXPANDED + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/exceptions/BottomSheetFragmentViewNotInitializedException.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/exceptions/BottomSheetFragmentViewNotInitializedException.java similarity index 74% rename from app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/exceptions/BottomSheetFragmentViewNotInitializedException.java rename to app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/exceptions/BottomSheetFragmentViewNotInitializedException.java index a14c39c8..8ab1a53f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/exceptions/BottomSheetFragmentViewNotInitializedException.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__base/exceptions/BottomSheetFragmentViewNotInitializedException.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.view.bottom_sheet__lu_content.exceptions; +package it.integry.integrywmsnative.view.bottom_sheet__base.exceptions; public class BottomSheetFragmentViewNotInitializedException extends Exception { public BottomSheetFragmentViewNotInitializedException() { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java index 10322dd1..f637c95e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java @@ -11,6 +11,7 @@ import androidx.databinding.Observable; import androidx.databinding.ObservableField; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.WeakReferenceOnListChangedCallback; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; @@ -40,7 +41,6 @@ public class BottomSheetFragmentLUContentListAdapter extends BaseAdapter { }); } - private void onLUChangedCallback() { if(this.mtbColt.get() != null) { this.mtbColt.get().getMtbColr().addOnListChangedCallback(onListChangedCallback); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java index c98695ac..7663dceb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java @@ -7,38 +7,30 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.databinding.DataBindingUtil; import androidx.databinding.Observable; import androidx.databinding.ObservableList; import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.linearlistview.LinearListView; import java.util.List; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.model.MtbColr; -import it.integry.integrywmsnative.core.utility.UtilityLogger; -import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentBinding; -import it.integry.integrywmsnative.view.bottom_sheet__lu_content.exceptions.BottomSheetFragmentViewNotInitializedException; +import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView; +import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; -public class BottomSheetFragmentLUContentView extends ConstraintLayout { - - private final Context mContext; - private BottomSheetBehavior mBottomSheetBehavior; +public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseView implements BottomSheetMtbColrEditView.Listener { private BottomSheetFragmentLuContentBinding mBinding; private BottomSheetFragmentLUContentViewModel mViewModel; private BottomSheetFragmentLUContentListAdapter mAdapter; - - public BottomSheetFragmentLUContentView(Context context) { - this(context, null); - } + private Listener mListener; public BottomSheetFragmentLUContentView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -51,41 +43,26 @@ public class BottomSheetFragmentLUContentView extends ConstraintLayout { mViewModel = new BottomSheetFragmentLUContentViewModel(); mBinding.setViewModel(mViewModel); + mBinding.bottomSheetMtbColrEdit.setListener(this); + mBinding.bottomSheetMtbColrEdit.init(mBinding.bottomSheetMtbColrEdit, mBinding.bottomSheetMtbColrEditBackground); + this.initAdapter(); this.initCallbacks(); } - public BottomSheetFragmentLUContentView(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, attrs); - } - - public BottomSheetFragmentLUContentView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - this(context, attrs); - } - public BottomSheetFragmentLUContentViewModel getViewModelInstance() { return mViewModel; } - public void init(View view) { - this.mBottomSheetBehavior = BottomSheetBehavior.from(view); - - this.mBottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - @Override - public void onStateChanged(@NonNull View bottomSheet, int newState) { - onStateChangedCallback(mapState(newState)); - } - - @Override - public void onSlide(@NonNull View bottomSheet, float slideOffset) { - onSlideCallback(1 - slideOffset); - } - }); - } private void initAdapter() { this.mAdapter = new BottomSheetFragmentLUContentListAdapter(this.mContext, this.mViewModel.getObservableMtbColt()); this.mBinding.linearListview.setAdapter(this.mAdapter); + + this.mBinding.linearListview.setOnItemClickListener((parent, view, position, id) -> { + this.mBinding.bottomSheetMtbColrEdit.setMtbColr(this.mViewModel.getObservableMtbColt().get().getMtbColr().get(position)); + this.mBinding.bottomSheetMtbColrEdit.expand(); + }); } private void initCallbacks() { @@ -112,53 +89,13 @@ public class BottomSheetFragmentLUContentView extends ConstraintLayout { mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size())); } - private State mapState(int stateInt) { - if(stateInt == BottomSheetBehavior.STATE_DRAGGING) return State.DRAGGING; - if(stateInt == BottomSheetBehavior.STATE_SETTLING) return State.SETTLING; - if(stateInt == BottomSheetBehavior.STATE_EXPANDED) return State.EXPANDED; - if(stateInt == BottomSheetBehavior.STATE_COLLAPSED) return State.COLLAPSED; - if(stateInt == BottomSheetBehavior.STATE_HIDDEN) return State.HIDDEN; - if(stateInt == BottomSheetBehavior.STATE_HALF_EXPANDED) return State.HALF_EXPANDED; - - return null; + public BottomSheetFragmentLUContentView setListener(Listener listener) { + this.mListener = listener; + return this; } - public State getState() { - if(this.mBottomSheetBehavior == null) { - UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); - return null; - } - - return mapState(this.mBottomSheetBehavior.getState()); - } - - public boolean isExpanded() { - return this.getState() == State.EXPANDED; - } - - public boolean isCollapsed() { - return this.getState() == State.COLLAPSED; - } - - public void expand() { - if(this.mBottomSheetBehavior == null) { - UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); - return; - } - - this.mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); - } - - public void collapse() { - if(this.mBottomSheetBehavior == null) { - UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); - return; - } - - this.mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); - } - - private void onStateChangedCallback(State newState) { + @Override + protected void onStateChangedCallback(State newState) { switch (newState) { case EXPANDED: this.mBinding.btnCloseLu.setClickable(false); @@ -172,24 +109,27 @@ public class BottomSheetFragmentLUContentView extends ConstraintLayout { } } - private void onSlideCallback(float slideOffset) { + @Override + protected void onSlideCallback(float slideOffset) { this.mBinding.btnCloseLu.setAlpha(slideOffset); // mBinding.tapActionLayout.setAlpha(1-slideOffset); } - - public void toggle() { - if(isExpanded()) collapse(); - else expand(); + @Override + public void onMtbColrEdit(MtbColr mtbColr) { + if(mListener != null) this.mListener.onMtbColrEdit(mtbColr); } - public enum State { - DRAGGING, - SETTLING, - EXPANDED, - COLLAPSED, - HIDDEN, - HALF_EXPANDED + @Override + public void onMtbColrDelete(MtbColr mtbColr) { + if(mListener != null) this.mListener.onMtbColrDelete(mtbColr); + } + + + public interface Listener { + void onMtbColrEdit(MtbColr mtbColr); + + void onMtbColrDelete(MtbColr mtbColr); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java index 0dced7d8..9a99aa4c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java @@ -8,6 +8,7 @@ public class BottomSheetFragmentLUContentViewModel { public ObservableField mtbColt = new ObservableField<>(); private Listener mListener; + private MtbColrListener mMtbColrListener; public void closeCurrentLU() { if(this.mListener != null) this.mListener.onBottomSheetLUClose(); @@ -27,7 +28,16 @@ public class BottomSheetFragmentLUContentViewModel { return this; } + public BottomSheetFragmentLUContentViewModel setMtbColrListener(MtbColrListener mtbColrListener) { + this.mMtbColrListener = mtbColrListener; + return this; + } + public interface Listener { void onBottomSheetLUClose(); } + + public interface MtbColrListener { + + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java new file mode 100644 index 00000000..7bff48eb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java @@ -0,0 +1,97 @@ +package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.databinding.BottomSheetMtbColrEditBinding; +import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView; +import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.exceptions.NullMtbColrException; + +public class BottomSheetMtbColrEditView extends BottomSheetFragmentBaseView { + + private BottomSheetMtbColrEditBinding mBinding; + private BottomSheetMtbColrEditViewModel mViewModel; + + + private Listener mListener; + + public BottomSheetMtbColrEditView(Context context, AttributeSet attrs) { + super(context, attrs); + + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mBinding = DataBindingUtil.inflate(inflater, R.layout.bottom_sheet__mtb_colr_edit, this, true); + + + mViewModel = new BottomSheetMtbColrEditViewModel(); + mBinding.setViewModel(mViewModel); + mBinding.setView(this); + } + + public void setMtbColr(MtbColr mtbColr) { + this.mBinding.invalidateAll(); + this.mViewModel.setMtbColr(mtbColr); + this.mBinding.executePendingBindings(); + + this.parentView.requestLayout(); + } + + public void editMtbColr() { + if(this.mListener != null) this.mListener.onMtbColrEdit(this.mViewModel.getMtbColr()); + this.collapse(); + } + + public void deleteMtbColr() { + if(this.mListener != null) this.mListener.onMtbColrDelete(this.mViewModel.getMtbColr()); + this.collapse(); + } + + + + + + @Override + public void expand() { + if(this.mViewModel.getMtbColr() == null) { + UtilityLogger.errorMe(new NullMtbColrException()); + return; + } + + super.expand(); + } + + @Override + protected void onStateChangedCallback(State newState) { + if(newState == State.COLLAPSED) this.mViewModel.setMtbColr(null); + } + + @Override + protected void onSlideCallback(float slideOffset) { + + } + + + public BottomSheetMtbColrEditViewModel getViewModelInstance() { + return this.mViewModel; + } + + + public BottomSheetMtbColrEditView setListener(Listener listener) { + this.mListener = listener; + return this; + } + + public interface Listener { + + void onMtbColrEdit(MtbColr mtbColr); + + void onMtbColrDelete(MtbColr mtbColr); + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditViewModel.java new file mode 100644 index 00000000..d237c14c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditViewModel.java @@ -0,0 +1,22 @@ +package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit; + +import androidx.databinding.ObservableField; + +import it.integry.integrywmsnative.core.model.MtbColr; + +public class BottomSheetMtbColrEditViewModel { + + private ObservableField mtbColr = new ObservableField<>(); + + + public MtbColr getMtbColr() { + return mtbColr.get(); + } + + public BottomSheetMtbColrEditViewModel setMtbColr(MtbColr mtbColr) { + this.mtbColr.set(mtbColr); + return this; + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/exceptions/NullMtbColrException.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/exceptions/NullMtbColrException.java new file mode 100644 index 00000000..0a5fec8e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/exceptions/NullMtbColrException.java @@ -0,0 +1,9 @@ +package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.exceptions; + +public class NullMtbColrException extends Exception { + + public NullMtbColrException() { + super("Please set MtbColr before opening the BottomSheet"); + } + +} diff --git a/app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml b/app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml new file mode 100644 index 00000000..b3542995 --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml index bb4934ed..519aa703 100644 --- a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml +++ b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml @@ -1,5 +1,7 @@ - + @@ -14,371 +16,393 @@ type="it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView" /> - + android:background="@color/full_white"> - - - + + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@android:color/white"> - - - + app:layout_constraintTop_toTopOf="parent"> - + + + app:layout_constraintTop_toBottomOf="@id/indicator_view"> - + + + + + + + + + + android:layout_alignParentEnd="true" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:text="@string/action_close_ul" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@id/indicator_view" + app:singleClick="@{() -> viewModel.closeCurrentLU()}" + app:strokeColor="@color/red_600" /> + - - - - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/title_layout"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + android:padding="15dp"> - - - + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + android:paddingTop="14dp"> + + + + + + + + + + + + + + - + + + + + - - - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml b/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml index e99be958..f3e0206b 100644 --- a/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml +++ b/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml @@ -411,13 +411,12 @@ android:orientation="vertical" android:padding="16dp" app:behavior_hideable="true" - app:behavior_peekHeight="0dp" + app:behavior_peekHeight="160dp" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">