X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FAltosDroidTab.java;h=7b5b01b3ba332510a2976953c9bf0e8eab3c7edc;hp=68bbe5935489b5875c94e21ca3273684104dce17;hb=2b2ebd2fee46158abd1ae050cd6d1040ead849a0;hpb=59dfcbe14622c20aaa7d5b131eece9f4c8db6887 diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index 68bbe593..7b5b01b3 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -17,8 +17,54 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_1.AltosState; +import org.altusmetrum.altoslib_5.*; +import android.location.Location; +import android.app.Activity; +import android.graphics.Color; +import android.os.Bundle; +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; -public interface AltosDroidTab { - public void update_ui(AltosState state); +public abstract class AltosDroidTab extends Fragment { + AltosState last_state; + AltosGreatCircle last_from_receiver; + Location last_receiver; + + public abstract void show(AltosState state, AltosGreatCircle from_receiver, Location receiver); + + public abstract String tab_name(); + + public void set_visible(boolean visible) { + FragmentTransaction ft = AltosDroid.fm.beginTransaction(); + if (visible) { + AltosState state = last_state; + AltosGreatCircle from_receiver = last_from_receiver; + Location receiver = last_receiver; + + last_state = null; + last_from_receiver = null; + last_receiver = null; + show(state, from_receiver, receiver); + ft.show(this); + } else + ft.hide(this); + ft.commit(); + } + + public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver, boolean is_current) { + if (is_current) { + if (AltosDroid.D) Log.d(AltosDroid.TAG, String.format("%s: visible, performing update", tab_name())); + + show(state, from_receiver, receiver); + } else { + if (AltosDroid.D) 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; + } + } }