Creato menu drawer dinamico
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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()))
|
||||
|
||||
|
||||
);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user