diff options
author | Joey Grover <joeygrover@gmail.com> | 2015-10-09 18:18:13 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2015-10-09 18:18:13 -0400 |
commit | 577fdfa2036689ee399e27896bc33d0b7def21d4 (patch) | |
tree | 6907e9b7b422e7b119cea0a62a2f672c1ef95abc | |
parent | 4466cfb1cd48db0fe627adb8e054114f16b4267f (diff) | |
download | sdl_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
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); |