summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrettyWhite <geekman3454@protonmail.com>2019-04-29 15:01:16 -0400
committerBrettyWhite <geekman3454@protonmail.com>2019-04-29 15:01:16 -0400
commitd4c9dde5c146a0b80580a5c749c162bb6d68a073 (patch)
treec6a941448994cfec856fc44e036cd11bc0277ba9
parent245c078bc4ce1100ef591c58f9ed3593b3f8cfbf (diff)
downloadsdl_android-d4c9dde5c146a0b80580a5c749c162bb6d68a073.tar.gz
set up menu manager in basesdlmanager
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/BaseScreenManager.java30
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java15
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() {