altosdroid: fix side-to-side scrolling in map tab
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroid.java
index 2f98b64bfffeb0eb80a808911bb33132136c4268..c9ce46a0d0c8487c075d6c95e6a8b6a845e32657 100644 (file)
@@ -80,7 +80,7 @@ public class AltosDroid extends FragmentActivity {
 
        // Tabs
        TabHost     mTabHost;
-       ViewPager   mViewPager;
+       AltosViewPager   mViewPager;
        TabsAdapter mTabsAdapter;
        ArrayList<AltosDroidTab> mTabs = new ArrayList<AltosDroidTab>();
 
@@ -197,6 +197,22 @@ public class AltosDroid extends FragmentActivity {
        }
 
        void update_ui(AltosState state) {
+               if (saved_state != null) {
+                       if (saved_state.state != state.state) {
+                               String currentTab = mTabHost.getCurrentTabTag();
+                               switch (state.state) {
+                               case AltosLib.ao_flight_boost:
+                                       if (currentTab.equals("pad")) mTabHost.setCurrentTabByTag("ascent");
+                                       break;
+                               case AltosLib.ao_flight_drogue:
+                                       if (currentTab.equals("ascent")) mTabHost.setCurrentTabByTag("descent");
+                                       break;
+                               case AltosLib.ao_flight_landed:
+                                       if (currentTab.equals("descent")) mTabHost.setCurrentTabByTag("landed");
+                                       break;
+                               }
+                       }
+               }
                saved_state = state;
 
                mCallsignView.setText(state.data.callsign);
@@ -256,7 +272,7 @@ public class AltosDroid extends FragmentActivity {
                mTabHost = (TabHost)findViewById(android.R.id.tabhost);
                mTabHost.setup();
 
-               mViewPager = (ViewPager)findViewById(R.id.pager);
+               mViewPager = (AltosViewPager)findViewById(R.id.pager);
                mViewPager.setOffscreenPageLimit(4);
 
                mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager);