From 1098c7573e9d84229a9736459076ee0b30aad5eb Mon Sep 17 00:00:00 2001 From: Giuseppe Scorrano Date: Thu, 12 Apr 2018 11:47:57 +0200 Subject: [PATCH] Implementata prima parte del bottomSheet --- .idea/assetWizardSettings.xml | 48 ++ .idea/caches/build_file_checksums.ser | Bin 541 -> 541 bytes app/build.gradle | 18 +- .../core/REST/RESTBuilder.java | 4 +- .../integrywmsnative/core/model/MtbColt.java | 8 +- .../core/utility/UtilityDimension.java | 6 + .../MainAccettazioneFragment.java | 29 +- .../accettazione/core/AccettazioneHelper.java | 2 +- .../AccettazioneOrdineInevasoActivity.java | 22 +- .../ArticoliInColloBottomSheetHelper.java | 135 ++++++ .../dialogs/DialogSimpleMessageHelper.java | 97 +++- app/src/main/res/drawable/circleshape.xml | 13 + .../main/res/drawable/circular_background.xml | 12 + app/src/main/res/drawable/ic_close_24dp.xml | 5 + .../main/res/drawable/ic_done_white_24dp.xml | 5 + .../main/res/drawable/ic_error_white_24dp.xml | 5 + app/src/main/res/drawable/ic_info_24dp.xml | 5 + .../res/drawable/ic_warning_white_24dp.xml | 5 + .../activity_accettazione_ordine_inevaso.xml | 182 +++---- .../main/res/layout/dialog_custom_content.xml | 34 ++ ...ialog_custom_content_hashmap_viewmodel.xml | 73 +++ .../main/res/layout/dialog_custom_header.xml | 25 +- ...ragment_articoli_in_collo_bottom_sheet.xml | 455 ++++++++++++++++++ app/src/main/res/values-it/strings.xml | 18 + app/src/main/res/values/strings.xml | 22 + app/src/main/res/values/styles.xml | 11 + build.gradle | 2 +- 27 files changed, 1112 insertions(+), 129 deletions(-) create mode 100644 .idea/assetWizardSettings.xml create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/ArticoliInColloBottomSheetHelper.java create mode 100644 app/src/main/res/drawable/circleshape.xml create mode 100644 app/src/main/res/drawable/circular_background.xml create mode 100644 app/src/main/res/drawable/ic_close_24dp.xml create mode 100644 app/src/main/res/drawable/ic_done_white_24dp.xml create mode 100644 app/src/main/res/drawable/ic_error_white_24dp.xml create mode 100644 app/src/main/res/drawable/ic_info_24dp.xml create mode 100644 app/src/main/res/drawable/ic_warning_white_24dp.xml create mode 100644 app/src/main/res/layout/dialog_custom_content.xml create mode 100644 app/src/main/res/layout/dialog_custom_content_hashmap_viewmodel.xml create mode 100644 app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml new file mode 100644 index 00000000..5f8570c9 --- /dev/null +++ b/.idea/assetWizardSettings.xml @@ -0,0 +1,48 @@ + + + + + + \ No newline at end of file diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index d69cfe29c9c8bf12b8347a0cafe37aab1a5b50df..fa7c3e39468d374957cb3ae9661266c61122f3be 100644 GIT binary patch delta 56 zcmV-80LTBG1f2wsm;|nbH$9P@cMvMyLhYqKh+4(eD_z4bN=%a@0gez||1Usm@fMRK0ge!Bluzv?jQ2%l ONEtvZkM|6d!2w*5Cl?a{ diff --git a/app/build.gradle b/app/build.gradle index 7d7e3264..fd89b8b8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 + compileSdkVersion 26 buildToolsVersion '27.0.3' defaultConfig { applicationId "it.integry.integrywmsnative" @@ -24,12 +24,12 @@ dependencies { androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - implementation 'com.android.support:appcompat-v7:25.4.0' - implementation 'com.android.support:support-v4:25.4.0' - implementation 'com.android.support:design:25.4.0' + implementation 'com.android.support:appcompat-v7:26.1.0' + implementation 'com.android.support:support-v4:26.1.0' + implementation 'com.android.support:design:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' - implementation 'com.android.support:cardview-v7:25.4.0' - implementation 'com.android.support:recyclerview-v7:25.4.0' + implementation 'com.android.support:cardview-v7:26.1.0' + implementation 'com.android.support:recyclerview-v7:26.1.0' implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.0.0' @@ -40,5 +40,11 @@ dependencies { //implementation 'com.getbase:floatingactionbutton:1.10.1' implementation 'com.github.clans:fab:1.6.4' + implementation 'de.hdodenhof:circleimageview:2.2.0' + + implementation 'com.mahc.custombottomsheetbehavior:googlemaps-like:0.9.1' + implementation 'com.sothree.slidinguppanel:library:3.4.0' + + testImplementation 'junit:junit:4.12' } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java index 7f4f9b20..6ca39509 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java @@ -14,8 +14,8 @@ public class RESTBuilder { OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new HttpInterceptor()).build(); Retrofit retrofit = new Retrofit.Builder() - .baseUrl("http://192.168.2.13:8080/ems-api/") -// .baseUrl("http://www2.studioml.it/ems-api/") +// .baseUrl("http://192.168.2.13:8080/ems-api/") + .baseUrl("http://www2.studioml.it/ems-api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index 63cbc049..4be21c2d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.core.model; import java.math.BigDecimal; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -64,10 +65,15 @@ public class MtbColt extends EntityBase{ return this; } - public String getDataCollo() { + public String getDataColloS() { return dataCollo; } + public Date getDataColloD() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + return sdf.parse(getDataColloS()); + } + public MtbColt setDataCollo(String dataCollo) { this.dataCollo = dataCollo; return this; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java index c2004065..95a44372 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.utility; import android.content.Context; import android.content.res.Resources; +import android.util.DisplayMetrics; import android.util.TypedValue; public class UtilityDimension { @@ -13,7 +14,12 @@ public class UtilityDimension { size, r.getDisplayMetrics() ); + } + public static float convertDpToPixel(float dp){ + DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); + float px = dp * (metrics.densityDpi / 160f); + return Math.round(px); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java index 719780cb..f586676b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.accettazione; import android.app.ProgressDialog; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; @@ -10,12 +11,13 @@ import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; +import android.text.Html; +import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; -import java.net.SocketException; import java.util.ArrayList; import java.util.List; @@ -121,7 +123,7 @@ public class MainAccettazioneFragment extends Fragment implements ICheckBoxCallb String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); if(errorMessage == null) errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), errorMessage, null).show(); + DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); } }); @@ -241,14 +243,25 @@ public class MainAccettazioneFragment extends Fragment implements ICheckBoxCallb final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), getText(R.string.loading) + " ...", true); - helper.retrievePiclingList(barcodes, new ILoadPickingListCallback() { + helper.retrievePickingList(barcodes, new ILoadPickingListCallback() { @Override - public void onLoadSuccess(List ordini) { + public void onLoadSuccess(final List ordini) { progress.dismiss(); - Intent myIntent = new Intent(getActivity(), AccettazioneOrdineInevasoActivity.class); - myIntent.putExtra("key", (ArrayList) ordini); //Optional parameters - getActivity().startActivity(myIntent); + DialogSimpleMessageHelper.makeInfoDialog(getActivity(), + getText(R.string.orders).toString(), + Html.fromHtml(String.format(getText(R.string.loaded_orders_message).toString(), ordini.size())), + null, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + + Intent myIntent = new Intent(getActivity(), AccettazioneOrdineInevasoActivity.class); + myIntent.putExtra("key", (ArrayList) ordini); //Optional parameters + getActivity().startActivity(myIntent); + + } + }).show(); } @@ -259,7 +272,7 @@ public class MainAccettazioneFragment extends Fragment implements ICheckBoxCallb String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), errorMessage, null).show(); + DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java index d0022178..872efaf1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java @@ -69,7 +69,7 @@ public class AccettazioneHelper { }); } - public void retrievePiclingList(List barcodeOrdini, final ILoadPickingListCallback callback){ + public void retrievePickingList(List barcodeOrdini, final ILoadPickingListCallback callback){ String joinedBarcodes = TextUtils.join(",", barcodeOrdini); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java index 48c1312e..2026a62b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java @@ -2,15 +2,20 @@ package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso; import android.content.Context; import android.content.DialogInterface; +import android.support.design.widget.BottomSheetBehavior; +import android.support.design.widget.BottomSheetDialog; +import android.support.v4.widget.NestedScrollView; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; +import android.text.SpannableString; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.widget.LinearLayout; import android.widget.Toast; import com.github.clans.fab.FloatingActionButton; @@ -36,6 +41,7 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core.Accetta import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core.MainListOrdineAccettazioneAdapter; import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.AccettazioneOrdineInevasoOrderBy; import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.views.NoteAggiuntiveNuovaULDialog; +import it.integry.integrywmsnative.view.ArticoliInColloBottomSheetHelper; import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { @@ -48,6 +54,8 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { @BindView(R.id.accettazione_ordine_inevaso_fab_item1) FloatingActionButton fabItem1; @BindView(R.id.accettazione_ordine_inevaso_fab_item2) FloatingActionButton fabItem2; + @BindView(R.id.bottom_sheet1) View layoutBottomSheet; + private MainListOrdineAccettazioneAdapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; @@ -61,6 +69,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { private Context mContext = this; + private ArticoliInColloBottomSheetHelper mArticoliInColloBottomSheetHelper; @Override protected void onCreate(Bundle savedInstanceState) { @@ -86,6 +95,8 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini); initRecyclerView(groupedRighe); + + initBottomDialog(); } @Override @@ -137,11 +148,15 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { mAdapter = helper.getRightListAdapter(AccettazioneOrdineInevasoOrderBy.Enum.COD_ART_FOR, groupedRighe); } catch (Exception e) { e.printStackTrace(); - DialogSimpleMessageHelper.makeErrorDialog(this, e.toString(), null).show(); + DialogSimpleMessageHelper.makeErrorDialog(this, new SpannableString(e.toString()), null, null).show(); } mRecyclerView.setAdapter(mAdapter); } + private void initBottomDialog(){ + + mArticoliInColloBottomSheetHelper = new ArticoliInColloBottomSheetHelper(this, layoutBottomSheet); + } private void showOrderDialog() { @@ -215,7 +230,8 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { ColliMagazzinoRESTConsumer.saveCollo(mtbColt, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { - DialogSimpleMessageHelper.makeInfoDialog(mContext, "Salvataggio", "Salvataggio collo avvenuto con successo\nNumero collo: " + value.getNumCollo(), null).show(); + mArticoliInColloBottomSheetHelper.initCollo(value); + DialogSimpleMessageHelper.makeInfoDialog(mContext, "Creazione UL",new SpannableString("Salvataggio collo avvenuto con successo"), null, null).show(); } @Override @@ -223,7 +239,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); if(errorMessage == null) errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(mContext, errorMessage, null).show(); + DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(errorMessage), null, null).show(); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/ArticoliInColloBottomSheetHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/ArticoliInColloBottomSheetHelper.java new file mode 100644 index 00000000..9d2350c7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/ArticoliInColloBottomSheetHelper.java @@ -0,0 +1,135 @@ +package it.integry.integrywmsnative.view; + +import android.support.annotation.NonNull; +import android.support.design.widget.AppBarLayout; +import android.support.design.widget.BottomSheetBehavior; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.AppCompatButton; +import android.support.v7.widget.AppCompatTextView; +import android.support.v7.widget.Toolbar; +import android.text.SpannableString; +import android.view.View; +import android.widget.RelativeLayout; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; + + +public class ArticoliInColloBottomSheetHelper extends BottomSheetBehavior.BottomSheetCallback { + + private AppCompatActivity mActivity; + + @BindView(R.id.articoli_in_collo_sheet_button) AppCompatButton mSheetButtonToggle; + @BindView(R.id.articoli_in_collo_close_collo) AppCompatButton mCloseULButton; + @BindView(R.id.articoli_in_collo_title) AppCompatTextView mTitleTextView; + @BindView(R.id.articoli_in_collo_details_date) AppCompatTextView mDetailDateTextView; + @BindView(R.id.articoli_in_collo_details_posizione) AppCompatTextView mDetailPosizioneTextView; + @BindView(R.id.articoli_in_collo_details_preparatoDa) AppCompatTextView mDetailPreparatoDaTextView; + + @BindView(R.id.appbar_bottom_sheet) AppBarLayout appBarLayoutBottomSheet; + @BindView(R.id.toolbar_bottom_sheet) Toolbar toolbarBottomSheet; + + @BindView(R.id.tap_action_layout) RelativeLayout tapActionLayout; + private BottomSheetBehavior mBottomSheetBehavior; + + private MtbColt mMtbColt; + + public ArticoliInColloBottomSheetHelper(AppCompatActivity context, View rootView){ + mActivity = context; + + ButterKnife.bind(this, rootView); + + mBottomSheetBehavior = BottomSheetBehavior.from(rootView); + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + mBottomSheetBehavior.setBottomSheetCallback(this); + + toolbarBottomSheet.setNavigationIcon(R.drawable.ic_close_24dp); + toolbarBottomSheet.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(mBottomSheetBehavior.getState()==BottomSheetBehavior.STATE_EXPANDED) { + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + } + }); + + tapActionLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(mBottomSheetBehavior.getState()==BottomSheetBehavior.STATE_COLLAPSED) { + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + } + } + }); + + + mCloseULButton.setText(mActivity.getText(R.string.action_close_ul) + " "); + updateRigheNumber(0); + + } + + public void initCollo(MtbColt mtbColt){ + this.mMtbColt = mtbColt; + + SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy"); + + mTitleTextView.setText(String.format(mActivity.getText(R.string.articoli_in_collo_sheet_title).toString(), mtbColt.getNumCollo())); + try { + mDetailDateTextView.setText(sdf.format(mtbColt.getDataColloD())); + } catch (ParseException e) { + e.printStackTrace(); + DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(e.toString()), null, null).show(); + } + + mDetailPosizioneTextView.setText(mtbColt.getPosizione() != null ? mtbColt.getPosizione() : "N/A"); + mDetailPreparatoDaTextView.setText(mtbColt.getPreparatoDa() != null ? mtbColt.getPreparatoDa() : "N/A"); + + } + + public void updateRigheNumber(int newRigheNumber){ + mSheetButtonToggle.setText(" " + newRigheNumber + " " + mActivity.getResources().getQuantityString(R.plurals.articles, newRigheNumber)); + } + + @OnClick(R.id.articoli_in_collo_sheet_button) + public void onClick(View view) { + if (mBottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) { + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + } else { + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + } + + @Override + public void onStateChanged(@NonNull View bottomSheet, int newState) { + switch (newState) { + case BottomSheetBehavior.STATE_HIDDEN: +// mRootView.scrollTo(0, 0); + break; + case BottomSheetBehavior.STATE_EXPANDED: + break; + case BottomSheetBehavior.STATE_COLLAPSED: +// mRootView.scrollTo(0, 0); + break; + case BottomSheetBehavior.STATE_DRAGGING: +// mRootView.scrollTo(0, 0); + break; + case BottomSheetBehavior.STATE_SETTLING: +// mRootView.scrollTo(0, 0); + break; + } + } + + @Override + public void onSlide(@NonNull View bottomSheet, float slideOffset) { + appBarLayoutBottomSheet.setAlpha(slideOffset); + tapActionLayout.setAlpha(1-slideOffset); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java index d368560e..9d965bb1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java @@ -3,11 +3,26 @@ package it.integry.integrywmsnative.view.dialogs; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; +import android.content.res.ColorStateList; +import android.graphics.drawable.Drawable; +import android.support.constraint.ConstraintLayout; +import android.support.v4.content.ContextCompat; +import android.support.v7.widget.AppCompatImageView; +import android.support.v7.widget.AppCompatTextView; +import android.text.Html; +import android.text.Spanned; import android.view.LayoutInflater; import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; +import java.util.HashMap; + +import de.hdodenhof.circleimageview.CircleImageView; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityDimension; /** * Created by GiuseppeS on 22/03/2018. @@ -17,8 +32,9 @@ public class DialogSimpleMessageHelper { public enum TYPE { INFO(1), - WARNING(2), - ERROR(3); + SUCCESS(2), + WARNING(3), + ERROR(4); private int value; TYPE(int value) { @@ -36,40 +52,69 @@ public class DialogSimpleMessageHelper { } } - private static AlertDialog makeBase(TYPE type, Context mContext, String titleText, String messageText, DialogInterface.OnClickListener onPositiveClick, DialogInterface.OnClickListener onNegativeClick){ + private static AlertDialog makeBase(TYPE type, Context mContext, String titleText, Spanned messageText, HashMap hashmapContent, DialogInterface.OnClickListener onPositiveClick, DialogInterface.OnClickListener onNegativeClick){ LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - View titleView = inflater.inflate(R.layout.dialog_custom_header, null); int colorBackgroundTitle = -1; - int colorTextTitle = -1; + Drawable titleIconRes = null; switch (type){ case INFO: - colorBackgroundTitle = mContext.getResources().getColor(R.color.colorPrimary); - colorTextTitle = mContext.getResources().getColor(android.R.color.white); + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.colorPrimary); + titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_info_24dp); + break; + + case SUCCESS: + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.green_500); + titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_done_white_24dp); break; case WARNING: - colorBackgroundTitle = mContext.getResources().getColor(R.color.yellow_600); - colorTextTitle = mContext.getResources().getColor(android.R.color.black); + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.yellow_600); + titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_warning_white_24dp); break; case ERROR: - colorBackgroundTitle = mContext.getResources().getColor(R.color.red_600); - colorTextTitle = mContext.getResources().getColor(android.R.color.white); + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.red_600); + titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_error_white_24dp); break; } - View backgroundView = titleView.findViewById(R.id.llsubhead); - backgroundView.setBackgroundColor(colorBackgroundTitle); - TextView title = (TextView) titleView.findViewById(R.id.exemptionSubHeading4); + //Title VIEW + View titleView = inflater.inflate(R.layout.dialog_custom_header, null); + TextView title = titleView.findViewById(R.id.title_text); title.setText(titleText); - title.setTextColor(colorTextTitle); + + AppCompatImageView civ = titleView.findViewById(R.id.title_icon); + ColorStateList colorStateList = ColorStateList.valueOf(colorBackgroundTitle); + civ.setImageTintList(colorStateList); + civ.setImageDrawable(titleIconRes); + + //Content View + View contentView = inflater.inflate(R.layout.dialog_custom_content, null); + TextView contentMessage = contentView.findViewById(R.id.dialog_content_main_message); + contentMessage.setText(messageText); + + LinearLayout hashMapContainer = contentView.findViewById(R.id.dialog_content_hashmap); + + if(hashmapContent != null) { + for (int i = 0; i < hashmapContent.keySet().size(); i++) { + String currentKey = hashmapContent.keySet().toArray()[i].toString(); + String currentValue = hashmapContent.get(currentKey); + + RelativeLayout singleMapContent = (RelativeLayout) inflater.inflate(R.layout.dialog_custom_content_hashmap_viewmodel, null); + ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_key)).setText(currentKey); + ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_value)).setText(currentValue); + + hashMapContainer.addView(singleMapContent); + } + } AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext) .setCustomTitle(titleView) - .setMessage(messageText) + .setView(contentView) +// .setMessage(messageText) .setPositiveButton(mContext.getText(R.string.ok), onPositiveClick); if(onNegativeClick != null){ @@ -83,31 +128,45 @@ public class DialogSimpleMessageHelper { } - public static AlertDialog makeInfoDialog(Context mContext, String titleText, String messageText, DialogInterface.OnClickListener onPositiveClick){ + public static AlertDialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap hashmapContent, DialogInterface.OnClickListener onPositiveClick){ return makeBase(TYPE.INFO, mContext, titleText, messageText, + hashmapContent, onPositiveClick, null); } - public static AlertDialog makeWarningDialog(Context mContext, String messageText, DialogInterface.OnClickListener onPositiveClick){ + public static AlertDialog makeSuccessDialog(Context mContext, String titleText, Spanned messageText, HashMap hashmapContent, DialogInterface.OnClickListener onPositiveClick){ + return makeBase(TYPE.SUCCESS, + mContext, + titleText, + messageText, + hashmapContent, + onPositiveClick, + null); + } + + + public static AlertDialog makeWarningDialog(Context mContext, Spanned messageText, HashMap hashmapContent, DialogInterface.OnClickListener onPositiveClick){ return makeBase(TYPE.WARNING, mContext, mContext.getText(R.string.warning).toString(), messageText, + hashmapContent, onPositiveClick, null); } - public static AlertDialog makeErrorDialog(Context mContext, String messageText, DialogInterface.OnClickListener onPositiveClick){ + public static AlertDialog makeErrorDialog(Context mContext, Spanned messageText, HashMap hashmapContent, DialogInterface.OnClickListener onPositiveClick){ return makeBase(TYPE.ERROR, mContext, mContext.getText(R.string.error).toString(), messageText, + hashmapContent, onPositiveClick, null); diff --git a/app/src/main/res/drawable/circleshape.xml b/app/src/main/res/drawable/circleshape.xml new file mode 100644 index 00000000..72a65f0a --- /dev/null +++ b/app/src/main/res/drawable/circleshape.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circular_background.xml b/app/src/main/res/drawable/circular_background.xml new file mode 100644 index 00000000..687539f0 --- /dev/null +++ b/app/src/main/res/drawable/circular_background.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_close_24dp.xml b/app/src/main/res/drawable/ic_close_24dp.xml new file mode 100644 index 00000000..0c8775c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_close_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_done_white_24dp.xml b/app/src/main/res/drawable/ic_done_white_24dp.xml new file mode 100644 index 00000000..1c53ecbd --- /dev/null +++ b/app/src/main/res/drawable/ic_done_white_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_error_white_24dp.xml b/app/src/main/res/drawable/ic_error_white_24dp.xml new file mode 100644 index 00000000..6cfb3cb6 --- /dev/null +++ b/app/src/main/res/drawable/ic_error_white_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_info_24dp.xml b/app/src/main/res/drawable/ic_info_24dp.xml new file mode 100644 index 00000000..20ef9346 --- /dev/null +++ b/app/src/main/res/drawable/ic_info_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_warning_white_24dp.xml b/app/src/main/res/drawable/ic_warning_white_24dp.xml new file mode 100644 index 00000000..3aea284b --- /dev/null +++ b/app/src/main/res/drawable/ic_warning_white_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml index e9ece705..a21f5ee6 100644 --- a/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml +++ b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml @@ -1,97 +1,113 @@ - - + android:fitsSystemWindows="true" + xmlns:fab="http://schemas.android.com/apk/res-auto"> - - - + android:layout_height="match_parent" + android:orientation="vertical"> - + - + - + + - + - - - + - + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_custom_content.xml b/app/src/main/res/layout/dialog_custom_content.xml new file mode 100644 index 00000000..51690596 --- /dev/null +++ b/app/src/main/res/layout/dialog_custom_content.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_custom_content_hashmap_viewmodel.xml b/app/src/main/res/layout/dialog_custom_content_hashmap_viewmodel.xml new file mode 100644 index 00000000..3b9f94ab --- /dev/null +++ b/app/src/main/res/layout/dialog_custom_content_hashmap_viewmodel.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_custom_header.xml b/app/src/main/res/layout/dialog_custom_header.xml index 8e5aeba9..a7e28e8f 100644 --- a/app/src/main/res/layout/dialog_custom_header.xml +++ b/app/src/main/res/layout/dialog_custom_header.xml @@ -1,4 +1,5 @@ + > + + + android:gravity="center" + android:textColor="@android:color/black" + android:textSize="24sp"/> + + \ 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 new file mode 100644 index 00000000..fdf06cd6 --- /dev/null +++ b/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml @@ -0,0 +1,455 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 70b4b36f..8d46edde 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -23,4 +23,22 @@ Conferma Note Aggiuntive Inserisci eventuali note aggiuntive della tua UL + + + referenza + referenze + + + articolo + articoli + + Chiudi UL + Articoli presenti + Ordini + %d ordini]]> + + Dettagli + Data + Posizione + Preparato da \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 04b0103a..09b4543a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,4 +31,26 @@ Additional notes Enter any additional notes in your logistics unit + + Hello blank fragment + + + + reference + references + + + item + items + + Close LU + Submitted items + Orders + %d orders loaded]]> + + Details + Date + Position + Prepared by + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 8b15c937..7b775b93 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -22,4 +22,15 @@ @color/white + + + + + + + diff --git a/build.gradle b/build.gradle index e9645bb7..54f71c29 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'com.android.tools.build:gradle:3.1.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files