diff options
author | BrettyWhite <geekman3454@protonmail.com> | 2019-04-29 15:01:16 -0400 |
---|---|---|
committer | BrettyWhite <geekman3454@protonmail.com> | 2019-04-29 15:01:16 -0400 |
commit | d4c9dde5c146a0b80580a5c749c162bb6d68a073 (patch) | |
tree | c6a941448994cfec856fc44e036cd11bc0277ba9 | |
parent | 245c078bc4ce1100ef591c58f9ed3593b3f8cfbf (diff) | |
download | sdl_android-d4c9dde5c146a0b80580a5c749c162bb6d68a073.tar.gz |
set up menu manager in basesdlmanager
-rw-r--r-- | base/src/main/java/com/smartdevicelink/managers/screen/BaseScreenManager.java | 30 | ||||
-rw-r--r-- | base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java | 15 |
2 files changed, 39 insertions, 6 deletions
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/BaseScreenManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/BaseScreenManager.java index ac1f81c0a..a0aa19580 100644 --- a/base/src/main/java/com/smartdevicelink/managers/screen/BaseScreenManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/screen/BaseScreenManager.java @@ -38,7 +38,9 @@ import com.smartdevicelink.managers.BaseSubManager; import com.smartdevicelink.managers.CompletionListener; import com.smartdevicelink.managers.file.FileManager; import com.smartdevicelink.managers.file.filetypes.SdlArtwork; +import com.smartdevicelink.managers.screen.menu.MenuManager; import com.smartdevicelink.managers.screen.menu.VoiceCommandManager; +import com.smartdevicelink.managers.screen.menu.cells.MenuCell; import com.smartdevicelink.managers.screen.menu.cells.VoiceCommand; import com.smartdevicelink.proxy.interfaces.ISdl; import com.smartdevicelink.proxy.rpc.enums.MetadataType; @@ -60,19 +62,20 @@ abstract class BaseScreenManager extends BaseSubManager { private SoftButtonManager softButtonManager; private TextAndGraphicManager textAndGraphicManager; private VoiceCommandManager voiceCommandManager; + private MenuManager menuManager; // Sub manager listener private final CompletionListener subManagerListener = new CompletionListener() { @Override public synchronized void onComplete(boolean success) { - if (softButtonManager != null && textAndGraphicManager != null && voiceCommandManager != null) { - if (softButtonManager.getState() == BaseSubManager.READY && textAndGraphicManager.getState() == BaseSubManager.READY && voiceCommandManager.getState() == BaseSubManager.READY) { + if (softButtonManager != null && textAndGraphicManager != null && voiceCommandManager != null && menuManager != null) { + if (softButtonManager.getState() == BaseSubManager.READY && textAndGraphicManager.getState() == BaseSubManager.READY && voiceCommandManager.getState() == BaseSubManager.READY && menuManager.getState() == BaseSubManager.READY) { DebugTool.logInfo("Starting screen manager, all sub managers are in ready state"); transitionToState(READY); - } else if (softButtonManager.getState() == BaseSubManager.ERROR && textAndGraphicManager.getState() == BaseSubManager.ERROR && voiceCommandManager.getState() == BaseSubManager.ERROR) { + } else if (softButtonManager.getState() == BaseSubManager.ERROR && textAndGraphicManager.getState() == BaseSubManager.ERROR && voiceCommandManager.getState() == BaseSubManager.ERROR && menuManager.getState() == BaseSubManager.ERROR) { Log.e(TAG, "ERROR starting screen manager, both sub managers in error state"); transitionToState(ERROR); - } else if (textAndGraphicManager.getState() == BaseSubManager.SETTING_UP || softButtonManager.getState() == BaseSubManager.SETTING_UP || voiceCommandManager.getState() == BaseSubManager.SETTING_UP) { + } else if (textAndGraphicManager.getState() == BaseSubManager.SETTING_UP || softButtonManager.getState() == BaseSubManager.SETTING_UP || voiceCommandManager.getState() == BaseSubManager.SETTING_UP || menuManager.getState() == BaseSubManager.SETTING_UP) { DebugTool.logInfo("SETTING UP screen manager, one sub manager is still setting up"); transitionToState(SETTING_UP); } else { @@ -99,12 +102,14 @@ abstract class BaseScreenManager extends BaseSubManager { this.softButtonManager.start(subManagerListener); this.textAndGraphicManager.start(subManagerListener); this.voiceCommandManager.start(subManagerListener); + this.menuManager.start(subManagerListener); } private void initialize(){ if (fileManager.get() != null) { this.softButtonManager = new SoftButtonManager(internalInterface, fileManager.get()); this.textAndGraphicManager = new TextAndGraphicManager(internalInterface, fileManager.get(), softButtonManager); + this.menuManager = new MenuManager(internalInterface, fileManager.get()); } this.voiceCommandManager = new VoiceCommandManager(internalInterface); } @@ -117,6 +122,7 @@ abstract class BaseScreenManager extends BaseSubManager { softButtonManager.dispose(); textAndGraphicManager.dispose(); voiceCommandManager.dispose(); + menuManager.dispose(); super.dispose(); } @@ -374,6 +380,22 @@ abstract class BaseScreenManager extends BaseSubManager { } /** + * The list of currently set menu cells + * @return a List of the currently set menu cells + */ + public List<MenuCell> getMenu(){ + return this.menuManager.getMenuCells(); + } + + /** + * Creates and sends all associated Menu RPCs + * @param menuCells - the menu cells that are to be sent to the head unit, including their sub-cells. + */ + public void setMenu(List<MenuCell> menuCells){ + this.menuManager.setMenuCells(menuCells); + } + + /** * Begin a multiple updates transaction. The updates will be applied when commit() is called<br> * Note: if we don't use beginTransaction & commit, every update will be sent individually. */ diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java index 61a182c65..f58999c47 100644 --- a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java @@ -87,6 +87,7 @@ abstract class BaseMenuManager extends BaseSubManager { private OnRPCNotificationListener hmiListener; private OnRPCNotificationListener commandListener; + private OnSystemCapabilityListener displayListener; private DisplayCapabilities displayCapabilities; private static final int parentIdNotFound = Integer.MAX_VALUE; @@ -133,6 +134,7 @@ abstract class BaseMenuManager extends BaseSubManager { // remove listeners internalInterface.removeOnRPCNotificationListener(FunctionID.ON_HMI_STATUS, hmiListener); internalInterface.removeOnRPCNotificationListener(FunctionID.ON_COMMAND, commandListener); + internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAY, displayListener); super.dispose(); } @@ -209,6 +211,14 @@ abstract class BaseMenuManager extends BaseSubManager { } } + /** + * Returns current list of menu cells + * @return a List of Currently set menu cells + */ + public List<MenuCell> getMenuCells(){ + return menuCells; + } + // UPDATING SYSTEM private void updateMenuWithListener(final CompletionListener listener){ @@ -547,7 +557,7 @@ abstract class BaseMenuManager extends BaseSubManager { private void addListeners(){ // DISPLAY CAPABILITIES - via SCM - internalInterface.getCapability(SystemCapabilityType.DISPLAY, new OnSystemCapabilityListener() { + displayListener = new OnSystemCapabilityListener() { @Override public void onCapabilityRetrieved(Object capability) { displayCapabilities = (DisplayCapabilities) capability; @@ -557,7 +567,8 @@ abstract class BaseMenuManager extends BaseSubManager { public void onError(String info) { DebugTool.logError("Unable to retrieve display capabilities: "+ info); } - }); + }; + internalInterface.getCapability(SystemCapabilityType.DISPLAY, displayListener); // HMI UPDATES hmiListener = new OnRPCNotificationListener() { |