summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2015-10-09 18:18:13 -0400
committerJoey Grover <joeygrover@gmail.com>2015-10-09 18:18:13 -0400
commit577fdfa2036689ee399e27896bc33d0b7def21d4 (patch)
tree6907e9b7b422e7b119cea0a62a2f672c1ef95abc
parent4466cfb1cd48db0fe627adb8e054114f16b4267f (diff)
downloadsdl_android-feature/sdl_view_manager.tar.gz
Fixed softButtons to work. They will now update during an invalidate. AddCommand/SdlMenuItem listeners are not properly parsed.feature/sdl_view_manager
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/ui/SdlButton.java4
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/ui/SdlView.java21
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/ui/ViewManager.java25
3 files changed, 28 insertions, 22 deletions
diff --git a/sdl_android_lib/src/com/smartdevicelink/ui/SdlButton.java b/sdl_android_lib/src/com/smartdevicelink/ui/SdlButton.java
index 7bf39c9bd..988bffd5b 100644
--- a/sdl_android_lib/src/com/smartdevicelink/ui/SdlButton.java
+++ b/sdl_android_lib/src/com/smartdevicelink/ui/SdlButton.java
@@ -12,13 +12,13 @@ public class SdlButton extends SoftButton{
super();
//TODO create constructor to take in basic things
id = SdlViewHelper.generateViewId();
+ this.setSoftButtonID(Integer.valueOf(id));
}
public SdlButton(String text, Image image){
super();
-
id = SdlViewHelper.generateViewId();
-
+ this.setSoftButtonID(Integer.valueOf(id));
this.setText(text);
this.setImage(image);
}
diff --git a/sdl_android_lib/src/com/smartdevicelink/ui/SdlView.java b/sdl_android_lib/src/com/smartdevicelink/ui/SdlView.java
index 18e5cfa81..825b8b444 100644
--- a/sdl_android_lib/src/com/smartdevicelink/ui/SdlView.java
+++ b/sdl_android_lib/src/com/smartdevicelink/ui/SdlView.java
@@ -1,6 +1,7 @@
package com.smartdevicelink.ui;
import java.util.HashMap;
+import java.util.Vector;
import android.util.Log;
import android.util.SparseArray;
@@ -8,6 +9,7 @@ import android.util.SparseArray;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.AddCommand;
import com.smartdevicelink.proxy.rpc.Show;
+import com.smartdevicelink.proxy.rpc.SoftButton;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
import com.smartdevicelink.proxy.rpc.enums.ImageFieldName;
import com.smartdevicelink.proxy.rpc.enums.TextAlignment;
@@ -43,6 +45,7 @@ public class SdlView {
}
private void init(){
+ buttons = new SparseArray<SdlButton>();
defaultTextAlignment = TextAlignment.CENTERED;
//TODO actually build this out according to the type of view we have
textViews = new HashMap<TextFieldName, SdlTextView>();
@@ -133,7 +136,6 @@ public class SdlView {
/**
* Triggers a redraw of the screen on the head unit.
- * <p>** <b>NOTE</b> ** Will not update softbuttons at this time. Softbuttons will only be updated during a "set current view" from the ViewManager
*/
public void invalidate(){
if(iViewManager!=null){
@@ -150,14 +152,19 @@ public class SdlView {
show.setMediaTrack(textViews.get(TextFieldName.mediaTrack).text);
show.setMediaClock(null);
show.setCustomPresets(null);
- show.setSoftButtons(null);
show.setStatusBar(null);
-
- //Image Views
- SdlImageView imageView = imageViews.get(ImageFieldName.graphic);
- if(imageView!=null && imageView.image!=null && imageView.image.getValue()!=null){
- show.setGraphic(imageViews.get(ImageFieldName.graphic).image);
+ if(buttons!=null){
+ Vector<SoftButton> softButtons = new Vector<SoftButton>(buttons.size());
+ for(int i=0; i< buttons.size(); i++){
+ softButtons.add(buttons.valueAt(i));
+ }
+ show.setSoftButtons(softButtons);
}
+ //Image Views
+ //SdlImageView imageView = imageViews.get(ImageFieldName.graphic);
+ //if(imageView!=null && imageView.image!=null && imageView.image.getValue()!=null){
+ //show.setGraphic(imageViews.get(ImageFieldName.graphic).image);
+ //}
//show.setSecondaryGraphic(imageViews.get(ImageFieldName.secondarygraphic).image);
iViewManager.sendRpc(show);
diff --git a/sdl_android_lib/src/com/smartdevicelink/ui/ViewManager.java b/sdl_android_lib/src/com/smartdevicelink/ui/ViewManager.java
index dcf506394..9ca832d9a 100644
--- a/sdl_android_lib/src/com/smartdevicelink/ui/ViewManager.java
+++ b/sdl_android_lib/src/com/smartdevicelink/ui/ViewManager.java
@@ -1,7 +1,9 @@
package com.smartdevicelink.ui;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Vector;
import android.util.Log;
import android.util.SparseArray;
@@ -78,12 +80,18 @@ public class ViewManager implements IViewManager{
@Override
public void onNotified(RPCNotification notification) {
OnCommand onCommand = (OnCommand)notification;
+ int id = onCommand.getCmdID().intValue();
+ SdlMenuItemListener listener = null;
SdlView view =views.get(currentView);
+
if(view!=null && view.menu!=null){
- SdlMenuItemListener listener = view.menu.parseMenuItems(onCommand.getCmdID().intValue());
- if(listener!=null){
- listener.onItemSelected();
- }
+ listener = view.menu.parseMenuItems(id);
+ }else if(defaultMenu!=null){
+ listener = defaultMenu.parseMenuItems(id);
+ }
+
+ if(listener!=null){
+ listener.onItemSelected();
}
@@ -147,15 +155,6 @@ public class ViewManager implements IViewManager{
}
}
/* ******* Show *****/
- //TODO move this into the view class
- Show show = new Show();
- //Grab the buttons
- List<SdlButton> subButtons = SdlViewHelper.asList(view.buttons); //Kind of hack-y, but it should work
- List<? extends SoftButton> castedButtons = subButtons;
- show.setSoftButtons((List<SoftButton>) castedButtons);
- show.setCorrelationID(CorrelationIdGenerator.generateId());
- //Finally send the show
- this.sendRpc(show);
view.invalidate();
SdlView oldView = views.get(currentView);