// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) package com.openvehicles.OVMS; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.location.*; import android.os.*; import android.util.Log; import android.view.*; import android.widget.*; import com.google.android.maps.*; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; import javax.xml.parsers.*; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.w3c.dom.*; import org.xml.sax.InputSource; import org.xml.sax.SAXException; // Referenced classes of package com.openvehicles.OVMS: // RouteOverlay, Utilities, CarData, CarData_Group, // MyLocationOverlayCustom, OVMSActivity public class TabMap extends MapActivity { class CustomSpinnerAdapter extends SimpleAdapter { public View getView(int i, View view, ViewGroup viewgroup) { if(view == null) view = mInflater.inflate(0x7f03000b, null); HashMap hashmap = (HashMap)getItem(i); ImageView imageview = (ImageView)view.findViewById(0x7f090038); StringBuilder stringbuilder = new StringBuilder(String.valueOf(getCacheDir().getAbsolutePath())); Object aobj[] = new Object[1]; aobj[0] = hashmap.get("Name").toString(); Bitmap bitmap = BitmapFactory.decodeFile(stringbuilder.append(String.format("/%s.png", aobj)).toString()); if(bitmap != null) { imageview.setImageBitmap(bitmap); } else { imageview.setImageBitmap(null); imageview.setBackgroundResource(((Integer)hashmap.get("Icon")).intValue()); } return view; } LayoutInflater mInflater; final TabMap this$0; public CustomSpinnerAdapter(Context context, List list, int i, String as[], int ai[]) { this$0 = TabMap.this; super(context, list, i, as, ai); mInflater = LayoutInflater.from(context); } } private class GroupCarsListViewAdapter extends ArrayAdapter { public View getView(int i, View view, ViewGroup viewgroup) { CarData_Group cardata_group = (CarData_Group)items[i]; View view1; if(cardata_group == null) { view1 = null; } else { view1 = view; if(view1 == null) view1 = ((LayoutInflater)getSystemService("layout_inflater")).inflate(0x7f030012, null); ((TextView)view1.findViewById(0x7f090095)).setText(cardata_group.VehicleID); TextView textview = (TextView)view1.findViewById(0x7f090096); Object aobj[] = new Object[2]; aobj[0] = Double.valueOf(cardata_group.SOC); String s; double d; String s1; if(cardata_group.Speed > 0.0D) { Object aobj2[] = new Object[2]; aobj2[0] = Double.valueOf(cardata_group.Speed); TextView textview1; Object aobj1[]; String s2; if(data.Data_DistanceUnit.equals("K")) s2 = "kph"; else s2 = "mph"; aobj2[1] = s2; s = String.format(" | %s%s", aobj2); } else { s = ""; } aobj[1] = s; textview.setText(String.format("%s%%", aobj)); textview1 = (TextView)view1.findViewById(0x7f090097); d = Utilities.GetDistanceBetweenCoordinatesKM(cardata_group.Latitude, cardata_group.Longitude, data.Data_Latitude, data.Data_Longitude); aobj1 = new Object[2]; if(!data.Data_DistanceUnit.equals("K")) d *= 0.62137119200000002D; aobj1[0] = Double.valueOf(d); if(data.Data_DistanceUnit.equals("K")) s1 = "km"; else s1 = "mi"; aobj1[1] = s1; textview1.setText(String.format("%.1f%n %s", aobj1)); ((ImageView)view1.findViewById(0x7f090094)).setImageResource(getResources().getIdentifier((new StringBuilder(String.valueOf(cardata_group.VehicleImageDrawable))).append("96x44").toString(), "drawable", "com.openvehicles.OVMS")); } return view1; } private Object items[]; final TabMap this$0; public GroupCarsListViewAdapter(Context context, int i, Object aobj[]) { this$0 = TabMap.this; super(context, i, aobj); items = aobj; } } private static interface OnCenteringModeChangedListener { public abstract void OnCenteringModeChanged(int i); } private class TouchOverlay extends Overlay { public boolean onTouchEvent(MotionEvent motionevent, MapView mapview) { if(motionevent.getAction() != 1) goto _L2; else goto _L1 _L1: hidePopup(); if(centeringMode.getMode() != 4) { float f = motionevent.getX(); float f1 = motionevent.getY(); if(Math.sqrt(Math.pow(f - mapDragLastX, 2D) + Math.pow(f1 - mapDragLastY, 2D)) > 100D) centeringMode.setMode(4); } _L4: return false; _L2: if(motionevent.getAction() == 0) { mapDragLastX = motionevent.getX(); mapDragLastY = motionevent.getY(); } if(true) goto _L4; else goto _L3 _L3: } final TabMap this$0; private TouchOverlay() { this$0 = TabMap.this; super(); } TouchOverlay(TouchOverlay touchoverlay) { this(); } } private class mapCenteringMode { /** * @deprecated Method fireCenteringModeChangedEvent is deprecated */ private void fireCenteringModeChangedEvent() { this; JVM INSTR monitorenter ; if(_listener != null) _listener.OnCenteringModeChanged(_centeringMode); this; JVM INSTR monitorexit ; return; Exception exception; exception; throw exception; } public int getMode() { return _centeringMode; } /** * @deprecated Method removeOnGroupCarTappedListener is deprecated */ public void removeOnGroupCarTappedListener() { this; JVM INSTR monitorenter ; _listener = null; this; JVM INSTR monitorexit ; return; Exception exception; exception; throw exception; } public void setMode(int i) { if(_centeringMode != i) { _centeringMode = i; fireCenteringModeChangedEvent(); } } /** * @deprecated Method setOnMapCenteringModeChangedListener is deprecated */ public void setOnMapCenteringModeChangedListener(OnCenteringModeChangedListener oncenteringmodechangedlistener) { this; JVM INSTR monitorenter ; _listener = oncenteringmodechangedlistener; this; JVM INSTR monitorexit ; return; Exception exception; exception; throw exception; } public static final int CAR = 2; public static final int CUSTOM = 4; public static final int DEFAULT = 0; public static final int DEVICE = 1; public static final int GROUPCAR = 5; public static final int ROUTE = 3; public String GroupCar_VehicleID; private int _centeringMode; private OnCenteringModeChangedListener _listener; final TabMap this$0; private mapCenteringMode() { this$0 = TabMap.this; super(); _centeringMode = 0; GroupCar_VehicleID = ""; _listener = null; } mapCenteringMode(mapCenteringMode mapcenteringmode) { this(); } } public TabMap() { currentVehicleID = ""; lastUpdateTimerHandler = new Handler(); carMarkerAnimationTimerHandler = new Handler(); carMarkerAnimationFrame = 0; lastUpdateTimer = new Runnable() { public void run() { updateLastUpdatedView(); lastUpdateTimerHandler.postDelayed(lastUpdateTimer, 5000L); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; routeError = new Runnable() { public void run() { Log.d("Routing", "Route Failed"); Toast.makeText(TabMap.this, "Route Failed", 0); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; myLocationEnable = new Runnable() { public void run() { myLocationOverlay.enableMyLocation(); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; myLocationDisable = new Runnable() { public void run() { myLocationOverlay.disableMyLocation(); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; animateCarMarker = new Runnable() { public void run() { CarData_Group cardata_group; String as[]; int i; cardata_group = null; as = new String[data.Group.size()]; data.Group.keySet().toArray(as); i = 0; _L5: if(i < carMarkers.size()) goto _L2; else goto _L1 _L1: mapView.invalidate(); TabMap tabmap = TabMap.this; int l = 1 + tabmap.carMarkerAnimationFrame; tabmap.carMarkerAnimationFrame = l; if(l < 40) carMarkerAnimationTimerHandler.postDelayed(animateCarMarker, 50L); return; _L2: if(i <= 0) break MISSING_BLOCK_LABEL_203; if(as.length >= i) break; /* Loop/switch isn't completed */ Object aobj1[] = new Object[2]; aobj1[0] = Integer.valueOf(carMarkers.size()); aobj1[1] = Integer.valueOf(1 + as.length); Log.d("MAP", String.format("ERROR! Found %s markers but only %s car data.", aobj1)); if(true) goto _L1; else goto _L3 _L3: cardata_group = (CarData_Group)data.Group.get(as[i - 1]); GeoPoint geopoint; if(i == 0) geopoint = Utilities.GetCarGeopoint(data); else geopoint = Utilities.GetCarGeopoint(cardata_group.Latitude, cardata_group.Longitude); if(!carMarkers.getItem(i).getPoint().equals(geopoint)) break; /* Loop/switch isn't completed */ _L6: i++; if(true) goto _L5; else goto _L4 _L4: int j = (geopoint.getLatitudeE6() - lastCarGeoPoints[i].getLatitudeE6()) / 40; int k = (geopoint.getLongitudeE6() - lastCarGeoPoints[i].getLongitudeE6()) / 40; GeoPoint geopoint1; Utilities.CarMarker carmarker; if(carMarkerAnimationFrame == 39) geopoint1 = geopoint; else geopoint1 = new GeoPoint(lastCarGeoPoints[i].getLatitudeE6() + j * carMarkerAnimationFrame, lastCarGeoPoints[i].getLongitudeE6() + k * carMarkerAnimationFrame); Log.d("MAP", (new StringBuilder("Car Marker ")).append(i).append(" Transitional Point: ").append(geopoint1.getLatitudeE6()).append(", ").append(geopoint1.getLongitudeE6()).toString()); if(i == 0) { String s = "-"; if(data.Data_LastCarUpdate != null) s = (new SimpleDateFormat("MMM d, K:mm:ss a")).format(data.Data_LastCarUpdate); String s1 = data.VehicleID; Object aobj[] = new Object[1]; aobj[0] = s; carmarker = new Utilities.CarMarker(geopoint1, s1, String.format("Last reported: %s", aobj), (int)data.Data_Direction); } else { carmarker = new Utilities.CarMarker(geopoint1, cardata_group.VehicleID, "", (int)cardata_group.Direction); } carMarkers.setOverlay(i, carmarker); goto _L6 if(true) goto _L5; else goto _L7 _L7: } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; refreshUIHandler = new Handler() { public void handleMessage(Message message) { GeoPoint geopoint; Log.d("OVMS", "Refreshing Map"); geopoint = Utilities.GetCarGeopoint(data); if(carMarkers.size() <= 0) goto _L2; else goto _L1 _L1: int j; lastCarGeoPoints = new GeoPoint[carMarkers.size()]; j = 0; _L14: if(j < carMarkers.size()) goto _L4; else goto _L3 _L3: carMarkerAnimationTimerHandler.removeCallbacks(animateCarMarker); carMarkerAnimationFrame = 0; carMarkerAnimationTimerHandler.postDelayed(animateCarMarker, 0L); _L15: int i; Iterator iterator; TextView textview = (TextView)findViewById(0x7f090083); String s2 = (String)data.Data_Parameters.get(Integer.valueOf(11)); if(s2 != null && s2.length() > 0) { if(data.Group != null) { Object aobj2[] = new Object[3]; aobj2[0] = s2; aobj2[1] = Integer.valueOf(data.Group.size()); String s; String s1; Object aobj[]; Utilities.CarMarker carmarker; HashMap hashmap; String s4; if(data.Group.size() > 1) s4 = "s"; else s4 = ""; aobj2[2] = s4; textview.setText(String.format("Group: %s (%s vehicle%s)", aobj2)); } else { Object aobj1[] = new Object[1]; aobj1[0] = s2; textview.setText(String.format("Group: %s", aobj1)); } textview.setVisibility(0); } else { textview.setVisibility(8); } if(data.Group == null || data.Group.size() <= 0) goto _L6; else goto _L5 _L5: i = 1; iterator = data.Group.keySet().iterator(); _L16: if(iterator.hasNext()) goto _L7; else goto _L6 _L6: centeringMode.getMode(); JVM INSTR tableswitch 1 5: default 360 // 1 991 // 2 1044 // 3 1058 // 4 384 // 5 1111; goto _L8 _L9 _L10 _L11 _L12 _L13 _L13: break MISSING_BLOCK_LABEL_1111; _L12: break; /* Loop/switch isn't completed */ _L8: mc.animateTo(geopoint); mc.setZoom(18); _L17: ListView listview = (ListView)findViewById(0x7f09008e); String s3; CarData_Group cardata_group; Utilities.CarMarker carmarker1; Drawable drawable; if(data.Group != null) { hashmap = (HashMap)data.Group.clone(); hashmap.remove(data.VehicleID); groupCarsListAdapter = new GroupCarsListViewAdapter(TabMap.this, 0x7f030012, hashmap.values().toArray()); listview.setAdapter(groupCarsListAdapter); } else if(groupCarsListAdapter != null) { groupCarsListAdapter.clear(); listview.setAdapter(groupCarsListAdapter); } Log.d("Routing", (new StringBuilder("Redrawing Map with ")).append(-3 + mapOverlays.size()).append(" waypoints").toString()); mapView.invalidate(); return; _L4: lastCarGeoPoints[j] = carMarkers.getItem(j).getPoint(); j++; goto _L14 _L2: s = "-"; if(data.Data_LastCarUpdate != null) s = (new SimpleDateFormat("MMM d, K:mm:ss a")).format(data.Data_LastCarUpdate); s1 = data.VehicleID; aobj = new Object[1]; aobj[0] = s; carmarker = new Utilities.CarMarker(geopoint, s1, String.format("Last reported: %s", aobj), (int)data.Data_Direction); carMarkers.addOverlay(carmarker); goto _L15 _L7: s3 = (String)iterator.next(); if(!s3.equals(data.VehicleID)) { cardata_group = (CarData_Group)data.Group.get(s3); carmarker1 = new Utilities.CarMarker(Utilities.GetCarGeopoint(cardata_group.Latitude, cardata_group.Longitude), cardata_group.VehicleID, "", (int)cardata_group.Direction); drawable = getResources().getDrawable(getResources().getIdentifier((new StringBuilder(String.valueOf(cardata_group.VehicleImageDrawable))).append("32x32").toString(), "drawable", "com.openvehicles.OVMS")); if(drawable == null) drawable = getResources().getDrawable(getResources().getIdentifier("car_roadster_arcticwhite32x32", "drawable", "com.openvehicles.OVMS")); drawable.setBounds(-drawable.getIntrinsicWidth() / 2, -drawable.getIntrinsicHeight(), drawable.getIntrinsicWidth() / 2, 0); carmarker1.setMarker(drawable); if(carMarkers.size() > i) carMarkers.setOverlay(i, carmarker1); else carMarkers.addOverlay(carmarker1); i++; } goto _L16 _L9: if(myLocationOverlay.getMyLocation() != null) mc.animateTo(myLocationOverlay.getMyLocation()); else Toast.makeText(TabMap.this, "Waiting for device location...", 0).show(); goto _L17 _L10: mc.animateTo(geopoint); goto _L17 _L11: if(myLocationOverlay.getMyLocation() != null) mc.animateTo(myLocationOverlay.getMyLocation()); else Toast.makeText(TabMap.this, "Waiting for device location...", 0).show(); goto _L17 if(data.Group.get(centeringMode.GroupCar_VehicleID) == null) centeringMode.setMode(4); else mc.animateTo(Utilities.GetCarGeopoint(((CarData_Group)data.Group.get(centeringMode.GroupCar_VehicleID)).Latitude, ((CarData_Group)data.Group.get(centeringMode.GroupCar_VehicleID)).Longitude)); goto _L17 } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; } private void cancelRoute() { if(centeringMode.getMode() == 4 || centeringMode.getMode() == 3) centeringMode.setMode(2); clearRoute(); ((RadioButton)findViewById(0x7f09008d)).setChecked(true); refreshUIHandler.sendEmptyMessage(0); Toast.makeText(this, "Route Cancelled", 0).show(); } private void clearRoute() { int i = -1 + mapOverlays.size(); do { if(i < 3) return; mapOverlays.remove(i); i--; } while(true); } private void drawRoute(List list, int i) { Log.d("Route", "Creating overlay"); if(mapOverlays.size() > 3) clearRoute(); int j = 1; do { if(j >= list.size()) return; mapOverlays.add(new RouteOverlay((GeoPoint)list.get(j - 1), (GeoPoint)list.get(j), i)); j++; } while(true); } private List getRouteGeoPoints() { Log.d("Route", "Getting waypoints from google"); String s = getMapKMLUrl(lastKnownDeviceGeoPoint, Utilities.GetCarGeopoint(data), planWalkingDirection); HttpGet httpget; DefaultHttpClient defaulthttpclient; Log.d("Route", (new StringBuilder("Request URL: ")).append(s).toString()); httpget = new HttpGet(s); defaulthttpclient = new DefaultHttpClient(); HttpResponse httpresponse = defaulthttpclient.execute(httpget); BufferedInputStream bufferedinputstream; BufferedReader bufferedreader; StringBuilder stringbuilder; bufferedinputstream = new BufferedInputStream(httpresponse.getEntity().getContent()); InputStreamReader inputstreamreader = new InputStreamReader(bufferedinputstream); bufferedreader = new BufferedReader(inputstreamreader, 40960); stringbuilder = new StringBuilder(); _L6: String s1 = bufferedreader.readLine(); if(s1 != null) goto _L2; else goto _L1 _L1: String s2; bufferedreader.close(); bufferedinputstream.close(); s2 = stringbuilder.toString(); Log.d("Route", (new StringBuilder("KML Data Length: ")).append(s2.length()).toString()); if(s2.length() > 0 && s2.indexOf("<LineString>") >= 0) goto _L4; else goto _L3 _L3: Object obj = null; _L5: return ((List) (obj)); Exception exception; exception; exception.printStackTrace(); obj = null; goto _L5 Exception exception1; exception1; exception1.printStackTrace(); obj = null; goto _L5 _L2: stringbuilder.append(s1); goto _L6 Exception exception2; exception2; obj = null; goto _L5 _L4: DocumentBuilderFactory documentbuilderfactory; DocumentBuilder documentbuilder; Document document; documentbuilderfactory = DocumentBuilderFactory.newInstance(); documentbuilder = null; document = null; DocumentBuilder documentbuilder1 = documentbuilderfactory.newDocumentBuilder(); documentbuilder = documentbuilder1; _L7: Document document1; StringReader stringreader = new StringReader(s2); document1 = documentbuilder.parse(new InputSource(stringreader)); document = document1; _L8: String s3 = document.getElementsByTagName("LineString").item(0).getChildNodes().item(0).getFirstChild().getNodeValue(); if(s3.length() != 0) break MISSING_BLOCK_LABEL_435; obj = null; goto _L5 ParserConfigurationException parserconfigurationexception; parserconfigurationexception; parserconfigurationexception.printStackTrace(); goto _L7 SAXException saxexception; saxexception; saxexception.printStackTrace(); goto _L8 IOException ioexception; ioexception; ioexception.printStackTrace(); goto _L8 Exception exception4; exception4; if("".length() == 0) obj = null; else obj = null; goto _L5 Exception exception3; exception3; if("".length() == 0) obj = null; else throw exception3; goto _L5 String as[]; int i; int j; Log.d("Route", (new StringBuilder("KML lineStrings: ")).append(s3).toString()); as = s3.split(" "); obj = new ArrayList(); i = as.length; j = 0; _L9: label0: { if(j < i) break label0; Log.d("Route", (new StringBuilder("Waypoint count: ")).append(((List) (obj)).size()).toString()); } goto _L5 String s4 = as[j]; int k = (int)(1000000D * Double.parseDouble(s4.split(",")[0])); int l = (int)(1000000D * Double.parseDouble(s4.split(",")[1])); GeoPoint geopoint = new GeoPoint(l, k); ((List) (obj)).add(geopoint); j++; goto _L9 } private void hidePopup() { SlidingDrawer slidingdrawer = (SlidingDrawer)findViewById(0x7f090084); if(slidingdrawer.isOpened()) slidingdrawer.close(); } private void initPopup() { SlidingDrawer slidingdrawer = (SlidingDrawer)findViewById(0x7f090084); slidingdrawer.setOnDrawerOpenListener(new android.widget.SlidingDrawer.OnDrawerOpenListener() { public void onDrawerOpened() { ((TextView)findViewById(0x7f090086)).setText("\u25BC Close Panel \u25BC"); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); slidingdrawer.setOnDrawerCloseListener(new android.widget.SlidingDrawer.OnDrawerCloseListener() { public void onDrawerClosed() { ((TextView)findViewById(0x7f090086)).setText("\u25B2 Map Options \u25B2"); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); } private void planRoute() { Toast.makeText(this, "Routing...", 0).show(); try { Thread.sleep(100L); } catch(InterruptedException interruptedexception) { interruptedexception.printStackTrace(); } (new Thread() { public void run() { Log.d("Route", "Starting routing thread"); updateRoute(); centeringMode.setMode(3); refreshUIHandler.post(initializeMapCentering); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ).start(); } private void showGroupCarPopup(String s) { if(data.Group != null) goto _L2; else goto _L1 _L1: return; _L2: CarData_Group cardata_group; Iterator iterator; cardata_group = null; iterator = data.Group.values().iterator(); _L8: if(iterator.hasNext()) goto _L4; else goto _L3 _L3: final CarData_Group groupCar; View view; final Spinner spin; TextView textview; TextView textview1; TextView textview2; TextView textview3; groupCar = cardata_group; view = LayoutInflater.from(this).inflate(0x7f030011, null); spin = (Spinner)view.findViewById(0x7f09008f); textview = (TextView)view.findViewById(0x7f090090); textview1 = (TextView)view.findViewById(0x7f090091); textview2 = (TextView)view.findViewById(0x7f090092); textview3 = (TextView)view.findViewById(0x7f090093); spin.setAdapter(availableCarColorsSpinnerAdapter); if(groupCar.VehicleImageDrawable != null && groupCar.VehicleImageDrawable.length() != 0) goto _L6; else goto _L5 _L5: spin.setSelection(0); _L9: Object aobj[] = new Object[1]; aobj[0] = Double.valueOf(groupCar.SOC); textview.setText(String.format("%s%%", aobj)); Object aobj1[] = new Object[2]; aobj1[0] = Double.valueOf(groupCar.Speed); CarData_Group cardata_group1; String s1; Object aobj2[]; String s2; Object aobj3[]; String s3; String s4; android.app.AlertDialog.Builder builder; Object aobj4[]; android.app.AlertDialog.Builder builder1; android.content.DialogInterface.OnClickListener onclicklistener; android.app.AlertDialog.Builder builder2; android.content.DialogInterface.OnClickListener onclicklistener1; AlertDialog alertdialog; int i; if(data.Data_DistanceUnit.equals("K")) s1 = "kph"; else s1 = "mph"; aobj1[1] = s1; textview1.setText(String.format("%s %s", aobj1)); aobj2 = new Object[3]; aobj2[0] = Double.valueOf(groupCar.Direction); aobj2[1] = Double.valueOf(groupCar.Altitude); if(data.Data_DistanceUnit.equals("K")) s2 = "m"; else s2 = "ft"; aobj2[2] = s2; textview2.setText(String.format("%s' %s%s", aobj2)); aobj3 = new Object[2]; if(groupCar.GPSLocked) s3 = "LOCK"; else s3 = "Searching..."; aobj3[0] = s3; if(groupCar.GPSDataStale) s4 = "(STALE)"; else s4 = ""; aobj3[1] = s4; textview3.setText(String.format("%s %s", aobj3)); builder = new android.app.AlertDialog.Builder(this); aobj4 = new Object[2]; aobj4[0] = groupCar.VehicleID; aobj4[1] = data.Data_Parameters.get(Integer.valueOf(11)); builder1 = builder.setTitle(String.format("%s (%s)", aobj4)).setView(view).setCancelable(true); onclicklistener = new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialoginterface, int j) { if(groupCar.VehicleImageDrawable == null || !groupCar.VehicleImageDrawable.equals(((HashMap)availableCarColors.get(spin.getSelectedItemPosition())).get("Name").toString())) { groupCar.VehicleImageDrawable = ((HashMap)availableCarColors.get(spin.getSelectedItemPosition())).get("Name").toString(); ((OVMSActivity)getParent()).saveCars(); } Toast.makeText(TabMap.this, (new StringBuilder("Locating ")).append(groupCar.VehicleID).toString(), 0).show(); centeringMode.GroupCar_VehicleID = groupCar.VehicleID; centeringMode.setMode(5); refreshUIHandler.post(initializeMapCentering); dialoginterface.dismiss(); hidePopup(); } final TabMap this$0; private final CarData_Group val$groupCar; private final Spinner val$spin; { this$0 = TabMap.this; groupCar = cardata_group; spin = spinner; super(); } } ; builder2 = builder1.setPositiveButton("Goto", onclicklistener); onclicklistener1 = new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialoginterface, int j) { if(groupCar.VehicleImageDrawable == null || !groupCar.VehicleImageDrawable.equals(((HashMap)availableCarColors.get(spin.getSelectedItemPosition())).get("Name").toString())) { groupCar.VehicleImageDrawable = ((HashMap)availableCarColors.get(spin.getSelectedItemPosition())).get("Name").toString(); ((OVMSActivity)getParent()).saveCars(); refreshUIHandler.sendEmptyMessage(0); } dialoginterface.dismiss(); } final TabMap this$0; private final CarData_Group val$groupCar; private final Spinner val$spin; { this$0 = TabMap.this; groupCar = cardata_group; spin = spinner; super(); } } ; builder2.setNegativeButton("Close", onclicklistener1); alertdialog = builder.create(); if(!isFinishing()) alertdialog.show(); goto _L1 _L4: cardata_group1 = (CarData_Group)iterator.next(); if(!cardata_group1.VehicleID.equals(s)) goto _L8; else goto _L7 _L7: cardata_group = cardata_group1; goto _L3 _L6: i = 0; _L10: if(i < availableCarColors.size()) { label0: { if(!((HashMap)availableCarColors.get(i)).get("Name").toString().equals(groupCar.VehicleImageDrawable)) break label0; spin.setSelection(i); } } goto _L9 i++; goto _L10 } private void showPopup() { ((SlidingDrawer)findViewById(0x7f090084)).open(); } private void updateLastUpdatedView() { } private void updateRoute() { myLocationOverlay.disableMyLocation(); List list = getRouteGeoPoints(); if(list != null) drawRoute(list, 0xff00ff00); else runOnUiThread(routeError); refreshUIHandler.postDelayed(myLocationEnable, 200L); Log.d("Route", "Route complete"); } public void Refresh(CarData cardata, boolean flag) { data = cardata; isLoggedIn = flag; if(data.Group == null) data.Group = new HashMap(); if(!currentVehicleID.equals(cardata.VehicleID)) { currentVehicleID = cardata.VehicleID; carMarkers = new Utilities.CarMarkerOverlay(getResources().getDrawable(getResources().getIdentifier((new StringBuilder(String.valueOf(data.VehicleImageDrawable))).append("32x32").toString(), "drawable", "com.openvehicles.OVMS")), 20, this, DirectionalMarker, 1); mapOverlays.set(0, carMarkers); carMarkers.addOnGroupCarTappedListener(new Utilities.OnGroupCarTappedListener() { public void OnGroupCarTapped(String s) { showGroupCarPopup(s); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); } refreshUIHandler.sendEmptyMessage(0); } public String getMapKMLUrl(GeoPoint geopoint, GeoPoint geopoint1, boolean flag) { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append("http://maps.google.com/maps?f=d&hl=en"); stringbuilder.append("&saddr="); stringbuilder.append(Double.toString((double)geopoint.getLatitudeE6() / 1000000D)); stringbuilder.append(","); stringbuilder.append(Double.toString((double)geopoint.getLongitudeE6() / 1000000D)); stringbuilder.append("&daddr="); stringbuilder.append(Double.toString((double)geopoint1.getLatitudeE6() / 1000000D)); stringbuilder.append(","); stringbuilder.append(Double.toString((double)geopoint1.getLongitudeE6() / 1000000D)); stringbuilder.append("&ie=UTF8&0&om=0&output=kml"); if(flag) stringbuilder.append("&dirflg=w"); return stringbuilder.toString(); } protected boolean isRouteDisplayed() { return false; } public void onBackPressed() { SlidingDrawer slidingdrawer = (SlidingDrawer)findViewById(0x7f090084); if(slidingdrawer.isOpened()) slidingdrawer.close(); else super.onBackPressed(); } public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(0x7f030010); mapView = (MapView)findViewById(0x7f090082); mc = mapView.getController(); mapView.setBuiltInZoomControls(true); centeringMode = new mapCenteringMode(null); centeringMode.setOnMapCenteringModeChangedListener(new OnCenteringModeChangedListener() { public void OnCenteringModeChanged(int j) { refreshUIHandler.post(updateCenteringOptions); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); DirectionalMarker = BitmapFactory.decodeResource(getResources(), 0x7f020008); mapOverlays = mapView.getOverlays(); carMarkers = new Utilities.CarMarkerOverlay(getResources().getDrawable(0x7f02001e), 20, this, DirectionalMarker, 1); mapOverlays.add(0, carMarkers); myLocationOverlay = new MyLocationOverlayCustom(this, mapView); mapOverlays.add(1, myLocationOverlay); TouchOverlay touchoverlay = new TouchOverlay(null); mapOverlays.add(2, touchoverlay); locationManager = (LocationManager)getSystemService("location"); locationListener = new LocationListener() { public void onLocationChanged(Location location) { int j = (int)(1000000D * location.getLatitude()); int k = (int)(1000000D * location.getLongitude()); lastKnownDeviceGeoPoint = new GeoPoint(j, k); Object aobj1[] = new Object[2]; aobj1[0] = Integer.valueOf(j); aobj1[1] = Integer.valueOf(k); Log.d("GPS", String.format("lat: %s lng %s", aobj1)); if(centeringMode.getMode() == 1) refreshUIHandler.sendEmptyMessage(0); } public void onProviderDisabled(String s) { } public void onProviderEnabled(String s) { } public void onStatusChanged(String s, int j, Bundle bundle1) { } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; RadioButton radiobutton = (RadioButton)findViewById(0x7f090087); radiobutton.setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View view) { if(((RadioButton)view).isChecked()) { Toast.makeText(TabMap.this, "Car Location", 0).show(); centeringMode.setMode(2); refreshUIHandler.post(initializeMapCentering); hidePopup(); } } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); radiobutton.setChecked(true); ((RadioButton)findViewById(0x7f090088)).setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View view) { if(((RadioButton)view).isChecked()) { if(lastKnownDeviceGeoPoint == null) Toast.makeText(TabMap.this, "Waiting for device location...", 0).show(); else Toast.makeText(TabMap.this, "Your Location", 0).show(); centeringMode.setMode(1); refreshUIHandler.post(initializeMapCentering); hidePopup(); } } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); ((RadioButton)findViewById(0x7f090089)).setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View view) { if(((RadioButton)view).isChecked()) { if(mapOverlays.size() > 3) Toast.makeText(TabMap.this, "Fitting Route", 0).show(); centeringMode.setMode(3); refreshUIHandler.post(initializeMapCentering); hidePopup(); } } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); ((RadioButton)findViewById(0x7f09008c)).setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View view) { if(((RadioButton)view).isChecked()) { if(mapOverlays.size() > 3) clearRoute(); if(lastKnownDeviceGeoPoint == null) { ((RadioButton)findViewById(0x7f09008d)).setChecked(true); Toast.makeText(TabMap.this, "Waiting for device location...", 0).show(); } else { planRoute(); hidePopup(); } } } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); ((RadioButton)findViewById(0x7f09008b)).setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View view) { if(((RadioButton)view).isChecked()) { if(mapOverlays.size() > 3) clearRoute(); if(lastKnownDeviceGeoPoint == null) { Toast.makeText(TabMap.this, "Waiting for device location...", 0).show(); } else { planRoute(); hidePopup(); } } } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); RadioButton radiobutton1 = (RadioButton)findViewById(0x7f09008d); radiobutton1.setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View view) { if(((RadioButton)view).isChecked()) { cancelRoute(); hidePopup(); } } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); radiobutton1.setChecked(true); ((ListView)findViewById(0x7f09008e)).setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { public void onItemClick(AdapterView adapterview, View view, int j, long l) { TextView textview = (TextView)view.findViewById(0x7f090095); showGroupCarPopup(textview.getText().toString()); } final TabMap this$0; { this$0 = TabMap.this; super(); } } ); initPopup(); String as[] = new String[23]; as[0] = "car_roadster_arcticwhite"; as[1] = "car_roadster_brilliantyellow"; as[2] = "car_roadster_electricblue"; as[3] = "car_roadster_fushionred"; as[4] = "car_roadster_glacierblue"; as[5] = "car_roadster_jetblack"; as[6] = "car_roadster_lightninggreen"; as[7] = "car_roadster_obsidianblack"; as[8] = "car_roadster_racinggreen"; as[9] = "car_roadster_radiantred"; as[10] = "car_roadster_sterlingsilver"; as[11] = "car_roadster_thundergray"; as[12] = "car_roadster_twilightblue"; as[13] = "car_roadster_veryorange"; as[14] = "car_models_anzabrown"; as[15] = "car_models_catalinawhite"; as[16] = "car_models_montereyblue"; as[17] = "car_models_sansimeonsilver"; as[18] = "car_models_sequolagreen"; as[19] = "car_models_shastapearlwhite"; as[20] = "car_models_sierrablack"; as[21] = "car_models_signaturered"; as[22] = "car_models_tiburongrey"; availableCarColors = new ArrayList(); int i = 0; do { if(i >= as.length) { ArrayList arraylist = availableCarColors; String as1[] = new String[1]; as1[0] = "Icon"; int ai[] = new int[1]; ai[0] = 0x7f090038; availableCarColorsSpinnerAdapter = new CustomSpinnerAdapter(this, arraylist, 0x7f03000b, as1, ai); return; } HashMap hashmap = new HashMap(); hashmap.put("Name", as[i]); Resources resources = getResources(); Object aobj[] = new Object[1]; aobj[0] = as[i]; hashmap.put("Icon", Integer.valueOf(resources.getIdentifier(String.format("%s96x44", aobj), "drawable", "com.openvehicles.OVMS"))); availableCarColors.add(hashmap); i++; } while(true); } protected void onPause() { try { Log.d("GPS", "OFF"); locationManager.removeUpdates(locationListener); myLocationOverlay.disableCompass(); myLocationOverlay.disableMyLocation(); } catch(Exception exception) { } lastUpdateTimerHandler.removeCallbacks(lastUpdateTimer); super.onPause(); } public void onRestoreInstanceState(Bundle bundle) { super.onRestoreInstanceState(bundle); planWalkingDirection = bundle.getBoolean("planWalkingDirection"); centeringMode.setMode(bundle.getInt("centeringMode")); } protected void onResume() { super.onResume(); if(locationManager.isProviderEnabled("gps")) { Log.d("GPS", "ON"); locationManager.requestLocationUpdates("network", 5000L, 5F, locationListener); locationManager.requestLocationUpdates("gps", 5000L, 5F, locationListener); } lastKnownDeviceGeoPoint = null; myLocationOverlay.enableCompass(); myLocationOverlay.enableMyLocation(); lastUpdateTimerHandler.postDelayed(lastUpdateTimer, 5000L); } public void onSaveInstanceState(Bundle bundle) { bundle.putBoolean("planWalkingDirection", planWalkingDirection); bundle.putInt("centeringMode", centeringMode.getMode()); super.onSaveInstanceState(bundle); } private final int CAR_MARKER_ANIMATION_DURATION_MS = 2000; private final int CAR_MARKER_ANIMATION_FRAMES = 40; private Bitmap DirectionalMarker; private final int LABEL_SHADOW_XY = 1; private final int LABEL_TEXT_SIZE = 20; private final int SYSTEM_OVERLAY_COUNT = 3; private Runnable animateCarMarker; private ArrayList availableCarColors; private CustomSpinnerAdapter availableCarColorsSpinnerAdapter; private int carMarkerAnimationFrame; private Handler carMarkerAnimationTimerHandler; private Utilities.CarMarkerOverlay carMarkers; mapCenteringMode centeringMode; private String currentVehicleID; private CarData data; private GroupCarsListViewAdapter groupCarsListAdapter; final Runnable initializeMapCentering = new Runnable() { public void run() { GeoPoint geopoint; Log.d("OVMS", "Centering Map"); geopoint = Utilities.GetCarGeopoint(data); centeringMode.getMode(); JVM INSTR tableswitch 1 5: default 64 // 1 99 // 2 148 // 3 175 // 4 88 // 5 561; goto _L1 _L2 _L3 _L4 _L5 _L6 _L5: break; /* Loop/switch isn't completed */ _L1: mc.animateTo(geopoint); mc.setZoom(18); _L8: mapView.invalidate(); return; _L2: if(myLocationOverlay.getMyLocation() != null) mc.animateTo(myLocationOverlay.getMyLocation()); mc.setZoom(17); continue; /* Loop/switch isn't completed */ _L3: mc.animateTo(geopoint); mc.setZoom(17); continue; /* Loop/switch isn't completed */ _L4: if(mapOverlays.size() <= 3) { centeringMode.setMode(2); mc.animateTo(geopoint); mc.setZoom(17); continue; /* Loop/switch isn't completed */ } RouteOverlay routeoverlay = (RouteOverlay)mapOverlays.get(3); int i = routeoverlay.gp1.getLatitudeE6(); int j = routeoverlay.gp1.getLongitudeE6(); int k = routeoverlay.gp1.getLatitudeE6(); int l = routeoverlay.gp1.getLongitudeE6(); int i1 = 3; do { if(i1 >= mapOverlays.size()) { Object aobj[] = new Object[4]; aobj[0] = Integer.valueOf(i); aobj[1] = Integer.valueOf(k); aobj[2] = Integer.valueOf(j); aobj[3] = Integer.valueOf(l); Log.d("Map", String.format("Zoom Span: %s %s %s %s", aobj)); mapView.getController().zoomToSpan(100 + (k - i), 100 + (l - j)); mapView.getController().animateTo(new GeoPoint((k + i) / 2, (l + j) / 2)); ((RadioButton)findViewById(0x7f09008d)).setChecked(false); continue; /* Loop/switch isn't completed */ } RouteOverlay routeoverlay1 = (RouteOverlay)mapOverlays.get(i1); if(i > routeoverlay1.gp1.getLatitudeE6()) i = routeoverlay1.gp1.getLatitudeE6(); if(k < routeoverlay1.gp1.getLatitudeE6()) k = routeoverlay1.gp1.getLatitudeE6(); if(j > routeoverlay1.gp1.getLongitudeE6()) j = routeoverlay1.gp1.getLongitudeE6(); if(l < routeoverlay1.gp1.getLongitudeE6()) l = routeoverlay1.gp1.getLongitudeE6(); i1++; } while(true); _L6: if(data.Group.get(centeringMode.GroupCar_VehicleID) == null) { centeringMode.setMode(4); } else { mc.animateTo(Utilities.GetCarGeopoint(((CarData_Group)data.Group.get(centeringMode.GroupCar_VehicleID)).Latitude, ((CarData_Group)data.Group.get(centeringMode.GroupCar_VehicleID)).Longitude)); mc.setZoom(18); } if(true) goto _L8; else goto _L7 _L7: } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; private boolean isLoggedIn; private GeoPoint lastCarGeoPoints[]; private GeoPoint lastKnownDeviceGeoPoint; private Runnable lastUpdateTimer; private Handler lastUpdateTimerHandler; private LocationListener locationListener; private LocationManager locationManager; private float mapDragLastX; private float mapDragLastY; private List mapOverlays; private MapView mapView; private MapController mc; private Runnable myLocationDisable; private Runnable myLocationEnable; private MyLocationOverlayCustom myLocationOverlay; private boolean planWalkingDirection; private Handler refreshUIHandler; private Runnable routeError; final Runnable updateCenteringOptions = new Runnable() { public void run() { centeringMode.getMode(); JVM INSTR tableswitch 0 5: default 48 // 0 49 // 1 68 // 2 49 // 3 87 // 4 106 // 5 106; goto _L1 _L2 _L3 _L2 _L4 _L5 _L5 _L1: return; _L2: ((RadioButton)findViewById(0x7f090087)).setChecked(true); continue; /* Loop/switch isn't completed */ _L3: ((RadioButton)findViewById(0x7f090088)).setChecked(true); continue; /* Loop/switch isn't completed */ _L4: ((RadioButton)findViewById(0x7f090089)).setChecked(true); continue; /* Loop/switch isn't completed */ _L5: ((RadioButton)findViewById(0x7f09008a)).setChecked(true); if(true) goto _L1; else goto _L6 _L6: } final TabMap this$0; { this$0 = TabMap.this; super(); } } ; }