Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroidTab.java
index b960eb1a2a7d5c5e81f93e75d3640e049bace381..8e625da6563b8268242d9166a6019cc23e47fac3 100644 (file)
@@ -27,8 +27,9 @@ import android.support.v4.app.FragmentTransaction;
 import android.support.v4.app.FragmentManager;
 import android.location.Location;
 import android.util.Log;
+import android.widget.TextView;
 
-public abstract class AltosDroidTab extends Fragment {
+public abstract class AltosDroidTab extends Fragment implements AltosUnitsListener {
        AltosState              last_state;
        AltosGreatCircle        last_from_receiver;
        Location                last_receiver;
@@ -37,39 +38,46 @@ public abstract class AltosDroidTab extends Fragment {
 
        public abstract String tab_name();
 
+       public void units_changed(boolean imperial_units) {
+               if (!isHidden() && last_state != null)
+                       show(last_state, last_from_receiver, last_receiver);
+       }
+
+       public void set_value(TextView text_view,
+                             AltosUnits units,
+                             int width,
+                             double value) {
+               if (value == AltosLib.MISSING)
+                       text_view.setText("");
+               else
+                       text_view.setText(units.show(width, value));
+       }
+
        public void set_visible(boolean visible) {
                FragmentTransaction     ft = AltosDroid.fm.beginTransaction();
-               if (visible)
+               if (visible) {
+                       AltosState              state = last_state;
+                       AltosGreatCircle        from_receiver = last_from_receiver;
+                       Location                receiver = last_receiver;
+
+                       show(state, from_receiver, receiver);
                        ft.show(this);
-               else
+               else
                        ft.hide(this);
                ft.commit();
        }
 
        public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver, boolean is_current) {
+               last_state = state;
+               last_from_receiver = from_receiver;
+               last_receiver = receiver;
                if (is_current) {
-                       Log.d(AltosDroid.TAG, String.format("%s: visible, performing update", tab_name()));
+                       if (AltosDroid.D) Log.d(AltosDroid.TAG, String.format("%s: visible, performing update", tab_name()));
 
                        show(state, from_receiver, receiver);
                } else {
-                       Log.d(AltosDroid.TAG, String.format("%s: not visible, skipping update", tab_name()));
-                       last_state = state;
-                       last_from_receiver = from_receiver;
-                       last_receiver = receiver;
+                       if (AltosDroid.D) Log.d(AltosDroid.TAG, String.format("%s: not visible, skipping update", tab_name()));
                        return;
                }
        }
-
-       public void onHiddenChanged(boolean hidden) {
-               if (last_state != null && isVisible()) {
-                       AltosState              state = last_state;
-                       AltosGreatCircle        from_receiver = last_from_receiver;
-                       Location                receiver = last_receiver;
-
-                       last_state = null;
-                       last_from_receiver = null;
-                       last_receiver = null;
-                       show(state, from_receiver, receiver);
-               }
-       }
 }