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 5977300c..be64c81a 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/runConfigurations/app.xml b/.idea/runConfigurations/app.xml
index bf2ef1a7..fc9d4646 100644
--- a/.idea/runConfigurations/app.xml
+++ b/.idea/runConfigurations/app.xml
@@ -6,7 +6,7 @@
-
+
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
index d964b525..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,12 +127,10 @@ 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));
}
@@ -134,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);
@@ -227,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/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