From 18fe64cf2648568dd0bde5acd7b627f1ddb6917e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 22 Jun 2015 18:26:34 -0700 Subject: altosdroid: Display online/offline maps in same tab Make the map portion switchable between online and offline maps, leaving the rest of the tab alone. Signed-off-by: Keith Packard --- altosdroid/res/layout/tab_map.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'altosdroid/res/layout/tab_map.xml') diff --git a/altosdroid/res/layout/tab_map.xml b/altosdroid/res/layout/tab_map.xml index f611ae48..b4c97f91 100644 --- a/altosdroid/res/layout/tab_map.xml +++ b/altosdroid/res/layout/tab_map.xml @@ -20,13 +20,12 @@ android:layout_height="match_parent" android:orientation="vertical" > - - + android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:layout_weight="1"> - \ No newline at end of file + -- cgit v1.2.3 From a959c1926048d1b96a06aa291131afd7c8e771c7 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 22 Jun 2015 18:41:01 -0700 Subject: altosdroid: Get rid of on-line only maps tab The offline tab did both, so delete the online one and replace it with the offline one. Signed-off-by: Keith Packard --- altosdroid/res/layout/tab_map.xml | 340 +++++++++++---------- altosdroid/res/layout/tab_map_offline.xml | 199 ------------ .../src/org/altusmetrum/AltosDroid/AltosDroid.java | 1 - .../src/org/altusmetrum/AltosDroid/TabMap.java | 251 +++++---------- .../org/altusmetrum/AltosDroid/TabMapOffline.java | 172 ----------- 5 files changed, 255 insertions(+), 708 deletions(-) delete mode 100644 altosdroid/res/layout/tab_map_offline.xml delete mode 100644 altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java (limited to 'altosdroid/res/layout/tab_map.xml') diff --git a/altosdroid/res/layout/tab_map.xml b/altosdroid/res/layout/tab_map.xml index b4c97f91..2388a20b 100644 --- a/altosdroid/res/layout/tab_map.xml +++ b/altosdroid/res/layout/tab_map.xml @@ -20,168 +20,180 @@ android:layout_height="match_parent" android:orientation="vertical" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/altosdroid/res/layout/tab_map_offline.xml b/altosdroid/res/layout/tab_map_offline.xml deleted file mode 100644 index 1b0f28a7..00000000 --- a/altosdroid/res/layout/tab_map_offline.xml +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index 426e2e84..f6645105 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -536,7 +536,6 @@ 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); - mTabsAdapter.addTab(mTabHost.newTabSpec("offmap").setIndicator(create_tab_view("OffMap")), TabMapOffline.class, null); // Display the Version mVersion = (TextView) findViewById(R.id.version); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index ee52d637..9c39e105 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -18,40 +18,23 @@ package org.altusmetrum.AltosDroid; import java.util.*; +import java.io.*; import org.altusmetrum.altoslib_7.*; -import com.google.android.gms.maps.CameraUpdateFactory; -import com.google.android.gms.maps.GoogleMap; -import com.google.android.gms.maps.SupportMapFragment; -import com.google.android.gms.maps.model.BitmapDescriptorFactory; -import com.google.android.gms.maps.model.LatLng; -import com.google.android.gms.maps.model.Marker; -import com.google.android.gms.maps.model.MarkerOptions; -import com.google.android.gms.maps.model.Polyline; -import com.google.android.gms.maps.model.PolylineOptions; - import android.app.Activity; -import android.graphics.Color; import android.graphics.*; import android.os.Bundle; import android.support.v4.app.Fragment; -//import android.support.v4.app.FragmentTransaction; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; +import android.support.v4.app.FragmentTransaction; +import android.view.*; +import android.widget.*; import android.location.Location; +import android.content.*; public class TabMap extends AltosDroidTab { - private SupportMapFragment mMapFragment; - private GoogleMap mMap; - private boolean mapLoaded = false; - private HashMap rockets = new HashMap(); - private Marker mPadMarker; - private boolean pad_set; - private Polyline mPolyline; + AltosLatLon here; private TextView mDistanceView; private TextView mBearingView; @@ -59,135 +42,67 @@ public class TabMap extends AltosDroidTab { private TextView mTargetLongitudeView; private TextView mReceiverLatitudeView; private TextView mReceiverLongitudeView; + private AltosMapOffline map_offline; + private AltosMapOnline map_online; + private View view; + private int map_source; - private double mapAccuracy = -1; - - private AltosLatLon my_position = null; - private AltosLatLon target_position = null; - - private Bitmap rocket_bitmap(String text) { - - /* From: http://mapicons.nicolasmollet.com/markers/industry/military/missile-2/ - */ - Bitmap orig_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.rocket); - Bitmap bitmap = orig_bitmap.copy(Bitmap.Config.ARGB_8888, true); - - Canvas canvas = new Canvas(bitmap); - Paint paint = new Paint(); - paint.setTextSize(40); - paint.setColor(0xff000000); - - Rect bounds = new Rect(); - paint.getTextBounds(text, 0, text.length(), bounds); - - int width = bounds.right - bounds.left; - int height = bounds.bottom - bounds.top; - - float x = bitmap.getWidth() / 2.0f - width / 2.0f; - float y = bitmap.getHeight() / 2.0f - height / 2.0f; - - AltosDebug.debug("map label x %f y %f\n", x, y); - - canvas.drawText(text, 0, text.length(), x, y, paint); - return bitmap; - } - - private Marker rocket_marker(int serial, double lat, double lon) { - Bitmap bitmap = rocket_bitmap(String.format("%d", serial)); - - return mMap.addMarker(new MarkerOptions() - .icon(BitmapDescriptorFactory.fromBitmap(bitmap)) - .position(new LatLng(lat, lon)) - .visible(true)); + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + } - mMapFragment = new SupportMapFragment() { - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - setupMap(); - } - }; + private void make_offline_map() { + } + + private void make_online_map() { + map_online = new AltosMapOnline(view.getContext()); + map_online.onCreateView(altos_droid.map_type); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.tab_map, container, false); - mDistanceView = (TextView)v.findViewById(R.id.distance_value); - mBearingView = (TextView)v.findViewById(R.id.bearing_value); - mTargetLatitudeView = (TextView)v.findViewById(R.id.target_lat_value); - mTargetLongitudeView = (TextView)v.findViewById(R.id.target_lon_value); - mReceiverLatitudeView = (TextView)v.findViewById(R.id.receiver_lat_value); - mReceiverLongitudeView = (TextView)v.findViewById(R.id.receiver_lon_value); - return v; + view = inflater.inflate(R.layout.tab_map, container, false); + int map_source = AltosDroidPreferences.map_source(); + + mDistanceView = (TextView)view.findViewById(R.id.distance_value); + mBearingView = (TextView)view.findViewById(R.id.bearing_value); + mTargetLatitudeView = (TextView)view.findViewById(R.id.target_lat_value); + mTargetLongitudeView = (TextView)view.findViewById(R.id.target_lon_value); + mReceiverLatitudeView = (TextView)view.findViewById(R.id.receiver_lat_value); + mReceiverLongitudeView = (TextView)view.findViewById(R.id.receiver_lon_value); + map_offline = (AltosMapOffline)view.findViewById(R.id.map_offline); + map_offline.onCreateView(altos_droid.map_type); + map_online = new AltosMapOnline(view.getContext()); + map_online.onCreateView(altos_droid.map_type); + set_map_source(AltosDroidPreferences.map_source()); + return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - getChildFragmentManager().beginTransaction().add(R.id.map, mMapFragment).commit(); - } - - private void setupMap() { - mMap = mMapFragment.getMap(); - if (mMap != null) { - set_map_type(altos_droid.map_type); - mMap.setMyLocationEnabled(true); - mMap.getUiSettings().setTiltGesturesEnabled(false); - mMap.getUiSettings().setZoomControlsEnabled(false); - - Bitmap label_bitmap = rocket_bitmap("hello"); - - mPadMarker = mMap.addMarker( - new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.pad)) - .position(new LatLng(0,0)) - .visible(false) - ); - - mPolyline = mMap.addPolyline( - new PolylineOptions().add(new LatLng(0,0), new LatLng(0,0)) - .width(20) - .color(Color.BLUE) - .visible(false) - ); - - mapLoaded = true; - } + if (map_online != null) + getChildFragmentManager().beginTransaction().add(R.id.map_online, map_online.mMapFragment).commit(); } - private void center(double lat, double lon, double accuracy) { - if (mapAccuracy < 0 || accuracy < mapAccuracy/10) { - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lon),14)); - mapAccuracy = accuracy; - } + @Override + public void onDestroyView() { + super.onDestroyView(); } public String tab_name() { return "map"; } - private void set_rocket(int serial, AltosState state) { - Marker marker; - - if (state.gps == null || state.gps.lat == AltosLib.MISSING) - return; - - if (rockets.containsKey(serial)) { - marker = rockets.get(serial); - marker.setPosition(new LatLng(state.gps.lat, state.gps.lon)); - } else { - marker = rocket_marker(serial, state.gps.lat, state.gps.lon); - rockets.put(serial, marker); - marker.setVisible(true); - } - } - - private void remove_rocket(int serial) { - Marker marker = rockets.get(serial); - marker.remove(); - rockets.remove(serial); + private void center(double lat, double lon, double accuracy) { + if (map_offline != null) + map_offline.center(lat, lon, accuracy); + if (map_online != null) + map_online.center(lat, lon, accuracy); } public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { @@ -196,67 +111,59 @@ public class TabMap extends AltosDroidTab { set_value(mDistanceView, AltosConvert.distance, 6, from_receiver.distance); } - if (telem_state != null) { - for (int serial : rockets.keySet()) { - if (!telem_state.states.containsKey(serial)) - remove_rocket(serial); - } - - for (int serial : telem_state.states.keySet()) { - set_rocket(serial, telem_state.states.get(serial)); - } - } - if (state != null) { - if (mapLoaded) { - if (!pad_set && state.pad_lat != AltosLib.MISSING) { - pad_set = true; - mPadMarker.setPosition(new LatLng(state.pad_lat, state.pad_lon)); - mPadMarker.setVisible(true); - } - } if (state.gps != null) { - - target_position = new AltosLatLon(state.gps.lat, state.gps.lon); - mTargetLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); mTargetLongitudeView.setText(AltosDroid.pos(state.gps.lon, "E", "W")); - if (state.gps.locked && state.gps.nsat >= 4) - center (state.gps.lat, state.gps.lon, 10); } } if (receiver != null) { double accuracy; + here = new AltosLatLon(receiver.getLatitude(), receiver.getLongitude()); if (receiver.hasAccuracy()) accuracy = receiver.getAccuracy(); else accuracy = 1000; - - my_position = new AltosLatLon(receiver.getLatitude(), receiver.getLongitude()); - mReceiverLatitudeView.setText(AltosDroid.pos(my_position.lat, "N", "S")); - mReceiverLongitudeView.setText(AltosDroid.pos(my_position.lon, "E", "W")); - center (my_position.lat, my_position.lon, accuracy); + mReceiverLatitudeView.setText(AltosDroid.pos(here.lat, "N", "S")); + mReceiverLongitudeView.setText(AltosDroid.pos(here.lon, "E", "W")); + center (here.lat, here.lon, accuracy); } - - if (my_position != null && target_position != null) { - mPolyline.setPoints(Arrays.asList(new LatLng(my_position.lat, my_position.lon), new LatLng(target_position.lat, target_position.lon))); - mPolyline.setVisible(true); + if (map_source == AltosDroidPreferences.MAP_SOURCE_OFFLINE) { + if (map_offline != null) + map_offline.show(telem_state, state, from_receiver, receiver); + } else { + if (map_online != null) + map_online.show(telem_state, state, from_receiver, receiver); } - } + @Override public void set_map_type(int map_type) { - if (mMap != null) { - if (map_type == AltosMap.maptype_hybrid) - mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); - else if (map_type == AltosMap.maptype_satellite) - mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); - else if (map_type == AltosMap.maptype_terrain) - mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); - else - mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); + if (map_offline != null) + map_offline.set_map_type(map_type); + if (map_online != null) + map_online.set_map_type(map_type); + } + + @Override + public void set_map_source(int map_source) { + this.map_source = map_source; + if (map_source == AltosDroidPreferences.MAP_SOURCE_OFFLINE) { + if (map_online != null) + map_online.set_visible(false); + if (map_offline != null) { + map_offline.set_visible(true); + map_offline.show(last_telem_state, last_state, last_from_receiver, last_receiver); + } + } else { + if (map_offline != null) + map_offline.set_visible(false); + if (map_online != null) { + map_online.set_visible(true); + map_online.show(last_telem_state, last_state, last_from_receiver, last_receiver); + } } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java deleted file mode 100644 index 26e04c83..00000000 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright © 2013 Mike Beattie - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package org.altusmetrum.AltosDroid; - -import java.util.*; -import java.io.*; - -import org.altusmetrum.altoslib_7.*; - -import android.app.Activity; -import android.graphics.*; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; -import android.view.*; -import android.widget.*; -import android.location.Location; -import android.content.*; - -public class TabMapOffline extends AltosDroidTab { - - AltosLatLon here; - - private TextView mDistanceView; - private TextView mBearingView; - private TextView mTargetLatitudeView; - private TextView mTargetLongitudeView; - private TextView mReceiverLatitudeView; - private TextView mReceiverLongitudeView; - private AltosMapOffline map_offline; - private AltosMapOnline map_online; - private View view; - private int map_source; - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - private void make_offline_map() { - } - - private void make_online_map() { - map_online = new AltosMapOnline(view.getContext()); - map_online.onCreateView(altos_droid.map_type); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - view = inflater.inflate(R.layout.tab_map_offline, container, false); - int map_source = AltosDroidPreferences.map_source(); - - mDistanceView = (TextView)view.findViewById(R.id.distance_value_offline); - mBearingView = (TextView)view.findViewById(R.id.bearing_value_offline); - mTargetLatitudeView = (TextView)view.findViewById(R.id.target_lat_value_offline); - mTargetLongitudeView = (TextView)view.findViewById(R.id.target_lon_value_offline); - mReceiverLatitudeView = (TextView)view.findViewById(R.id.receiver_lat_value_offline); - mReceiverLongitudeView = (TextView)view.findViewById(R.id.receiver_lon_value_offline); - map_offline = (AltosMapOffline)view.findViewById(R.id.map_view_offline); - map_offline.onCreateView(altos_droid.map_type); - map_online = new AltosMapOnline(view.getContext()); - map_online.onCreateView(altos_droid.map_type); - set_map_source(AltosDroidPreferences.map_source()); - return view; - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - if (map_online != null) - getChildFragmentManager().beginTransaction().add(R.id.map_online, map_online.mMapFragment).commit(); - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - } - - public String tab_name() { return "offmap"; } - - private void center(double lat, double lon, double accuracy) { - if (map_offline != null) - map_offline.center(lat, lon, accuracy); - if (map_online != null) - map_online.center(lat, lon, accuracy); - } - - public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { - if (from_receiver != null) { - mBearingView.setText(String.format("%3.0f°", from_receiver.bearing)); - set_value(mDistanceView, AltosConvert.distance, 6, from_receiver.distance); - } - - if (state != null) { - if (state.gps != null) { - mTargetLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); - mTargetLongitudeView.setText(AltosDroid.pos(state.gps.lon, "E", "W")); - } - } - - if (receiver != null) { - double accuracy; - - here = new AltosLatLon(receiver.getLatitude(), receiver.getLongitude()); - if (receiver.hasAccuracy()) - accuracy = receiver.getAccuracy(); - else - accuracy = 1000; - mReceiverLatitudeView.setText(AltosDroid.pos(here.lat, "N", "S")); - mReceiverLongitudeView.setText(AltosDroid.pos(here.lon, "E", "W")); - center (here.lat, here.lon, accuracy); - } - if (map_source == AltosDroidPreferences.MAP_SOURCE_OFFLINE) { - if (map_offline != null) - map_offline.show(telem_state, state, from_receiver, receiver); - } else { - if (map_online != null) - map_online.show(telem_state, state, from_receiver, receiver); - } - } - - @Override - public void set_map_type(int map_type) { - if (map_offline != null) - map_offline.set_map_type(map_type); - if (map_online != null) - map_online.set_map_type(map_type); - } - - @Override - public void set_map_source(int map_source) { - this.map_source = map_source; - if (map_source == AltosDroidPreferences.MAP_SOURCE_OFFLINE) { - if (map_online != null) - map_online.set_visible(false); - if (map_offline != null) { - map_offline.set_visible(true); - map_offline.show(last_telem_state, last_state, last_from_receiver, last_receiver); - } - } else { - if (map_offline != null) - map_offline.set_visible(false); - if (map_online != null) { - map_online.set_visible(true); - map_online.show(last_telem_state, last_state, last_from_receiver, last_receiver); - } - } - } - - public TabMapOffline() { - } -} -- cgit v1.2.3 From c4af5cb233013b35d6763f5adf8d11b47f847111 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 11 Jul 2015 22:17:16 -0700 Subject: altosdroid: Clean up tab layout Fuss with weights and gravitys, then add some wrapping layouts to get things looking reasonable on small and larger screens. Signed-off-by: Keith Packard --- altosdroid/res/layout/tab_flight.xml | 568 ++++++------- altosdroid/res/layout/tab_map.xml | 12 +- altosdroid/res/layout/tab_pad.xml | 911 +++++++++++---------- altosdroid/res/layout/tab_recover.xml | 446 +++++----- .../org/altusmetrum/AltosDroid/GoNoGoLights.java | 13 - .../src/org/altusmetrum/AltosDroid/TabFlight.java | 27 +- .../src/org/altusmetrum/AltosDroid/TabPad.java | 45 +- 7 files changed, 1021 insertions(+), 1001 deletions(-) (limited to 'altosdroid/res/layout/tab_map.xml') diff --git a/altosdroid/res/layout/tab_flight.xml b/altosdroid/res/layout/tab_flight.xml index 27c903d0..85c171b2 100644 --- a/altosdroid/res/layout/tab_flight.xml +++ b/altosdroid/res/layout/tab_flight.xml @@ -22,379 +22,381 @@ android:orientation="vertical" > + android:orientation="vertical" > - + android:layout_weight="0" + android:baselineAligned="true" + android:orientation="horizontal" > - - - + + + + + + + - - - + + + + + + + + + + android:layout_weight="0" + android:baselineAligned="true" + android:orientation="horizontal" > - - - + + + + + + + - - - + android:layout_weight="1" > + + + + + + + + + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + android:layout_weight="0" + android:baselineAligned="true" + android:orientation="horizontal" + android:paddingTop="5dp" > - + android:layout_weight="1" > + + + + + - + android:layout_weight="1" > + + + + android:paddingTop="5dp" > + android:text="@string/latitude_label" /> - - - - + android:paddingTop="5dp" > + android:text="@string/longitude_label" /> + android:paddingTop="5dp" > - + android:contentDescription="@string/apogee_voltage_label" + android:src="@drawable/grayled" /> - - - - - - - - + android:layout_toRightOf="@id/apogee_redled" + android:contentDescription="@string/apogee_voltage_label" + android:paddingRight="5dp" + android:src="@drawable/grayled" /> + android:layout_toRightOf="@id/apogee_greenled" + android:text="@string/apogee_voltage_label" /> + android:paddingTop="5dp" > - + android:contentDescription="@string/main_voltage_label" + android:src="@drawable/grayled" /> - - - - - - - - + android:layout_toRightOf="@id/main_redled" + android:contentDescription="@string/main_voltage_label" + android:paddingRight="5dp" + android:src="@drawable/grayled" /> + android:layout_toRightOf="@id/main_greenled" + android:text="@string/main_voltage_label" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/altosdroid/res/layout/tab_map.xml b/altosdroid/res/layout/tab_map.xml index 2388a20b..952abd49 100644 --- a/altosdroid/res/layout/tab_map.xml +++ b/altosdroid/res/layout/tab_map.xml @@ -26,6 +26,7 @@ android:baselineAligned="true" android:orientation="horizontal" android:layout_weight="1"> + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + - - - - - + + + + + + + + + + + - - + + + + + + + + + + + - - + + + + + + + + + + + - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + android:layout_gravity="center" + android:layout_weight="1" + android:padding="2dip" + android:layout_width="wrap_content" + android:layout_height="wrap_content" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/altosdroid/res/layout/tab_recover.xml b/altosdroid/res/layout/tab_recover.xml index c2806629..201f45ed 100644 --- a/altosdroid/res/layout/tab_recover.xml +++ b/altosdroid/res/layout/tab_recover.xml @@ -15,217 +15,237 @@ with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java b/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java index 267c90f8..6cecbdf1 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java @@ -52,27 +52,14 @@ public class GoNoGoLights { missing = m; set = true; if (missing) { - hide(); red.setImageDrawable(dGray); green.setImageDrawable(dGray); } else if (state) { red.setImageDrawable(dGray); green.setImageDrawable(dGreen); - show(); } else { red.setImageDrawable(dRed); green.setImageDrawable(dGray); - show(); } } - - public void show() { - red.setVisibility(View.VISIBLE); - green.setVisibility(View.VISIBLE); - } - - public void hide() { - red.setVisibility(View.GONE); - green.setVisibility(View.GONE); - } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java index e0d49a1c..a02ae3a2 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java @@ -22,11 +22,8 @@ import org.altusmetrum.altoslib_7.*; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; +import android.view.*; +import android.widget.*; import android.location.Location; public class TabFlight extends AltosDroidTab { @@ -41,9 +38,11 @@ public class TabFlight extends AltosDroidTab { private TextView distance_view; private TextView latitude_view; private TextView longitude_view; + private View apogee_view; private TextView apogee_voltage_view; private TextView apogee_voltage_label; private GoNoGoLights apogee_lights; + private View main_view; private TextView main_voltage_view; private TextView main_voltage_label; private GoNoGoLights main_lights; @@ -64,12 +63,14 @@ public class TabFlight extends AltosDroidTab { latitude_view = (TextView) v.findViewById(R.id.lat_value); longitude_view = (TextView) v.findViewById(R.id.lon_value); + apogee_view = v.findViewById(R.id.apogee_view); apogee_voltage_view = (TextView) v.findViewById(R.id.apogee_voltage_value); apogee_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.apogee_redled), (ImageView) v.findViewById(R.id.apogee_greenled), getResources()); apogee_voltage_label = (TextView) v.findViewById(R.id.apogee_voltage_label); + main_view = v.findViewById(R.id.main_view); main_voltage_view = (TextView) v.findViewById(R.id.main_voltage_value); main_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.main_redled), (ImageView) v.findViewById(R.id.main_greenled), @@ -106,27 +107,19 @@ public class TabFlight extends AltosDroidTab { } if (state.apogee_voltage == AltosLib.MISSING) { - apogee_voltage_view.setVisibility(View.GONE); - apogee_voltage_label.setVisibility(View.GONE); - apogee_lights.hide(); + apogee_view.setVisibility(View.GONE); } else { apogee_voltage_view.setText(AltosDroid.number("%4.2f V", state.apogee_voltage)); - apogee_voltage_view.setVisibility(View.VISIBLE); - apogee_voltage_label.setVisibility(View.VISIBLE); apogee_lights.set(state.apogee_voltage > 3.2, state.apogee_voltage == AltosLib.MISSING); - apogee_lights.show(); + apogee_view.setVisibility(View.VISIBLE); } if (state.main_voltage == AltosLib.MISSING) { - main_voltage_view.setVisibility(View.GONE); - main_voltage_label.setVisibility(View.GONE); - main_lights.hide(); + main_view.setVisibility(View.GONE); } else { main_voltage_view.setText(AltosDroid.number("%4.2f V", state.main_voltage)); - main_voltage_view.setVisibility(View.VISIBLE); - main_voltage_label.setVisibility(View.VISIBLE); main_lights.set(state.main_voltage > 3.2, state.main_voltage == AltosLib.MISSING); - main_lights.show(); + main_view.setVisibility(View.VISIBLE); } } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java index f6204547..5ff9d12b 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java @@ -22,25 +22,25 @@ import org.altusmetrum.altoslib_7.*; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; +import android.view.*; +import android.widget.*; import android.location.Location; public class TabPad extends AltosDroidTab { private TextView battery_voltage_view; private GoNoGoLights battery_lights; + private TableRow receiver_row; private TextView receiver_voltage_view; private TextView receiver_voltage_label; private GoNoGoLights receiver_voltage_lights; + private TableRow apogee_row; private TextView apogee_voltage_view; private TextView apogee_voltage_label; private GoNoGoLights apogee_lights; + private TableRow main_row; private TextView main_voltage_view; private TextView main_voltage_label; private GoNoGoLights main_lights; @@ -58,6 +58,7 @@ public class TabPad extends AltosDroidTab { private TextView receiver_longitude_view; private TextView receiver_altitude_view; + private TableRow[] ignite_row = new TableRow[4]; private TextView[] ignite_voltage_view = new TextView[4]; private TextView[] ignite_voltage_label = new TextView[4]; private GoNoGoLights[] ignite_lights = new GoNoGoLights[4]; @@ -71,18 +72,21 @@ public class TabPad extends AltosDroidTab { (ImageView) v.findViewById(R.id.battery_greenled), getResources()); + receiver_row = (TableRow) v.findViewById(R.id.receiver_row); receiver_voltage_view = (TextView) v.findViewById(R.id.receiver_voltage_value); receiver_voltage_label = (TextView) v.findViewById(R.id.receiver_voltage_label); receiver_voltage_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.receiver_redled), (ImageView) v.findViewById(R.id.receiver_greenled), getResources()); + apogee_row = (TableRow) v.findViewById(R.id.apogee_row); apogee_voltage_view = (TextView) v.findViewById(R.id.apogee_voltage_value); apogee_voltage_label = (TextView) v.findViewById(R.id.apogee_voltage_label); apogee_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.apogee_redled), (ImageView) v.findViewById(R.id.apogee_greenled), getResources()); + main_row = (TableRow) v.findViewById(R.id.main_row); main_voltage_view = (TextView) v.findViewById(R.id.main_voltage_value); main_voltage_label = (TextView) v.findViewById(R.id.main_voltage_label); main_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.main_redled), @@ -105,35 +109,40 @@ public class TabPad extends AltosDroidTab { getResources()); for (int i = 0; i < 4; i++) { - int view_id, label_id, lights_id; + int row_id, view_id, label_id, lights_id; int red_id, green_id; switch (i) { case 0: default: + row_id = R.id.ignite_a_row; view_id = R.id.ignite_a_voltage_value; label_id = R.id.ignite_a_voltage_label; red_id = R.id.ignite_a_redled; green_id = R.id.ignite_a_greenled; break; case 1: + row_id = R.id.ignite_b_row; view_id = R.id.ignite_b_voltage_value; label_id = R.id.ignite_b_voltage_label; red_id = R.id.ignite_b_redled; green_id = R.id.ignite_b_greenled; break; case 2: + row_id = R.id.ignite_c_row; view_id = R.id.ignite_c_voltage_value; label_id = R.id.ignite_c_voltage_label; red_id = R.id.ignite_c_redled; green_id = R.id.ignite_c_greenled; break; case 3: + row_id = R.id.ignite_d_row; view_id = R.id.ignite_d_voltage_value; label_id = R.id.ignite_d_voltage_label; red_id = R.id.ignite_d_redled; green_id = R.id.ignite_d_greenled; break; } + ignite_row[i] = (TableRow) v.findViewById(row_id); ignite_voltage_view[i] = (TextView) v.findViewById(view_id); ignite_voltage_label[i] = (TextView) v.findViewById(label_id); ignite_lights[i] = new GoNoGoLights((ImageView) v.findViewById(red_id), @@ -154,21 +163,17 @@ public class TabPad extends AltosDroidTab { battery_voltage_view.setText(AltosDroid.number(" %4.2f V", state.battery_voltage)); battery_lights.set(state.battery_voltage >= AltosLib.ao_battery_good, state.battery_voltage == AltosLib.MISSING); if (state.apogee_voltage == AltosLib.MISSING) { - apogee_voltage_view.setVisibility(View.GONE); - apogee_voltage_label.setVisibility(View.GONE); + apogee_row.setVisibility(View.GONE); } else { apogee_voltage_view.setText(AltosDroid.number(" %4.2f V", state.apogee_voltage)); - apogee_voltage_view.setVisibility(View.VISIBLE); - apogee_voltage_label.setVisibility(View.VISIBLE); + apogee_row.setVisibility(View.VISIBLE); } apogee_lights.set(state.apogee_voltage >= AltosLib.ao_igniter_good, state.apogee_voltage == AltosLib.MISSING); if (state.main_voltage == AltosLib.MISSING) { - main_voltage_view.setVisibility(View.GONE); - main_voltage_label.setVisibility(View.GONE); + main_row.setVisibility(View.GONE); } else { main_voltage_view.setText(AltosDroid.number(" %4.2f V", state.main_voltage)); - main_voltage_view.setVisibility(View.VISIBLE); - main_voltage_label.setVisibility(View.VISIBLE); + main_row.setVisibility(View.VISIBLE); } main_lights.set(state.main_voltage >= AltosLib.ao_igniter_good, state.main_voltage == AltosLib.MISSING); @@ -177,12 +182,10 @@ public class TabPad extends AltosDroidTab { for (int i = 0; i < 4; i++) { double voltage = i >= num_igniter ? AltosLib.MISSING : state.ignitor_voltage[i]; if (voltage == AltosLib.MISSING) { - ignite_voltage_view[i].setVisibility(View.GONE); - ignite_voltage_label[i].setVisibility(View.GONE); + ignite_row[i].setVisibility(View.GONE); } else { ignite_voltage_view[i].setText(AltosDroid.number(" %4.2f V", voltage)); - ignite_voltage_view[i].setVisibility(View.VISIBLE); - ignite_voltage_label[i].setVisibility(View.VISIBLE); + ignite_row[i].setVisibility(View.VISIBLE); } ignite_lights[i].set(voltage >= AltosLib.ao_igniter_good, voltage == AltosLib.MISSING); } @@ -215,12 +218,10 @@ public class TabPad extends AltosDroidTab { if (telem_state != null) { if (telem_state.receiver_battery == AltosLib.MISSING) { - receiver_voltage_view.setVisibility(View.GONE); - receiver_voltage_label.setVisibility(View.GONE); + receiver_row.setVisibility(View.GONE); } else { receiver_voltage_view.setText(AltosDroid.number(" %4.2f V", telem_state.receiver_battery)); - receiver_voltage_view.setVisibility(View.VISIBLE); - receiver_voltage_label.setVisibility(View.VISIBLE); + receiver_row.setVisibility(View.VISIBLE); } receiver_voltage_lights.set(telem_state.receiver_battery >= AltosLib.ao_battery_good, telem_state.receiver_battery == AltosLib.MISSING); } -- cgit v1.2.3