Bump java lib versions to 13
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / TabMap.java
index 9c39e105d68781018ce4d29a0eede3c1a443a556..a2f997f1f597a4323576bf02a195a7ec3c769924 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,7 +21,7 @@ package org.altusmetrum.AltosDroid;
 import java.util.*;
 import java.io.*;
 
-import org.altusmetrum.altoslib_7.*;
+import org.altusmetrum.altoslib_13.*;
 
 import android.app.Activity;
 import android.graphics.*;
@@ -32,11 +33,12 @@ import android.widget.*;
 import android.location.Location;
 import android.content.*;
 
-public class TabMap extends AltosDroidTab {
+public class TabMap extends AltosDroidTab implements AltosDroidMapSourceListener {
 
        AltosLatLon     here;
 
        private TextView mDistanceView;
+       private TextView mBearingLabel;
        private TextView mBearingView;
        private TextView mTargetLatitudeView;
        private TextView mTargetLongitudeView;
@@ -57,30 +59,24 @@ public class TabMap extends AltosDroidTab {
                super.onCreate(savedInstanceState);
        }
 
-       private void make_offline_map() {
-       }
-
-       private void make_online_map() {
-               map_online = new AltosMapOnline(view.getContext());
-               map_online.onCreateView(altos_droid.map_type);
-       }
-
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                view = inflater.inflate(R.layout.tab_map, container, false);
                int map_source = AltosDroidPreferences.map_source();
 
                mDistanceView  = (TextView)view.findViewById(R.id.distance_value);
+               mBearingLabel  = (TextView)view.findViewById(R.id.bearing_label);
                mBearingView   = (TextView)view.findViewById(R.id.bearing_value);
                mTargetLatitudeView  = (TextView)view.findViewById(R.id.target_lat_value);
                mTargetLongitudeView = (TextView)view.findViewById(R.id.target_lon_value);
                mReceiverLatitudeView  = (TextView)view.findViewById(R.id.receiver_lat_value);
                mReceiverLongitudeView = (TextView)view.findViewById(R.id.receiver_lon_value);
                map_offline = (AltosMapOffline)view.findViewById(R.id.map_offline);
-               map_offline.onCreateView(altos_droid.map_type);
+               map_offline.onCreateView(altos_droid);
                map_online = new AltosMapOnline(view.getContext());
-               map_online.onCreateView(altos_droid.map_type);
-               set_map_source(AltosDroidPreferences.map_source());
+               map_online.onCreateView(altos_droid);
+               map_source_changed(AltosDroidPreferences.map_source());
+               AltosDroidPreferences.register_map_source_listener(this);
                return view;
        }
 
@@ -94,9 +90,12 @@ public class TabMap extends AltosDroidTab {
        @Override
        public void onDestroyView() {
                super.onDestroyView();
+               map_offline.onDestroyView();
+               map_online.onDestroyView();
+               AltosDroidPreferences.unregister_map_source_listener(this);
        }
 
-       public String tab_name() { return "map"; }
+       public String tab_name() { return AltosDroid.tab_map_name; }
 
        private void center(double lat, double lon, double accuracy) {
                if (map_offline != null)
@@ -107,8 +106,19 @@ public class TabMap extends AltosDroidTab {
 
        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));
+                       String  direction = AltosDroid.direction(from_receiver, receiver);
+                       if (direction != null) {
+                               mBearingLabel.setText("Direction");
+                               mBearingView.setText(direction);
+                       } else {
+                               mBearingLabel.setText("Bearing");
+                               mBearingView.setText(String.format("%3.0f°", from_receiver.bearing));
+                       }
                        set_value(mDistanceView, AltosConvert.distance, 6, from_receiver.distance);
+               } else {
+                       mBearingLabel.setText("Bearing");
+                       mBearingView.setText("");
+                       set_value(mDistanceView, AltosConvert.distance, 6, AltosLib.MISSING);
                }
 
                if (state != null) {
@@ -139,16 +149,7 @@ public class TabMap extends AltosDroidTab {
                }
        }
 
-       @Override
-       public void set_map_type(int map_type) {
-               if (map_offline != null)
-                       map_offline.set_map_type(map_type);
-               if (map_online != null)
-                       map_online.set_map_type(map_type);
-       }
-
-       @Override
-       public void set_map_source(int map_source) {
+       public void map_source_changed(int map_source) {
                this.map_source = map_source;
                if (map_source == AltosDroidPreferences.MAP_SOURCE_OFFLINE) {
                        if (map_online != null)