diff options
Diffstat (limited to 'altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java')
| -rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java | 43 | 
1 files changed, 21 insertions, 22 deletions
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java index 56e296d9..4b728c23 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java @@ -54,8 +54,6 @@ class Rocket {  public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { -	AltosDroid mAltosDroid; -  	AltosMap map;  	AltosLatLon	here; @@ -325,11 +323,9 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface {  	@Override  	public void onAttach(Activity activity) {  		super.onAttach(activity); -		mAltosDroid = (AltosDroid) activity; -		mAltosDroid.registerTab(this);  		map = new AltosMap(this); -		map.set_maptype(mAltosDroid.map_type); +		map.set_maptype(altos_droid.map_type);  		pad_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pad);  		/* arrow at the bottom of the launchpad image */ @@ -348,12 +344,6 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface {  	}  	@Override -	public void onDetach() { -		super.onDetach(); -		mAltosDroid = null; -	} - -	@Override  	public void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  	} @@ -382,7 +372,6 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface {  	public void onDestroyView() {  		super.onDestroyView(); -		mAltosDroid.unregisterTab(this);  	}  	private void center(double lat, double lon, double accuracy) { @@ -395,7 +384,7 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface {  	public String tab_name() { return "offmap"; } -	public void show(AltosState state, AltosGreatCircle from_receiver, Location receiver) { +	public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) {  		if (from_receiver != null) {  			mBearingView.setText(String.format("%3.0f°", from_receiver.bearing));  			set_value(mDistanceView, AltosConvert.distance, 6, from_receiver.distance); @@ -411,20 +400,30 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface {  			}  			if (state.pad_lat != AltosLib.MISSING && pad == null)  				pad = new AltosLatLon(state.pad_lat, state.pad_lon); +		} -			int serial = state.serial; -			if (serial == AltosLib.MISSING) -				serial = 0; +		if (telem_state != null) { +			Integer[] old_serial = rockets.keySet().toArray(new Integer[0]); +			Integer[] new_serial = telem_state.states.keySet().toArray(new Integer[0]); -			Rocket	rocket = null; +			/* remove deleted keys */ +			for (int serial : old_serial) { +				if (!telem_state.states.containsKey(serial)) +					rockets.remove(serial); +			} + +			/* set remaining keys */ -			if (state.gps != null && state.gps.locked) { -				if (!rockets.containsKey(serial)) { +			for (int serial : new_serial) { +				Rocket 		rocket; +				AltosState	t_state = telem_state.states.get(serial); +				if (rockets.containsKey(serial)) +					rocket = rockets.get(serial); +				else {  					rocket = new Rocket(String.format("%d", serial), this);  					rockets.put(serial, rocket); -				} else -					rocket = rockets.get(serial); -				rocket.set_position(new AltosLatLon(state.gps.lat, state.gps.lon)); +				} +				rocket.set_position(new AltosLatLon(t_state.gps.lat, t_state.gps.lon));  			}  		}  | 
