altosdroid: Add imperial unit support
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroid.java
index d276798eb929e0665e3ea416d4b3abfda0380a31..f6cceac947dbab97cc6b6d838a7fd22e2f21f960 100644 (file)
@@ -54,7 +54,7 @@ import android.location.Location;
 
 import org.altusmetrum.altoslib_5.*;
 
 
 import org.altusmetrum.altoslib_5.*;
 
-public class AltosDroid extends FragmentActivity {
+public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
        // Debugging
        static final String TAG = "AltosDroid";
        static final boolean D = true;
        // Debugging
        static final String TAG = "AltosDroid";
        static final boolean D = true;
@@ -187,6 +187,11 @@ public class AltosDroid extends FragmentActivity {
                mTabs.remove(mTab);
        }
 
                mTabs.remove(mTab);
        }
 
+       public void units_changed(boolean imperial_units) {
+               for (AltosDroidTab mTab : mTabs)
+                       mTab.units_changed(imperial_units);
+       }
+
        void update_title(TelemetryState telemetry_state) {
                switch (telemetry_state.connect) {
                case TelemetryState.CONNECT_CONNECTED:
        void update_title(TelemetryState telemetry_state) {
                switch (telemetry_state.connect) {
                case TelemetryState.CONNECT_CONNECTED:
@@ -226,7 +231,15 @@ public class AltosDroid extends FragmentActivity {
                }
        }
 
                }
        }
 
+       boolean registered_units_listener;
+
        void update_state(TelemetryState telemetry_state) {
        void update_state(TelemetryState telemetry_state) {
+
+               if (!registered_units_listener) {
+                       registered_units_listener = true;
+                       AltosPreferences.register_units_listener(this);
+               }
+
                update_title(telemetry_state);
                update_ui(telemetry_state.state, telemetry_state.location);
                if (telemetry_state.connect == TelemetryState.CONNECT_CONNECTED)
                update_title(telemetry_state);
                update_ui(telemetry_state.state, telemetry_state.location);
                if (telemetry_state.connect == TelemetryState.CONNECT_CONNECTED)
@@ -656,6 +669,10 @@ public class AltosDroid extends FragmentActivity {
                        AlertDialog alert_rate = builder_rate.create();
                        alert_rate.show();
                        return true;
                        AlertDialog alert_rate = builder_rate.create();
                        alert_rate.show();
                        return true;
+               case R.id.change_units:
+                       boolean imperial = AltosPreferences.imperial_units();
+                       AltosPreferences.set_imperial_units(!imperial);
+                       return true;
                }
                return false;
        }
                }
                return false;
        }