altosdroid: Switch from custom title to standard Holo theme
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroid.java
index db065b3fcafbd8248cc16b324cf29a60904994e4..293dff7f2f70732163187cf8aadab75330ad71f8 100644 (file)
@@ -42,7 +42,6 @@ import android.content.res.Resources;
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentManager;
 import android.util.DisplayMetrics;
-import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -57,12 +56,9 @@ import android.app.AlertDialog;
 import android.location.Location;
 import android.hardware.usb.*;
 
-import org.altusmetrum.altoslib_6.*;
+import org.altusmetrum.altoslib_7.*;
 
 public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
-       // Debugging
-       static final String TAG = "AltosDroid";
-       static final boolean D = true;
 
        // Actions sent to the telemetry server at startup time
 
@@ -77,14 +73,15 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
        // Intent request codes
        public static final int REQUEST_CONNECT_DEVICE = 1;
        public static final int REQUEST_ENABLE_BT      = 2;
+       public static final int REQUEST_PRELOAD_MAPS   = 3;
+       public static final int REQUEST_MAP_TYPE       = 4;
+
+       public int map_type = AltosMap.maptype_hybrid;
 
        public static FragmentManager   fm;
 
        private BluetoothAdapter mBluetoothAdapter = null;
 
-       // Layout Views
-       private TextView mTitle;
-
        // Flight state values
        private TextView mCallsignView;
        private TextView mRSSIView;
@@ -133,17 +130,17 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
 
                        switch (msg.what) {
                        case MSG_STATE:
-                               if(D) Log.d(TAG, "MSG_STATE");
+                               AltosDebug.debug("MSG_STATE");
                                TelemetryState telemetry_state = (TelemetryState) msg.obj;
                                if (telemetry_state == null) {
-                                       Log.d(TAG, "telemetry_state null!");
+                                       AltosDebug.debug("telemetry_state null!");
                                        return;
                                }
 
                                ad.update_state(telemetry_state);
                                break;
                        case MSG_UPDATE_AGE:
-                               if(D) Log.d(TAG, "MSG_UPDATE_AGE");
+                               AltosDebug.debug("MSG_UPDATE_AGE");
                                ad.update_age();
                                break;
                        }
@@ -221,20 +218,20 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                                if (telemetry_state.telemetry_rate != AltosLib.ao_telemetry_rate_38400)
                                        str = str.concat(String.format(" %d bps",
                                                                       AltosLib.ao_telemetry_rate_values[telemetry_state.telemetry_rate]));
-                               mTitle.setText(str);
+                               setTitle(str);
                        } else {
-                               mTitle.setText(R.string.title_connected_to);
+                               setTitle(R.string.title_connected_to);
                        }
                        break;
                case TelemetryState.CONNECT_CONNECTING:
                        if (telemetry_state.address != null)
-                               mTitle.setText(String.format("Connecting to %s...", telemetry_state.address.name));
+                               setTitle(String.format("Connecting to %s...", telemetry_state.address.name));
                        else
-                               mTitle.setText("Connecting to something...");
+                               setTitle("Connecting to something...");
                        break;
                case TelemetryState.CONNECT_DISCONNECTED:
                case TelemetryState.CONNECT_NONE:
-                       mTitle.setText(R.string.title_not_connected);
+                       setTitle(R.string.title_not_connected);
                        break;
                }
        }
@@ -421,14 +418,13 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
-               if(D) Log.e(TAG, "+++ ON CREATE +++");
+               AltosDebug.init(this);
+               AltosDebug.debug("+++ ON CREATE +++");
 
                fm = getSupportFragmentManager();
 
                // Set up the window layout
-               requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
                setContentView(R.layout.altosdroid);
-               getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
 
                // Create the Tabs and ViewPager
                mTabHost = (TabHost)findViewById(android.R.id.tabhost);
@@ -444,11 +440,7 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                mTabsAdapter.addTab(mTabHost.newTabSpec("descent").setIndicator(create_tab_view("Descent")), TabDescent.class, null);
                mTabsAdapter.addTab(mTabHost.newTabSpec("landed").setIndicator(create_tab_view("Landed")), TabLanded.class, null);
                mTabsAdapter.addTab(mTabHost.newTabSpec("map").setIndicator(create_tab_view("Map")), TabMap.class, null);
-
-               // Set up the custom title
-               mTitle = (TextView) findViewById(R.id.title_left_text);
-               mTitle.setText(R.string.app_name);
-               mTitle = (TextView) findViewById(R.id.title_right_text);
+               mTabsAdapter.addTab(mTabHost.newTabSpec("offmap").setIndicator(create_tab_view("OffMap")), TabMapOffline.class, null);
 
                // Display the Version
                mVersion = (TextView) findViewById(R.id.version);
@@ -525,13 +517,13 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                boolean granted = intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, true);
 
-               if (D) Log.e(TAG, "intent " + intent + " device " + device + " granted " + granted);
+               AltosDebug.debug("intent %s device %s granted %s", intent, device, granted);
 
                if (!granted)
                        device = null;
 
                if (device != null) {
-                       if (D) Log.d(TAG, "intent has usb device " + device.toString());
+                       AltosDebug.debug("intent has usb device " + device.toString());
                        connectUsb(device);
                } else {
 
@@ -541,11 +533,11 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                         * don't want to loop forever...
                         */
                        if (granted) {
-                               if (D) Log.d(TAG, "check for a USB device at startup");
+                               AltosDebug.debug("check for a USB device at startup");
                                if (check_usb())
                                        return;
                        }
-                       if (D) Log.d(TAG, "Starting by looking for bluetooth devices");
+                       AltosDebug.debug("Starting by looking for bluetooth devices");
                        if (ensureBluetooth())
                                return;
                        finish();
@@ -555,7 +547,7 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
        @Override
        public void onStart() {
                super.onStart();
-               if(D) Log.e(TAG, "++ ON START ++");
+               AltosDebug.debug("++ ON START ++");
 
                noticeIntent(getIntent());
 
@@ -574,26 +566,26 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
        @Override
        public void onNewIntent(Intent intent) {
                super.onNewIntent(intent);
-               if(D) Log.d(TAG, "onNewIntent");
+               AltosDebug.debug("onNewIntent");
                noticeIntent(intent);
        }
 
        @Override
        public void onResume() {
                super.onResume();
-               if(D) Log.e(TAG, "+ ON RESUME +");
+               AltosDebug.debug("+ ON RESUME +");
        }
 
        @Override
        public void onPause() {
                super.onPause();
-               if(D) Log.e(TAG, "- ON PAUSE -");
+               AltosDebug.debug("- ON PAUSE -");
        }
 
        @Override
        public void onStop() {
                super.onStop();
-               if(D) Log.e(TAG, "-- ON STOP --");
+               AltosDebug.debug("-- ON STOP --");
 
                doUnbindService();
                if (mAltosVoice != null) {
@@ -605,14 +597,14 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
        @Override
        public void onDestroy() {
                super.onDestroy();
-               if(D) Log.e(TAG, "--- ON DESTROY ---");
+               AltosDebug.debug("--- ON DESTROY ---");
 
                if (mAltosVoice != null) mAltosVoice.stop();
                stop_timer();
        }
 
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-               if(D) Log.d(TAG, "onActivityResult " + resultCode);
+               AltosDebug.debug("onActivityResult " + resultCode);
                switch (requestCode) {
                case REQUEST_CONNECT_DEVICE:
                        // When DeviceListActivity returns with a device to connect to
@@ -627,12 +619,16 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                                //setupChat();
                        } else {
                                // User did not enable Bluetooth or an error occured
-                               Log.e(TAG, "BT not enabled");
+                               AltosDebug.error("BT not enabled");
                                stopService(new Intent(AltosDroid.this, TelemetryService.class));
                                Toast.makeText(this, R.string.bt_not_enabled, Toast.LENGTH_SHORT).show();
                                finish();
                        }
                        break;
+               case REQUEST_MAP_TYPE:
+                       if (resultCode == Activity.RESULT_OK)
+                               set_map_type(data);
+                       break;
                }
        }
 
@@ -643,9 +639,9 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                        // Attempt to connect to the device
                        try {
                                mService.send(Message.obtain(null, TelemetryService.MSG_OPEN_USB, device));
-                               if (D) Log.d(TAG, "Sent OPEN_USB message");
+                               AltosDebug.debug("Sent OPEN_USB message");
                        } catch (RemoteException e) {
-                               if (D) Log.e(TAG, "connect device message failed");
+                               AltosDebug.debug("connect device message failed");
                        }
                }
        }
@@ -656,12 +652,12 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                        String address = data.getExtras().getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
                        String name = data.getExtras().getString(DeviceListActivity.EXTRA_DEVICE_NAME);
 
-                       if (D) Log.d(TAG, "Connecting to " + address + " " + name);
+                       AltosDebug.debug("Connecting to " + address + " " + name);
                        DeviceAddress   a = new DeviceAddress(address, name);
                        mService.send(Message.obtain(null, TelemetryService.MSG_CONNECT, a));
-                       if (D) Log.d(TAG, "Sent connecting message");
+                       AltosDebug.debug("Sent connecting message");
                } catch (RemoteException e) {
-                       if (D) Log.e(TAG, "connect device message failed");
+                       AltosDebug.debug("connect device message failed");
                }
        }
 
@@ -672,6 +668,17 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                }
        }
 
+       private void set_map_type(Intent data) {
+               int type = data.getIntExtra(MapTypeActivity.EXTRA_MAP_TYPE, -1);
+
+               AltosDebug.debug("intent set_map_type %d\n", type);
+               if (type != -1) {
+                       map_type = type;
+                       for (AltosDroidTab mTab : mTabs)
+                               mTab.set_map_type(map_type);
+               }
+       }
+
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                MenuInflater inflater = getMenuInflater();
@@ -737,7 +744,7 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                        disconnectDevice();
                        return true;
                case R.id.quit:
-                       Log.d(TAG, "R.id.quit");
+                       AltosDebug.debug("R.id.quit");
                        disconnectDevice();
                        finish();
                        return true;
@@ -792,6 +799,14 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
                        boolean imperial = AltosPreferences.imperial_units();
                        AltosPreferences.set_imperial_units(!imperial);
                        return true;
+               case R.id.preload_maps:
+                       serverIntent = new Intent(this, PreloadMapActivity.class);
+                       startActivityForResult(serverIntent, REQUEST_PRELOAD_MAPS);
+                       return true;
+               case R.id.map_type:
+                       serverIntent = new Intent(this, MapTypeActivity.class);
+                       startActivityForResult(serverIntent, REQUEST_MAP_TYPE);
+                       return true;
                }
                return false;
        }