Switch from GPLv2 to GPLv2+
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroidTab.java
index cc1acd6798ab339c4a226b9984daa8fc639812f4..11d8f6241fc885b1b140696c803a78753e3b4b77 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
@@ -17,7 +18,7 @@
 
 package org.altusmetrum.AltosDroid;
 
-import org.altusmetrum.altoslib_7.*;
+import org.altusmetrum.altoslib_11.*;
 import android.location.Location;
 import android.app.Activity;
 import android.graphics.Color;
@@ -29,20 +30,19 @@ import android.location.Location;
 import android.widget.TextView;
 
 public abstract class AltosDroidTab extends Fragment implements AltosUnitsListener {
+       TelemetryState          last_telem_state;
        AltosState              last_state;
        AltosGreatCircle        last_from_receiver;
        Location                last_receiver;
+       AltosDroid              altos_droid;
 
-       public abstract void show(AltosState state, AltosGreatCircle from_receiver, Location receiver);
+       public abstract void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver);
 
        public abstract String tab_name();
 
-       public void set_map_type(int map_type) {
-       }
-
        public void units_changed(boolean imperial_units) {
-               if (!isHidden() && last_state != null)
-                       show(last_state, last_from_receiver, last_receiver);
+               if (!isHidden())
+                       show(last_telem_state, last_state, last_from_receiver, last_receiver);
        }
 
        public void set_value(TextView text_view,
@@ -57,18 +57,29 @@ public abstract class AltosDroidTab extends Fragment implements AltosUnitsListen
 
        public void set_visible(boolean visible) {
                FragmentTransaction     ft = AltosDroid.fm.beginTransaction();
+               AltosDebug.debug("set visible %b %s\n", visible, tab_name());
                if (visible) {
-                       AltosState              state = last_state;
-                       AltosGreatCircle        from_receiver = last_from_receiver;
-                       Location                receiver = last_receiver;
-
                        ft.show(this);
-                       show(state, from_receiver, receiver);
+                       show(last_telem_state, last_state, last_from_receiver, last_receiver);
                } else
                        ft.hide(this);
                ft.commitAllowingStateLoss();
        }
 
+       @Override
+       public void onAttach(Activity activity) {
+               super.onAttach(activity);
+               altos_droid = (AltosDroid) activity;
+               altos_droid.registerTab(this);
+       }
+
+       @Override
+       public void onDetach() {
+               super.onDetach();
+               altos_droid.unregisterTab(this);
+               altos_droid = null;
+       }
+
        @Override
        public void onResume() {
                super.onResume();
@@ -76,12 +87,15 @@ public abstract class AltosDroidTab extends Fragment implements AltosUnitsListen
                set_visible(true);
        }
 
-       public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver, boolean is_current) {
+       public void update_ui(TelemetryState telem_state, AltosState state,
+                             AltosGreatCircle from_receiver, Location receiver, boolean is_current)
+       {
+               last_telem_state = telem_state;
                last_state = state;
                last_from_receiver = from_receiver;
                last_receiver = receiver;
                if (is_current)
-                       show(state, from_receiver, receiver);
+                       show(telem_state, state, from_receiver, receiver);
                else
                        return;
        }