Creato menu drawer dinamico

This commit is contained in:
2019-10-22 19:22:25 +02:00
parent 02d0ac04a9
commit a0f2dfc4a6
20 changed files with 477 additions and 219 deletions

View File

@@ -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<MenuConfiguration.MenuGroup> 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<MenuConfiguration.MenuGroup> 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();

View File

@@ -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<MenuItem> mItems = new ArrayList<>();
public int getGroupText() {
public @IdRes int getGroupId() {
return mGroupId;
}
public MenuGroup setGroupId(@IdRes int mGroupId) {
this.mGroupId = mGroupId;
return this;
}
public @StringRes int getGroupText() {
return mGroupText;
}
@@ -48,11 +61,11 @@ public class BaseMenuConfiguration {
}
public static class MenuItem {
@IdRes
private int mID;
@IdRes private int mID;
@StringRes private int mTitleText;
@DrawableRes
private int mTitleIcon;
@DrawableRes private int mTitleIcon;
@DrawableRes private int mDrawerIcon;
private Fragment fragmentClass;
public int getID() {
return mID;
@@ -80,6 +93,24 @@ public class BaseMenuConfiguration {
mTitleIcon = titleIcon;
return this;
}
public int getDrawerIcon() {
return mDrawerIcon;
}
public MenuItem setDrawerIcon(@DrawableRes int drawerIcon) {
mDrawerIcon = drawerIcon;
return this;
}
public Fragment getFragmentClass() {
return fragmentClass;
}
public MenuItem setFragmentClass(Fragment fragmentClass) {
this.fragmentClass = fragmentClass;
return this;
}
}

View File

@@ -1,6 +1,17 @@
package it.integry.integrywmsnative.core.class_router.configs;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
public class MenuConfiguration extends BaseMenuConfiguration {
@@ -12,70 +23,96 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addGroup(
new MenuGroup()
.setGroupText(R.string.purchase)
.setGroupId(R.id.nav_group_acquisto)
.addItem(new MenuItem()
.setID(R.id.nav_accettazione)
.setTitleText(R.string.accettazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_accettazione))
.setTitleIcon(R.drawable.ic_dashboard_accettazione)
.setDrawerIcon(R.drawable.ic_black_download)
.setFragmentClass(MainAccettazioneFragment.newInstance()))
.addItem(new MenuItem()
.setID(R.id.nav_resi_fornitore)
.setTitleText(R.string.fragment_ultime_arrivi_fornitore_title)
.setTitleIcon(R.drawable.ic_latest_delivery))
.setTitleIcon(R.drawable.ic_latest_delivery)
.setDrawerIcon(R.drawable.ic_black_latest_delivery)
.setFragmentClass(UltimiArriviFornitoreFragment.newInstance()))
).addGroup(
new MenuGroup()
.setGroupText(R.string.checkout)
.setGroupId(R.id.nav_group_spedizione)
.addItem(new MenuItem()
.setID(R.id.nav_spedizione)
.setTitleText(R.string.vendita_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione))
.setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_black_upload)
.setFragmentClass(MainVenditaFragment.newInstance()))
.addItem(new MenuItem()
.setID(R.id.nav_free_picking)
.setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero))
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
.setFragmentClass(PickingLiberoFragment.newInstance()))
.addItem(new MenuItem()
.setID(R.id.nav_resi_cliente)
.setTitleText(R.string.fragment_ultime_consegne_cliente_title)
.setTitleIcon(R.drawable.ic_latest_delivery))
.setTitleIcon(R.drawable.ic_latest_delivery_customer)
.setDrawerIcon(R.drawable.ic_black_latest_delivery)
.setFragmentClass(UltimeConsegneClienteFragment.newInstance()))
).addGroup(new MenuGroup()
.setGroupText(R.string.manufacture)
.setGroupId(R.id.nav_group_produzione)
.addItem(new MenuItem()
.setID(R.id.nav_prod_ordine_produzione)
.setTitleText(R.string.prod_ordine_produzione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_accettazione))
.setTitleIcon(R.drawable.ic_dashboard_accettazione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentClass(ProdOrdineProduzioneElencoFragment.newInstance()))
.addItem(new MenuItem()
.setID(R.id.nav_prod_ordine_lavorazione)
.setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione))
.setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentClass(ProdOrdineLavorazioneElencoFragment.newInstance()))
.addItem(new MenuItem()
.setID(R.id.nav_prod_versamento_materiale)
.setTitleText(R.string.prod_versamento_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale))
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentClass(ProdVersamentoMaterialeFragment.newInstance()))
.addItem(new MenuItem()
.setID(R.id.nav_prod_recupero_materiale)
.setTitleText(R.string.prod_recupero_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale))
.setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentClass(ProdRecuperoMaterialeFragment.newInstance()))
)
.addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
.setGroupId(R.id.nav_group_movimentazione_interna)
.addItem(new MenuItem()
.setID(R.id.nav_versamento_merce)
.setTitleText(R.string.versamento_merce_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_versamento_merce))
.setTitleIcon(R.drawable.ic_dashboard_versamento_merce)
.setDrawerIcon(R.drawable.ic_black_load_shelf)
.setFragmentClass(VersamentoMerceFragment.newInstance()))
.addItem(new MenuItem()
.setID(R.id.nav_rettifica_giacenze)
.setTitleText(R.string.rettifica_giacenze_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze))
.setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentClass(RettificaGiacenzeFragment.newInstance()))
);

View File

@@ -214,13 +214,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private void initGestMenu() {
ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();
for(MenuConfiguration.MenuGroup menuGroup : menuGroups) {
FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false);
@@ -240,11 +236,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
mBindings.menuContainer.addView(groupBinding.getRoot());
}
}
private void onMenuClick(MenuConfiguration.MenuItem menuItem) {
((MainActivity) getActivity()).setItem(menuItem.getID());
((MainActivity) getActivity()).setMenuItem(menuItem.getID());
}
}