java: Bump java library versions for next release
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroid.java
index 5ce6f81069eae5bb7222f9d4c447ce211d8b28e1..1b49ba953de7450f4ce6cf60f6a0f458a62c8d5f 100644 (file)
@@ -37,7 +37,7 @@ import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
 import android.support.v4.app.FragmentActivity;
-import android.support.v4.view.ViewPager;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -49,7 +49,7 @@ import android.widget.Toast;
 import android.app.AlertDialog;
 import android.location.Location;
 
-import org.altusmetrum.altoslib_1.*;
+import org.altusmetrum.altoslib_5.*;
 
 public class AltosDroid extends FragmentActivity {
        // Debugging
@@ -82,10 +82,11 @@ public class AltosDroid extends FragmentActivity {
        private TextView mVersion;
 
        // Tabs
-       TabHost     mTabHost;
-       AltosViewPager   mViewPager;
-       TabsAdapter mTabsAdapter;
+       TabHost         mTabHost;
+       AltosViewPager  mViewPager;
+       TabsAdapter     mTabsAdapter;
        ArrayList<AltosDroidTab> mTabs = new ArrayList<AltosDroidTab>();
+       int             tabHeight;
 
        // Timer and Saved flight state for Age calculation
        private Timer timer = new Timer();
@@ -146,7 +147,7 @@ public class AltosDroid extends FragmentActivity {
                        case MSG_CRC_ERROR:
                        case MSG_UPDATE_AGE:
                                if (ad.saved_state != null) {
-                                       ad.mAgeView.setText(String.format("%d", (System.currentTimeMillis() - ad.saved_state.report_time + 500) / 1000));
+                                       ad.mAgeView.setText(String.format("%d", (System.currentTimeMillis() - ad.saved_state.received_time + 500) / 1000));
                                }
                                break;
                        }
@@ -242,11 +243,11 @@ public class AltosDroid extends FragmentActivity {
                }
 
                if (state != null) {
-                       mCallsignView.setText(state.data.callsign);
-                       mSerialView.setText(String.format("%d", state.data.serial));
-                       mFlightView.setText(String.format("%d", state.data.flight));
-                       mStateView.setText(state.data.state());
-                       mRSSIView.setText(String.format("%d", state.data.rssi));
+                       mCallsignView.setText(state.callsign);
+                       mSerialView.setText(String.format("%d", state.serial));
+                       mFlightView.setText(String.format("%d", state.flight));
+                       mStateView.setText(state.state_name());
+                       mRSSIView.setText(String.format("%d", state.rssi));
                }
 
                for (AltosDroidTab mTab : mTabs)
@@ -265,6 +266,8 @@ public class AltosDroid extends FragmentActivity {
 
        static String pos(double p, String pos, String neg) {
                String  h = pos;
+               if (p == AltosLib.MISSING)
+                       return "";
                if (p < 0) {
                        h = neg;
                        p = -p;
@@ -274,6 +277,18 @@ public class AltosDroid extends FragmentActivity {
                return String.format("%d°%9.4f\" %s", deg, min, h);
        }
 
+       static String number(String format, double value) {
+               if (value == AltosLib.MISSING)
+                       return "";
+               return String.format(format, value);
+       }
+
+       static String integer(String format, int value) {
+               if (value == AltosLib.MISSING)
+                       return "";
+               return String.format(format, value);
+       }
+
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
@@ -298,6 +313,7 @@ public class AltosDroid extends FragmentActivity {
                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);
                mTabHost.setup();
 
@@ -312,8 +328,27 @@ public class AltosDroid extends FragmentActivity {
                mTabsAdapter.addTab(mTabHost.newTabSpec("landed").setIndicator("Landed"), TabLanded.class, null);
                mTabsAdapter.addTab(mTabHost.newTabSpec("map").setIndicator("Map"), TabMap.class, null);
 
+
+               // Scale the size of the Tab bar for different screen densities
+               // This probably won't be needed when we start supporting ICS+ tabs.
+               DisplayMetrics metrics = new DisplayMetrics();
+               getWindowManager().getDefaultDisplay().getMetrics(metrics);
+               int density = metrics.densityDpi;
+
+               if (density==DisplayMetrics.DENSITY_XHIGH)
+                       tabHeight = 65;
+               else if (density==DisplayMetrics.DENSITY_HIGH)
+                       tabHeight = 45;
+               else if (density==DisplayMetrics.DENSITY_MEDIUM)
+                       tabHeight = 35;
+               else if (density==DisplayMetrics.DENSITY_LOW)
+                       tabHeight = 25;
+               else
+                       tabHeight = 65;
+
                for (int i = 0; i < 5; i++)
-                       mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = 45;
+                       mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = tabHeight;
+
 
                // Set up the custom title
                mTitle = (TextView) findViewById(R.id.title_left_text);
@@ -379,7 +414,7 @@ public class AltosDroid extends FragmentActivity {
                super.onDestroy();
                if(D) Log.e(TAG, "--- ON DESTROY ---");
 
-               mAltosVoice.stop();
+               if (mAltosVoice != null) mAltosVoice.stop();
        }
 
        public void onActivityResult(int requestCode, int resultCode, Intent data) {