From d7915e187f4fc2956fc9faf61eabfe36add2ab8e Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 22 Jan 2019 12:51:36 +0100 Subject: [PATCH 1/8] Re-Integrato Crashlytics --- .idea/caches/build_file_checksums.ser | Bin 729 -> 729 bytes app/build.gradle | 2 +- .../core/context/AppContext.java | 10 +++++----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 2f087de4c751be98a2beb4359b9973e628b5ff15..f6df0495e91f8ae8ee51af3e765ba5dacf59eeec 100644 GIT binary patch delta 35 tcmV+;0NnrC1=$6VnFC{Y)RCOE5VG2IUA}nX!=W7xPQIo)zO!KgcmX;75XArh delta 35 rcmcb~dXsg+OlA(VYZK>e6)1VE7v|N<&{ZPNJ$?V1lIfch87mk83nmVf diff --git a/app/build.gradle b/app/build.gradle index a549ce41..088edd08 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ buildscript { } apply plugin: 'com.android.application' apply plugin: 'com.google.firebase.firebase-perf' -//apply plugin: 'io.fabric' +apply plugin: 'io.fabric' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'com.google.gms.google-services' diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index d4ce4766..03eb4fcb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -85,11 +85,11 @@ public class AppContext { private void initRecoverColli() { ColliDataRecover.init(mContext); - if(ColliDataRecover.thereIsAnExistantSession()){ - MtbColt recoveredMtbColt = ColliDataRecover.getFirstSession(); - - - } +// if(ColliDataRecover.thereIsAnExistantSession()){ +// MtbColt recoveredMtbColt = ColliDataRecover.getFirstSession(); +// +// +// } } } From 38f7be50763821866a7c05f11f770b85a3f491f0 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 23 Jan 2019 16:59:30 +0100 Subject: [PATCH 2/8] Implementazione del DataCache per gestire lo spostamento dati da un'activity all'altra. Iniziata implementazione del recover del collo di Vendita. --- .../integrywmsnative/MainActivity.java | 10 +- .../core/context/AppContext.java | 22 +- .../core/data_cache/DataCache.java | 43 ++ .../core/data_cache/DataCacheDTO.java | 25 + .../core/data_recover/ColliDataRecover.java | 81 ++- ...Fragment.java => IScrollableFragment.java} | 2 +- .../MainAccettazioneFragment.java | 14 +- .../AccettazioneOrdineInevasoActivity.java | 3 +- .../gest/main/MainFragment.java | 46 +- .../gest/vendita/MainVenditaFragment.java | 34 +- .../VenditaOrdineInevasoActivity.java | 7 +- .../main/res/drawable/curved_progress_bar.xml | 19 + app/src/main/res/drawable/ic_recover_96.png | Bin 0 -> 1721 bytes .../res/drawable/progress_bar_background.xml | 16 + app/src/main/res/layout/activity_splash.xml | 4 +- app/src/main/res/layout/fragment_main.xml | 618 +++++++++--------- app/src/main/res/values/styles.xml | 16 +- 17 files changed, 593 insertions(+), 367 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCacheDTO.java rename app/src/main/java/it/integry/integrywmsnative/core/interfaces/{IRecyclerFragment.java => IScrollableFragment.java} (82%) create mode 100644 app/src/main/res/drawable/curved_progress_bar.xml create mode 100644 app/src/main/res/drawable/ic_recover_96.png create mode 100644 app/src/main/res/drawable/progress_bar_background.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index ebaa3bca..172420a0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -13,21 +13,17 @@ import androidx.drawerlayout.widget.DrawerLayout; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.SearchView; -import androidx.appcompat.widget.Toolbar; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; import androidx.fragment.app.FragmentTransaction; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; -import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -207,8 +203,8 @@ public class MainActivity extends AppCompatActivity mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE); } - if(fragment instanceof IRecyclerFragment) { - ((IRecyclerFragment) fragment).setWaterfallToolbar(mBinding.appBarMain.waterfallToolbar); + if(fragment instanceof IScrollableFragment) { + ((IScrollableFragment) fragment).setWaterfallToolbar(mBinding.appBarMain.waterfallToolbar); } if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index 03eb4fcb..310aab93 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -8,12 +8,16 @@ import com.orhanobut.logger.Logger; import io.fabric.sdk.android.Fabric; import it.integry.integrywmsnative.BuildConfig; +import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.Stash; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; @@ -85,11 +89,19 @@ public class AppContext { private void initRecoverColli() { ColliDataRecover.init(mContext); -// if(ColliDataRecover.thereIsAnExistantSession()){ -// MtbColt recoveredMtbColt = ColliDataRecover.getFirstSession(); -// -// -// } + if(ColliDataRecover.thereIsAnExistantSession()){ + Integer recoveredMtbColtID = ColliDataRecover.getFirstSessionID(); + MtbColt recoveredMtbColt = ColliDataRecover.getSession(recoveredMtbColtID); + + if(recoveredMtbColt != null && recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) { + ColliMagazzinoRESTConsumer.distribuisciCollo(recoveredMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.UPDATE, + mtbColts -> { + ColliDataRecover.closeSession(recoveredMtbColtID); + + }, + ex -> UtilityExceptions.defaultException(mContext, ex)); + } + } } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java b/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java new file mode 100644 index 00000000..85870e11 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java @@ -0,0 +1,43 @@ +package it.integry.integrywmsnative.core.data_cache; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class DataCache { + + private static List dataCacheList = new ArrayList<>(); + + + public static String addItem(Object item) { + String uniqueID = UUID.randomUUID().toString(); + + DataCacheDTO dataCacheDTO = new DataCacheDTO() + .setItem(item) + .setUUID(uniqueID); + + dataCacheList.add(dataCacheDTO); + + return uniqueID; + } + + public static T retrieveItem(String uuid) { + + List dataCacheTemp = Stream.of(dataCacheList) + .filter(x -> x.getUUID().equals(uuid)).toList(); + + Object foundDataCache = null; + + if(dataCacheTemp != null && dataCacheTemp.size() > 0) { + foundDataCache = dataCacheTemp.get(0).getItem(); + dataCacheList.remove(dataCacheTemp.get(0)); + } + + return (T)foundDataCache; + + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCacheDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCacheDTO.java new file mode 100644 index 00000000..7244aabe --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCacheDTO.java @@ -0,0 +1,25 @@ +package it.integry.integrywmsnative.core.data_cache; + +public class DataCacheDTO { + + private String UUID; + private Object item; + + public String getUUID() { + return UUID; + } + + public DataCacheDTO setUUID(String UUID) { + this.UUID = UUID; + return this; + } + + public Object getItem() { + return item; + } + + public DataCacheDTO setItem(Object item) { + this.item = item; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java index 76378d38..d5925631 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java @@ -2,9 +2,18 @@ package it.integry.integrywmsnative.core.data_recover; import android.content.Context; +import com.google.android.gms.common.util.IOUtils; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; @@ -19,6 +28,7 @@ public class ColliDataRecover { private String serCollo; private String dataCollo; private String gestioneCollo; + private String filtro; public int getNumCollo() { return numCollo; @@ -55,6 +65,15 @@ public class ColliDataRecover { this.gestioneCollo = gestioneCollo; return this; } + + public String getFiltro() { + return filtro; + } + + public RecoverDTO setFiltro(String filtro) { + this.filtro = filtro; + return this; + } } private static Context mContext; @@ -63,36 +82,48 @@ public class ColliDataRecover { public static void init(Context context) { mContext = context; + + if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) { + loadLocalFile(); + } } public static boolean thereIsAnExistantSession() { return mtbColtsSessions.size() > 0; } - public static MtbColt getFirstSession() { + public static Integer getFirstSessionID() { if(thereIsAnExistantSession()){ - RecoverDTO dto = mtbColtsSessions.get(0); - mtbColtsSessions.remove(dto); - - return new MtbColt() - .setNumCollo(dto.getNumCollo()) - .setSerCollo(dto.getSerCollo()) - .setGestione(dto.getGestioneCollo()) - .setDataCollo(dto.getDataCollo()); + return 0; } else return null; } + public static MtbColt getSession(Integer sessionID) { + + if(sessionID == null) return null; + + RecoverDTO dto = mtbColtsSessions.get(sessionID); + + return new MtbColt() + .setNumCollo(dto.getNumCollo()) + .setSerCollo(dto.getSerCollo()) + .setGestione(dto.getGestioneCollo()) + .setDataCollo(dto.getDataCollo()) + .setFiltroOrdini(dto.getFiltro()); + } + public static int startNewSession(MtbColt mtbColtSession) { RecoverDTO recoverDTO = new RecoverDTO() .setDataCollo(mtbColtSession.getDataColloS()) .setNumCollo(mtbColtSession.getNumCollo()) .setSerCollo(mtbColtSession.getSerCollo()) - .setGestioneCollo(mtbColtSession.getGestione()); + .setGestioneCollo(mtbColtSession.getGestione()) + .setFiltro(mtbColtSession.getFiltroOrdini()); mtbColtsSessions.add(recoverDTO); updateLocalFile(); @@ -105,6 +136,28 @@ public class ColliDataRecover { } + private static void loadLocalFile() { + InputStream inputStream; + + Gson gson = new Gson(); + + try { + inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE); + + byte[] bytes = IOUtils.readInputStreamFully(inputStream); + String jsonString = new String(bytes); + + Type listType = new TypeToken>(){}.getType(); + mtbColtsSessions = gson.fromJson(jsonString, listType); + + inputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + UtilityExceptions.defaultException(mContext, e); + } + } + + private static void updateLocalFile() { FileOutputStream outputStream; @@ -119,7 +172,13 @@ public class ColliDataRecover { e.printStackTrace(); UtilityExceptions.defaultException(mContext, e); } - } + private static boolean isFilePresent(String fileName) { + String path = mContext.getFilesDir().getAbsolutePath() + "/" + fileName; + File file = new File(path); + return file.exists(); + } + + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IRecyclerFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IScrollableFragment.java similarity index 82% rename from app/src/main/java/it/integry/integrywmsnative/core/interfaces/IRecyclerFragment.java rename to app/src/main/java/it/integry/integrywmsnative/core/interfaces/IScrollableFragment.java index ef17dcba..9bf27421 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IRecyclerFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IScrollableFragment.java @@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.interfaces; import it.integry.plugins.waterfalltoolbar.WaterfallToolbar; -public interface IRecyclerFragment { +public interface IScrollableFragment { void setWaterfallToolbar(WaterfallToolbar waterfallToolbar); 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 4d5a9ed5..19eb727f 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 @@ -5,13 +5,12 @@ import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; -import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.appcompat.widget.SearchView; + import android.text.Html; import android.text.SpannableString; import android.view.LayoutInflater; @@ -31,6 +30,7 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.REST.CommonRESTException; import it.integry.integrywmsnative.core.coollection.Coollection; +import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -39,7 +39,7 @@ import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper; import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter; import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback; import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback; -import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; @@ -48,7 +48,7 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.Accettazione import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; import it.integry.plugins.waterfalltoolbar.WaterfallToolbar; -public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IRecyclerFragment { +public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment { private static WaterfallToolbar mWaterfallToolbar; @@ -239,9 +239,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag } mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged); - // mAdapter.setHasStableIds(true); mBinding.accettazioneMainList.setAdapter(mAdapter); - //mRecyclerView.setAdapter(mAdapter); } @OnClick(R.id.accettazione_main_fab) @@ -286,8 +284,10 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag null, () -> { + String cacheItemID = DataCache.addItem(ordini); + Intent myIntent = new Intent(getActivity(), AccettazioneOrdineInevasoActivity.class); - myIntent.putExtra("key", (ArrayList) ordini); //Optional parameters + myIntent.putExtra("key", cacheItemID); //Optional parameters getActivity().startActivity(myIntent); }).show(); 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 dfeba83b..1b19bb7d 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 @@ -14,6 +14,7 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding; @@ -41,7 +42,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude; mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings); - List orders = (ArrayList)getIntent().getSerializableExtra("key"); + List orders = DataCache.retrieveItem(getIntent().getStringExtra("key")); mAccettazioneOrdineInevasoViewModel = new AccettazioneOnOrdineAccettazioneInevasoViewModel( this, mArticoliInColloBottomSheetViewModel, orders); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index 123d91a2..cbc8f074 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -6,6 +6,7 @@ import android.os.Bundle; import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.AppCompatTextView; +import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; @@ -23,24 +24,23 @@ import de.hdodenhof.circleimageview.CircleImageView; import it.integry.integrywmsnative.MainActivity; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.wifi.WiFiCheckerViewHolder; +import it.integry.integrywmsnative.databinding.FragmentMainBinding; +import it.integry.plugins.waterfalltoolbar.WaterfallToolbar; /** * A simple {@link Fragment} subclass. * Use the {@link MainFragment#newInstance} factory method to * create an instance of this fragment. */ -public class MainFragment extends Fragment implements ITitledFragment { +public class MainFragment extends Fragment implements ITitledFragment, IScrollableFragment { + private FragmentMainBinding mBindings; - @BindView(R.id.no_connection_top_layout) ExpandableLayout mNoConnectionLayout; - @BindView(R.id.current_user_name) TextView currentUsername; - @BindView(R.id.current_deposito) TextView currentDeposito; -// @BindView(R.id.drawer_logoAzienda) CircleImageView currentLogoAzienda; - - private View mView; + private WaterfallToolbar mWaterfallToolbar; public MainFragment() { } @@ -61,24 +61,26 @@ public class MainFragment extends Fragment implements ITitledFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment - mView = inflater.inflate(R.layout.fragment_main, container, false); - ButterKnife.bind(this, mView); + mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false); + + ButterKnife.bind(this, mBindings.getRoot()); + + mWaterfallToolbar.setNestedScrollView(mBindings.fragmentMainScrollview); init(); - return mView; + return mBindings.getRoot(); } private void init(){ ServerStatusChecker.getIstance().addCallback(value -> { - if(value && mNoConnectionLayout.isExpanded()){ + if(value && mBindings.noConnectionTopLayout.isExpanded()){ collapseNoConnectionLayout(); - } else if(!value && !mNoConnectionLayout.isExpanded()){ + } else if(!value && !mBindings.noConnectionTopLayout.isExpanded()){ expandNoConnectionLayout(); } }); @@ -91,8 +93,8 @@ public class MainFragment extends Fragment implements ITitledFragment { } private void initSessionData() { - currentUsername.setText(SettingsManager.i().user.fullname); - currentDeposito.setText(String.format("%s - %s", SettingsManager.i().userSession.depo.getCodMdep(), SettingsManager.i().userSession.depo.getDescrizione())); + mBindings.currentUserName.setText(SettingsManager.i().user.fullname); + mBindings.currentDeposito.setText(String.format("Deposito: %s • %s", SettingsManager.i().userSession.depo.getCodMdep(), SettingsManager.i().userSession.depo.getDescrizione())); if(SettingsManager.iDB().getDatiAzienda() != null && SettingsManager.iDB().getDatiAzienda().isLogoAvailable()) { // currentLogoAzienda.setImageBitmap(SettingsManager.iDB().getDatiAzienda().getLogo()); @@ -100,14 +102,20 @@ public class MainFragment extends Fragment implements ITitledFragment { } private void collapseNoConnectionLayout(){ - if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.collapse(true)); + if(getActivity() != null) getActivity().runOnUiThread(() -> mBindings.noConnectionTopLayout.collapse(true)); } private void expandNoConnectionLayout(){ - if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.expand(true)); + if(getActivity() != null) getActivity().runOnUiThread(() -> mBindings.noConnectionTopLayout.expand(true)); } + private void startRecoverMode() { + mBindings.recoverDataExpandableLayout.expand(true); + } + private void endRecoverMode() { + mBindings.recoverDataExpandableLayout.collapse(true); + } @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { @@ -139,4 +147,8 @@ public class MainFragment extends Fragment implements ITitledFragment { ((MainActivity) getActivity()).setItem(R.id.nav_free_picking); } + @Override + public void setWaterfallToolbar(WaterfallToolbar waterfallToolbar) { + mWaterfallToolbar = waterfallToolbar; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java index 5713d1a0..55e982f6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java @@ -4,7 +4,6 @@ import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; -import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; import android.os.Bundle; @@ -30,9 +29,10 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.CommonRESTException; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; -import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -52,7 +52,7 @@ import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInev import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; import it.integry.plugins.waterfalltoolbar.WaterfallToolbar; -public class MainVenditaFragment extends Fragment implements ITitledFragment, IRecyclerFragment, ISelectAllFragment, IFilterableFragment { +public class MainVenditaFragment extends Fragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment { private static WaterfallToolbar mWaterfallToolbar; @@ -190,7 +190,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR .forEach(anagOrd -> { String codAnagOrd = anagOrd.substring(0, anagOrd.indexOf("#_#")); - String ragSocOrd = anagOrd.substring(anagOrd.indexOf("#_#") + 3, anagOrd.length()); + String ragSocOrd = anagOrd.substring(anagOrd.indexOf("#_#") + 3); OrdineVenditaGroupedInevasoDTO groupedOrdine = new OrdineVenditaGroupedInevasoDTO(); @@ -354,11 +354,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR null, () -> { - Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class); - myIntent.putExtra("keyPickingList", (ArrayList) ordini); //Optional parameters - myIntent.putExtra("keyTestateOrdini", (ArrayList)selectedOrders); - myIntent.putExtra("keyColliRegistrati", (ArrayList)mtbColtList); - getActivity().startActivity(myIntent); + startVenditaActivity(ordini, selectedOrders, mtbColtList); }).show(); @@ -404,7 +400,6 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR public void onFilterClick() { DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, mAppliedFilterViewModel, (filteredOrderList, filter) -> { - mAppliedFilterViewModel = filter; if(filteredOrderList != null){ @@ -414,6 +409,25 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR } }).show(); + } + + private void startVenditaActivity(List ordini, List selectedOrders, List mtbColtList) { + + Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class); + + String keyPickingList = DataCache.addItem(ordini); + myIntent.putExtra("keyPickingList", keyPickingList); + + String keyTestateOrdini = DataCache.addItem(selectedOrders); + myIntent.putExtra("keyTestateOrdini", keyTestateOrdini); + + String keyColliRegistrati = DataCache.addItem(mtbColtList); + myIntent.putExtra("keyColliRegistrati", keyColliRegistrati); + + getActivity().startActivity(myIntent); + + + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java index 37d9df78..91e32670 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java @@ -14,6 +14,7 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding; @@ -44,9 +45,9 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity { FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude; mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings); - List pickingList = (ArrayList)getIntent().getSerializableExtra("keyPickingList"); - List testateOrdini = (ArrayList)getIntent().getSerializableExtra("keyTestateOrdini"); - List colliRegistrati = (ArrayList) getIntent().getSerializableExtra("keyColliRegistrati"); + List pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList")); + List testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini")); + List colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati")); mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel( this, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati); diff --git a/app/src/main/res/drawable/curved_progress_bar.xml b/app/src/main/res/drawable/curved_progress_bar.xml new file mode 100644 index 00000000..414b5395 --- /dev/null +++ b/app/src/main/res/drawable/curved_progress_bar.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_recover_96.png b/app/src/main/res/drawable/ic_recover_96.png new file mode 100644 index 0000000000000000000000000000000000000000..3fdf95d8f5fd443f65355d49a8b03640da520e75 GIT binary patch literal 1721 zcmV;q21fabP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D22M#tK~#8N?VU%6 zJVg|TSH%Q^Srh|?qY)Db1{4EE^r#~ES5Zu$f}$dry_gXXBBB`ZU_?9^5JmAKW)Grb z)`K}-%>F*vg0^|HRWn`HT|M(Y_}FE`bk*D0?y6VSua_LhaU92S9LI4gV^evkJXhW> zpOtUR59Rmrw`IRu{@Ppe8F`yLTOKSomP2v*^2gDzt~^@aA_?Z-@}G|WC0~~}$Rp(1 zvJVJ8$FH8%xp=YG94tFE^K|ObR{@ z&av_bX*I59zm^PvW2_W>91Je9H_NU=$*<(Y@(Ovp++A)bH5z`HB)5>%WJJ6En>mPK_DP6NvlCAzADd`J4uGAv$DF}RbD8WS6IhN@hQ2UY?2au z?42#;JJM>*O8zWwlsn2&>@07Uze=kOEBT6KW)7*r$6nb%GNiK_GD)rvoL)APeL*0v zmHg4IHcgUw1E*E%dz0*qt>h=tYJ?@%hI?dqR}H}y@Jx5IzOiE?aAGtQ4$1hSge z!P;Id$41WJV|K{rr=*k_?Tn4w!N=^7qp=Ruls{07L(P>a5q!)F8O|@Ib)X>U{hB6O zDU=F6W`#9e>mW_k6olJ?tiT7^3g{Fh zw%ue;=@cZk*^0Gcry$&cXaznvmi*6X;Wkh!@WHOP^*9my4=@?}Zp9=>>^kG8pvkbE z(TYj%TiF@E2v25PX~iVSR{hSzhM{}OMP+Yk#Ux1VI^z?u$*}9sib;@Ln>ypEh{;?n zt(XKU8qyh0#!co?X~iVSF6++3($U-sx`^p$?!aV}W5p!Moj0BF1sR*&q!o)G_ZVlZ zRrIE`4icpJ#-eeNv|#F^jw0 z7X?bHSuqH*M>czDw3MxhLl(&E3pO9eN*z!VEjuZja~EM!cAd2P-gIA?os{kA6y4iQ z&MTBQh@Fbxm&N8qDK}``E9aF5q}Au9r^#Zl01>OHz@+T}Id4!)&gyT|&t&lhs`I3E z@TTO!DcUqIu;`Rh35L8`aTtr-j9)snu_=c?dBG)>J={>|@`(-g_h4Y{3^ z^g>fA!3=iMjWJ8%RuXt@?_lk@FJ>*=O5f;X)$p#GrA{+Bb}BHIT;T6gx|lxEw^6`F z_C;xRBt_O+DRIfp1Gaz63ct&1uz=pBc=ro(Yz3(P8zC@6O&!url6^^_I`C0WO}WOBOP$p!6ZfK2;W9 zMyweUU~G9|FHIkhGGx;f$D*|6JgnGdg;M}q`q)?bhGd7a6~t+5KFpJA&_bPNx + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index 071e1444..238aed23 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -52,10 +52,10 @@ android:id="@+id/progressBar2" style="?android:attr/progressBarStyleHorizontal" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="8dp" android:layout_marginTop="24dp" android:indeterminate="true" - android:indeterminateTint="@android:color/white" + android:indeterminateDrawable="@drawable/curved_progress_bar" app:layout_constraintLeft_toRightOf="@+id/guideline_left_progress" app:layout_constraintRight_toLeftOf="@+id/guideline_right_progress" app:layout_constraintTop_toBottomOf="@id/imageView" /> diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index f51af0cc..6aa4f8c7 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -1,4 +1,5 @@ + - + android:layout_height="wrap_content"> - - + android:orientation="vertical"> - - + android:layout_gravity="center_horizontal" + android:gravity="center_horizontal"> - + android:background="@color/colorPrimary" + android:paddingTop="16dp" + android:paddingBottom="24dp" + android:paddingLeft="16dp" + android:paddingRight="16dp"> - - - + android:gravity="center_vertical" + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + + app:el_duration="400" + app:el_expanded="false"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="vertical" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@id/central_guideline_dashboard" + app:layout_constraintTop_toTopOf="parent"> - - - - - - - - - - - - - - - - + - + - + - + - - + + - + - + - + + - + + - - - + - - - - - + - - - - - - - - - - - - - + + @@ -642,4 +671,5 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index bcde4e13..bbfed21a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -21,26 +21,24 @@ @font/open_sans_regular - -