diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index d168708f..96beb22f 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -147,8 +147,8 @@
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index ae9c4825..9c11ed7b 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 681f41ae..b557e853 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,5 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
new file mode 100644
index 00000000..9aa69d84
--- /dev/null
+++ b/.idea/dbnavigator.xml
@@ -0,0 +1,456 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b0c7b20c..10118312 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,7 +5,7 @@
diff --git a/.idea/modules.xml b/.idea/modules.xml
index e6b355dc..131e7827 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,6 +2,7 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index 25b69c70..f34f696d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 90
- def appVersionName = '1.8.3'
+ def appVersionCode = 91
+ def appVersionName = '1.8.4'
signingConfigs {
release {
@@ -97,18 +97,18 @@ dependencies {
implementation 'com.orhanobut:logger:2.2.0'
implementation 'com.google.firebase:firebase-core:17.2.0'
implementation 'com.google.firebase:firebase-crash:16.2.1'
- implementation 'com.google.firebase:firebase-perf:19.0.0'
+ implementation 'com.google.firebase:firebase-perf:19.0.1'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- implementation 'com.google.android.material:material:1.1.0-alpha10'
+ implementation 'com.google.android.material:material:1.1.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.recyclerview:recyclerview:1.1.0-beta04'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0-beta05'
implementation 'androidx.preference:preference:1.1.0'
- implementation 'com.squareup.okhttp3:okhttp:4.1.0'
- implementation 'com.squareup.retrofit2:retrofit:2.6.1'
- implementation 'com.squareup.retrofit2:converter-gson:2.6.1'
+ implementation 'com.squareup.okhttp3:okhttp:4.2.2'
+ implementation 'com.squareup.retrofit2:retrofit:2.6.2'
+ implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
implementation 'com.annimon:stream:1.2.1'
implementation 'androidx.lifecycle:lifecycle-runtime:2.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
index 18b580f8..3240bfd2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
@@ -18,10 +18,19 @@ import androidx.appcompat.widget.SearchView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.SubMenu;
import android.view.View;
import androidx.fragment.app.FragmentTransaction;
+import androidx.recyclerview.widget.GridLayoutManager;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
+import it.integry.integrywmsnative.core.class_router.ClassRouter;
+import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
+import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
+import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
@@ -32,10 +41,12 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.update.UpdatesManager;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.databinding.ActivityMainBinding;
+import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.main.MainFragment;
+import it.integry.integrywmsnative.gest.main.MenuListAdapter;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
@@ -80,6 +91,7 @@ public class MainActivity extends AppCompatActivity
mBinding.navView.setNavigationItemSelectedListener(this);
mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
+ initGestMenu();
openMain();
init();
@@ -115,17 +127,14 @@ public class MainActivity extends AppCompatActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
return true;
}
- public void setItem(@IdRes int menuId) {
+ public void setMenuItem(@IdRes int menuId) {
mBinding.navView.setCheckedItem(menuId);
onNavigationItemSelected(mBinding.navView.getMenu().findItem(menuId));
}
- @SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
@@ -135,91 +144,31 @@ public class MainActivity extends AppCompatActivity
Fragment fragment = null;
int id = item.getItemId();
+ BaseMenuConfiguration.MenuItem menuItem = getMenuItem(id);
- switch(id) {
- case R.id.nav_home:
- this.pop();
- break;
+ if(menuItem != null) {
+ fragment = menuItem.getFragmentClass();
+ this.adaptViewToFragment(fragment);
+ } else {
+ switch (id) {
+ case R.id.nav_home:
+ this.pop();
+ break;
- case R.id.nav_accettazione:
- fragment = MainAccettazioneFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_rettifica_giacenze:
- fragment = RettificaGiacenzeFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_spedizione:
- fragment = MainVenditaFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_versamento_merce:
- fragment = VersamentoMerceFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_free_picking:
- fragment = PickingLiberoFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_resi_fornitore:
- fragment = UltimiArriviFornitoreFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_resi_cliente:
- fragment = UltimeConsegneClienteFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
-
-
- case R.id.nav_prod_ordine_produzione:
- fragment = ProdOrdineProduzioneElencoFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_prod_ordine_lavorazione:
- fragment = ProdOrdineLavorazioneElencoFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_prod_versamento_materiale:
- fragment = ProdVersamentoMaterialeFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
- case R.id.nav_prod_recupero_materiale:
- fragment = ProdRecuperoMaterialeFragment.newInstance();
- this.adaptViewToFragment(fragment);
- break;
-
-
-
-
- case R.id.nav_settings:
- fragment = new MainSettingsFragment();
- this.adaptViewToFragment(fragment);
- break;
-
-
-
-
- case R.id.nav_logout:
- UtilitySettings.logout();
- ServerStatusChecker.dispose();
-
- startLoginActivity();
- break;
+ case R.id.nav_settings:
+ fragment = new MainSettingsFragment();
+ this.adaptViewToFragment(fragment);
+ break;
+ case R.id.nav_logout:
+ UtilitySettings.logout();
+ ServerStatusChecker.dispose();
+ startLoginActivity();
+ break;
+ }
}
-
changeContentFragment(fragment, true);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
@@ -228,6 +177,57 @@ public class MainActivity extends AppCompatActivity
}
+ private void initGestMenu() {
+ Menu menu = mBinding.navView.getMenu();
+
+ ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
+ BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
+ List menuGroups = menuConfiguration.getGroups();
+
+ menu.add(R.id.nav_home, R.id.nav_home, 0, R.string.home)
+ .setIcon(R.drawable.ic_black_home);
+
+ for(MenuConfiguration.MenuGroup menuGroup : menuGroups) {
+
+ SubMenu subMenu = menu.addSubMenu(menuGroup.getGroupText());
+
+ for(MenuConfiguration.MenuItem menuItem : menuGroup.getItems()) {
+ subMenu
+ .add(menuGroup.getGroupId(), menuItem.getID(), 0, menuItem.getTitleText())
+ .setIcon(menuItem.getDrawerIcon());
+ }
+ }
+
+
+ SubMenu subMenu = menu.addSubMenu(R.string.other);
+ subMenu.add(R.id.nav_home, R.id.nav_settings, 0, R.string.general_settings)
+ .setIcon(R.drawable.ic_settings_24dp);
+ subMenu.add(R.id.nav_logout, R.id.nav_logout, 0, R.string.logout)
+ .setIcon(R.drawable.ic_logout_24dp);
+ }
+
+ private MenuConfiguration.MenuItem getMenuItem(@IdRes int menuId) {
+ ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
+ BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
+ List menuGroups = menuConfiguration.getGroups();
+
+ BaseMenuConfiguration.MenuItem menuItemToReturn = null;
+
+ for(MenuConfiguration.MenuGroup menuGroup : menuGroups) {
+ for(MenuConfiguration.MenuItem menuItem : menuGroup.getItems()) {
+ if(menuId == menuItem.getID()) {
+ menuItemToReturn = menuItem;
+ break;
+ }
+ }
+
+ if(menuItemToReturn != null) break;
+ }
+
+
+ return menuItemToReturn;
+ }
+
private void openMain() {
MainFragment mainFragment = MainFragment.newInstance();
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
index 77ca9bbf..5f6efa2d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
@@ -31,7 +31,8 @@ public class CommonConst {
public static String[] forErrors = {
"syslogs@integry.it",
- "g.scorrano@integry.it"
+ "g.scorrano@integry.it",
+ "v.castellana@integry.it"
};
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
index 604f1231..d5050fbf 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
@@ -6,6 +6,7 @@ import android.util.Pair;
import java.util.ArrayList;
import java.util.List;
+import it.integry.integrywmsnative.core.class_router.exceptions.MethodPathNotRegisteredException;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
public class ClassRouter {
@@ -62,14 +63,14 @@ public class ClassRouter {
try {
if (!checkIClassExists(path)) {
- //throw new MethodPathNotRegisteredException(path);
+ throw new MethodPathNotRegisteredException(path);
}
Class clazz = mRouteClasses.get(getClassIndex(path)).second;
return (T)clazz.newInstance();
- } catch (Exception ex) {
+ } catch (InstantiationException | MethodPathNotRegisteredException | IllegalAccessException ex) {
UtilityExceptions.defaultException(context, ex, true);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java
index 9a7ba14a..b10666ef 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java
@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.class_router.configs;
import androidx.annotation.DrawableRes;
import androidx.annotation.IdRes;
import androidx.annotation.StringRes;
+import androidx.fragment.app.Fragment;
import java.util.ArrayList;
import java.util.List;
@@ -26,9 +27,21 @@ public class BaseMenuConfiguration {
@StringRes
private int mGroupText;
+ @IdRes
+ private int mGroupId;
+
private List