Implementato servizio di retrieve menu
This commit is contained in:
parent
fbe095b7f7
commit
fbcda5eaf6
@ -1,11 +1,17 @@
|
||||
package it.integry.integrywmsnative.core.menu;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
|
||||
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.menu.exception.MenuNotFoundException;
|
||||
import it.integry.integrywmsnative.core.model.StbMenu;
|
||||
|
||||
@Singleton
|
||||
@ -16,6 +22,7 @@ public class MenuService {
|
||||
private final MenuRESTConsumer menuRESTConsumer;
|
||||
|
||||
private List<StbMenu> mInternalCachedMenu;
|
||||
private List<StbMenu> mInternalCachedFlatMenu;
|
||||
|
||||
@Inject
|
||||
public MenuService(MenuRESTConsumer menuRESTConsumer) {
|
||||
@ -24,13 +31,46 @@ public class MenuService {
|
||||
|
||||
public void init(Runnable onMenuInitialized, RunnableArgs<Exception> onFailed) {
|
||||
menuRESTConsumer.retrieveMenu(MENU_COD_OPZ, menu -> {
|
||||
if(menu != null) this.mInternalCachedMenu = menu.getStbMenuChildren();
|
||||
if(menu != null) {
|
||||
this.mInternalCachedMenu = menu.getStbMenuChildren();
|
||||
this.mInternalCachedFlatMenu = new ArrayList<>();
|
||||
flattenMenu(this.mInternalCachedMenu);
|
||||
}
|
||||
|
||||
onMenuInitialized.run();
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
public void getMenu() {
|
||||
public List<StbMenu> getMenu() throws Exception {
|
||||
if(mInternalCachedMenu == null) throw new MenuNotFoundException();
|
||||
|
||||
return mInternalCachedMenu;
|
||||
}
|
||||
|
||||
|
||||
public boolean isGroupEnabled(MenuConfiguration.MenuGroup androidMenuGroup) throws Exception {
|
||||
List<StbMenu> dbMenu = getMenu();
|
||||
|
||||
return Stream.of(this.mInternalCachedFlatMenu)
|
||||
.anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuGroup.getCodMenu()));
|
||||
}
|
||||
|
||||
|
||||
public boolean isItemEnabled(BaseMenuConfiguration.MenuItem androidMenuItem) throws Exception {
|
||||
List<StbMenu> dbMenu = getMenu();
|
||||
|
||||
return Stream.of(this.mInternalCachedFlatMenu)
|
||||
.anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuItem.getCodMenu()));
|
||||
}
|
||||
|
||||
private void flattenMenu(List<StbMenu> menu) {
|
||||
for(StbMenu stbMenu : menu) {
|
||||
this.mInternalCachedFlatMenu.add(stbMenu);
|
||||
|
||||
if(stbMenu.getStbMenuChildren() != null && !stbMenu.getStbMenuChildren().isEmpty()) {
|
||||
flattenMenu(stbMenu.getStbMenuChildren());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
package it.integry.integrywmsnative.core.menu.exception;
|
||||
|
||||
public class MenuNotFoundException extends Exception{
|
||||
|
||||
public MenuNotFoundException() {
|
||||
super("Non è stato possibile caricare il menù");
|
||||
}
|
||||
}
|
||||
@ -17,12 +17,10 @@ import retrofit2.converter.gson.GsonConverterFactory;
|
||||
public class RESTBuilder {
|
||||
|
||||
public static <T> T getService(final Class<T> service) {
|
||||
// return getService(service, "192.168.2.13", 8080);
|
||||
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true);
|
||||
|
||||
}
|
||||
public static <T> T getService(final Class<T> service, int timeout) {
|
||||
// return getService(service, "192.168.2.13", 8080);
|
||||
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true, true, timeout);
|
||||
|
||||
}
|
||||
@ -54,17 +52,12 @@ public class RESTBuilder {
|
||||
.setDateFormat("dd/MM/yyyy HH:mm:ss")
|
||||
.create();
|
||||
|
||||
|
||||
|
||||
|
||||
Retrofit retrofit = new Retrofit.Builder()
|
||||
.addConverterFactory(GsonConverterFactory.create(gson))
|
||||
.baseUrl(endpoint)
|
||||
.client(client)
|
||||
.build();
|
||||
|
||||
|
||||
|
||||
return retrofit.create(service);
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,6 +43,7 @@ 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.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.menu.MenuService;
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import it.integry.integrywmsnative.core.update.UpdatesManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
||||
@ -65,6 +66,9 @@ public class MainActivity extends BaseActivity
|
||||
@Inject
|
||||
ColliDataRecoverService mColliDataRecoverService;
|
||||
|
||||
@Inject
|
||||
MenuService menuService;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
@ -36,6 +36,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.menu.MenuService;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
@ -59,6 +60,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
@Inject
|
||||
ColliDataRecoverService colliDataRecoverService;
|
||||
|
||||
@Inject
|
||||
MenuService menuService;
|
||||
|
||||
private FragmentMainBinding mBindings;
|
||||
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
@ -105,7 +109,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
mToolbar.setNestedScrollView(mBindings.fragmentMainScrollview);
|
||||
|
||||
init();
|
||||
initGestMenuOLD();
|
||||
initGestMenu();
|
||||
// initGestMenuOLD();
|
||||
initVersion();
|
||||
}
|
||||
|
||||
@ -237,6 +242,56 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
private void initGestMenu() {
|
||||
int menuSpanCount = 2;
|
||||
if(UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4;
|
||||
else if(UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3;
|
||||
|
||||
MenuConfiguration baseMenuConfiguration = new MenuConfiguration();
|
||||
List<MenuConfiguration.MenuGroup> menuGroups = baseMenuConfiguration.getGroups();
|
||||
|
||||
for(int i = 0; i < menuGroups.size(); i++) {
|
||||
try {
|
||||
|
||||
BaseMenuConfiguration.MenuGroup menuGroup = menuGroups.get(i);
|
||||
|
||||
if(menuService.isGroupEnabled(menuGroup)) {
|
||||
|
||||
FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false);
|
||||
|
||||
String title = this.getResources().getString(menuGroup.getGroupText());
|
||||
groupBinding.generalDashboardGroupTitle.setText(title);
|
||||
|
||||
List<BaseMenuConfiguration.MenuItem> enableMenuItems = new ArrayList<>();
|
||||
|
||||
for(int j = 0; j < menuGroup.getItems().size(); j++) {
|
||||
if(menuService.isItemEnabled(menuGroup.getItems().get(j))) {
|
||||
enableMenuItems.add(menuGroup.getItems().get(j));
|
||||
}
|
||||
}
|
||||
|
||||
MenuListAdapter menuListAdapter = new MenuListAdapter(getContext(), enableMenuItems);
|
||||
|
||||
groupBinding.mainList.setLayoutManager(new GridLayoutManager(getContext(), menuSpanCount));
|
||||
groupBinding.mainList.setAdapter(menuListAdapter);
|
||||
groupBinding.mainList.setNestedScrollingEnabled(false);
|
||||
|
||||
menuListAdapter.setClickListener((view, position) -> {
|
||||
onMenuClick(menuGroup.getItems().get(position));
|
||||
});
|
||||
|
||||
mBindings.menuContainer.addView(groupBinding.getRoot());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void initGestMenuOLD() {
|
||||
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user