X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FAltosDroidTab.java;h=f75035d4f4a257c045bc62de7d0db56c69d5c252;hb=ed682ca39496849b6c0d6bdf81bee6263864895f;hp=b960eb1a2a7d5c5e81f93e75d3640e049bace381;hpb=59dfe661fcb504f390d9726378c676f2b5b005f3;p=fw%2Faltos diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index b960eb1a..f75035d4 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_7.*; import android.location.Location; import android.app.Activity; import android.graphics.Color; @@ -26,50 +26,82 @@ import android.support.v4.app.Fragment; 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 { + TelemetryState last_telem_state; AltosState last_state; AltosGreatCircle last_from_receiver; Location last_receiver; + AltosDroid altos_droid; - public abstract void show(AltosState state, AltosGreatCircle from_receiver, Location receiver); + public abstract void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver); public abstract String tab_name(); + public void set_map_type(int map_type) { + } + + public void set_map_source(int map_source) { + } + + public void units_changed(boolean imperial_units) { + if (!isHidden()) + show(last_telem_state, 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) + AltosDebug.debug("set visible %b %s\n", visible, tab_name()); + if (visible) { ft.show(this); - else + show(last_telem_state, last_state, last_from_receiver, last_receiver); + } else ft.hide(this); - ft.commit(); + ft.commitAllowingStateLoss(); } - public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver, boolean is_current) { - if (is_current) { - Log.d(AltosDroid.TAG, String.format("%s: visible, performing update", tab_name())); + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + altos_droid = (AltosDroid) activity; + altos_droid.registerTab(this); + } - 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; - return; - } + @Override + public void onDetach() { + super.onDetach(); + altos_droid.unregisterTab(this); + altos_droid = null; } - public void onHiddenChanged(boolean hidden) { - if (last_state != null && isVisible()) { - AltosState state = last_state; - AltosGreatCircle from_receiver = last_from_receiver; - Location receiver = last_receiver; + @Override + public void onResume() { + super.onResume(); + AltosDebug.debug("onResume tab %s\n", tab_name()); + set_visible(true); + } - last_state = null; - last_from_receiver = null; - last_receiver = null; - show(state, from_receiver, receiver); - } + public void update_ui(TelemetryState telem_state, AltosState state, + AltosGreatCircle from_receiver, Location receiver, boolean is_current) + { + last_telem_state = telem_state; + last_state = state; + last_from_receiver = from_receiver; + last_receiver = receiver; + if (is_current) + show(telem_state, state, from_receiver, receiver); + else + return; } }