From: Keith Packard Date: Sat, 8 Feb 2020 02:44:14 +0000 (-0800) Subject: altosdroid: Add text size selection X-Git-Tag: android-23~1 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=d84a777f07c9a876acdcda44ebc9186ef226d896 altosdroid: Add text size selection Add a setup menu item to change the size of the text everywhere. This involved re-doing the layout for most of the tabs. Signed-off-by: Keith Packard --- diff --git a/altosdroid/app/src/main/AndroidManifest.xml.in b/altosdroid/app/src/main/AndroidManifest.xml.in index 69b5463b..d237af4d 100644 --- a/altosdroid/app/src/main/AndroidManifest.xml.in +++ b/altosdroid/app/src/main/AndroidManifest.xml.in @@ -46,7 +46,7 @@ + android:theme="@style/Medium"> 0 && - grantResults[0] == PackageManager.PERMISSION_GRANTED) { - have_location_permission = true; - enable_location_updates(); - if (map_online != null) - map_online.position_permission(); + if (requestCode == MY_PERMISSION_REQUEST) { + for (int i = 0; i < grantResults.length; i++) { + if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { + if (permissions[i].equals(Manifest.permission.ACCESS_FINE_LOCATION)) { + have_location_permission = true; + enable_location_updates(); + if (map_online != null) + map_online.position_permission(); + } + if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + have_storage_permission = true; + } + } } - break; } } @@ -841,19 +854,30 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, super.onResume(); AltosDebug.debug("+ ON RESUME +"); - if (!asked_location_permission) { - asked_location_permission = true; + if (!asked_permission) { + asked_permission = true; if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { have_location_permission = true; } - else + if (ActivityCompat.checkSelfPermission(this, + Manifest.permission.WRITE_EXTERNAL_STORAGE) + == PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, - MY_PERMISSION_REQUEST_FINE_POSITION); + have_storage_permission = true; + } + int count = (have_location_permission ? 0 : 1) + (have_storage_permission ? 0 : 1); + if (count > 0) + { + String[] permissions = new String[count]; + int i = 0; + if (!have_location_permission) + permissions[i++] = Manifest.permission.ACCESS_FINE_LOCATION; + if (!have_location_permission) + permissions[i++] = Manifest.permission.WRITE_EXTERNAL_STORAGE; + ActivityCompat.requestPermissions(this, permissions, MY_PERMISSION_REQUEST); } } if (have_location_permission) @@ -889,7 +913,7 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, } protected void onActivityResult(int requestCode, int resultCode, Intent data) { - AltosDebug.debug("onActivityResult " + resultCode); + AltosDebug.debug("onActivityResult request %d result %d", requestCode, resultCode); switch (requestCode) { case REQUEST_CONNECT_DEVICE: // When DeviceListActivity returns with a device to connect to @@ -925,6 +949,8 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, private void note_setup_changes(Intent data) { int changes = data.getIntExtra(SetupActivity.EXTRA_SETUP_CHANGES, 0); + AltosDebug.debug("note_setup_changes changes %d\n", changes); + if ((changes & SETUP_BAUD) != 0) { try { mService.send(Message.obtain(null, TelemetryService.MSG_SETBAUD, @@ -942,6 +968,11 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, /* nothing to do here */ } set_switch_time(); + if ((changes & SETUP_FONT_SIZE) != 0) { + AltosDebug.debug(" ==== Recreate to switch font sizes ==== "); + finish(); + startActivity(getIntent()); + } } private void connectUsb(UsbDevice device) { diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroidPreferences.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroidPreferences.java index 6ec9e4d1..f2395568 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroidPreferences.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroidPreferences.java @@ -28,6 +28,15 @@ public class AltosDroidPreferences extends AltosPreferences { final static String activeDeviceAddressPreference = "ACTIVE-DEVICE-ADDRESS"; final static String activeDeviceNamePreference = "ACTIVE-DEVICE-NAME"; + public static final int font_size_small = 0; + public static final int font_size_medium = 1; + public static final int font_size_large = 2; + public static final int font_size_extra = 3; + + final static String fontSizePreference = "FONT-SIZE"; + + static int font_size = font_size_medium; + static DeviceAddress active_device_address; /* Map source preference name */ @@ -44,6 +53,8 @@ public class AltosDroidPreferences extends AltosPreferences { AltosPreferences.init(new AltosDroidPreferencesBackend(context)); + font_size = backend.getInt(fontSizePreference, font_size_medium); + String address = backend.getString(activeDeviceAddressPreference, null); String name = backend.getString(activeDeviceNamePreference, null); @@ -107,4 +118,20 @@ public class AltosDroidPreferences extends AltosPreferences { map_source_listeners.remove(l); } } + + public static int font_size() { + synchronized (backend) { + return font_size; + } + } + + public static void set_font_size(int new_font_size) { + synchronized (backend) { + if (font_size != new_font_size) { + font_size = new_font_size; + backend.putInt(fontSizePreference, font_size); + flush_preferences(); + } + } + } } diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosVoice.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosVoice.java index ae3299fa..8631023c 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosVoice.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosVoice.java @@ -123,8 +123,6 @@ public class AltosVoice { if (state == null) return false; - AltosDebug.debug("tell_pad lag %b ltm %d\n", last_apogee_good, last_tell_mode); - if (state.apogee_voltage != AltosLib.MISSING) last_apogee_good = tell_gonogo("apogee", state.apogee_voltage >= AltosLib.ao_igniter_good, diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/SetupActivity.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/SetupActivity.java index 55b34856..17757ca0 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/SetupActivity.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/SetupActivity.java @@ -31,6 +31,7 @@ import org.altusmetrum.altoslib_13.*; public class SetupActivity extends Activity { private Spinner select_rate; private Spinner set_units; + private Spinner font_size; private Spinner map_type; private Spinner map_source; private Button manage_frequencies; @@ -72,6 +73,13 @@ public class SetupActivity extends Activity { "2400", }; + static final String[] sizes = { + "Small", + "Medium", + "Large", + "Extra" + }; + static final String[] map_types = { "Hybrid", "Satellite", @@ -95,30 +103,39 @@ public class SetupActivity extends Activity { private int set_map_source; private int set_map_type; private boolean set_imperial_units; - - private int changes = 0; - - private void add_change(int change) { - changes |= change; - } + private int set_font_size; private void done() { + int changes = 0; Intent intent = new Intent(); - if ((changes & AltosDroid.SETUP_BAUD) != 0) + + if (set_telemetry_rate != AltosPreferences.telemetry_rate(1)) { + changes |= AltosDroid.SETUP_BAUD; AltosPreferences.set_telemetry_rate(1, set_telemetry_rate); - if ((changes & AltosDroid.SETUP_UNITS) != 0) + } + if (set_imperial_units != AltosPreferences.imperial_units()) { + changes |= AltosDroid.SETUP_UNITS; AltosPreferences.set_imperial_units(set_imperial_units); - if ((changes & AltosDroid.SETUP_MAP_SOURCE) != 0) + } + if (set_map_source != AltosDroidPreferences.map_source()) { + changes |= AltosDroid.SETUP_MAP_SOURCE; AltosDroidPreferences.set_map_source(set_map_source); - if ((changes & AltosDroid.SETUP_MAP_TYPE) != 0) + } + if (set_map_type != AltosPreferences.map_type()) { + changes |= AltosDroid.SETUP_MAP_TYPE; AltosPreferences.set_map_type(set_map_type); + } + if (set_font_size != AltosDroidPreferences.font_size()) { + changes |= AltosDroid.SETUP_FONT_SIZE; + AltosDroidPreferences.set_font_size(set_font_size); + } intent.putExtra(EXTRA_SETUP_CHANGES, changes); setResult(Activity.RESULT_OK, intent); finish(); } private void add_strings(Spinner spinner, String[] strings, int def) { - ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item); + ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item); for (int i = 0; i < strings.length; i++) adapter.add(strings[i]); @@ -139,12 +156,7 @@ public class SetupActivity extends Activity { } private void setBaud(int baud) { - try { - service.send(Message.obtain(null, TelemetryService.MSG_SETBAUD, baud)); - set_telemetry_rate = baud; - add_change(AltosDroid.SETUP_BAUD); - } catch (RemoteException e) { - } + set_telemetry_rate = baud; } private int string_to_rate(String baud) { @@ -197,7 +209,10 @@ public class SetupActivity extends Activity { set_imperial_units = true; break; } - add_change(AltosDroid.SETUP_UNITS); + } + + private void set_font_size(int pos) { + set_font_size = pos; } private int default_map_type_pos() { @@ -211,7 +226,6 @@ public class SetupActivity extends Activity { private void select_map_type(int pos) { set_map_type = map_type_values[pos]; - add_change(AltosDroid.SETUP_MAP_TYPE); } private int default_map_source_pos() { @@ -234,7 +248,6 @@ public class SetupActivity extends Activity { set_map_source = AltosDroidPreferences.MAP_SOURCE_OFFLINE; break; } - add_change(AltosDroid.SETUP_MAP_SOURCE); } private void manage_frequencies(){ @@ -249,6 +262,7 @@ public class SetupActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { + setTheme(AltosDroid.themes[AltosDroidPreferences.font_size()]); super.onCreate(savedInstanceState); AltosDebug.init(this); @@ -265,6 +279,7 @@ public class SetupActivity extends Activity { add_strings(select_rate, rates, default_rate_pos()); select_rate.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int pos, long id) { + AltosDebug.debug("rate selected pos %d id %d", pos, id); select_rate(pos); } public void onNothingSelected(AdapterView parent) { @@ -281,6 +296,16 @@ public class SetupActivity extends Activity { } }); + font_size = (Spinner) findViewById(R.id.font_size); + add_strings(font_size, sizes, AltosDroidPreferences.font_size()); + font_size.setOnItemSelectedListener(new OnItemSelectedListener() { + public void onItemSelected(AdapterView parent, View view, int pos, long id) { + set_font_size(pos); + } + public void onNothingSelected(AdapterView parent) { + } + }); + map_type = (Spinner) findViewById(R.id.map_type); add_strings(map_type, map_types, default_map_type_pos()); map_type.setOnItemSelectedListener(new OnItemSelectedListener() { diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabFlight.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabFlight.java index b2e7e197..f9b7b7e5 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabFlight.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabFlight.java @@ -83,16 +83,16 @@ public class TabFlight extends AltosDroidTab { public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { if (state != null) { - set_value(speed_view, AltosConvert.speed, 6, state.speed()); - set_value(height_view, AltosConvert.height, 6, state.height()); - set_value(max_speed_view, AltosConvert.speed, 6, state.max_speed()); - set_value(max_height_view, AltosConvert.height, 6, state.max_height()); + set_value(speed_view, AltosConvert.speed, 1, state.speed()); + set_value(height_view, AltosConvert.height, 1, state.height()); + set_value(max_speed_view, AltosConvert.speed, 1, state.max_speed()); + set_value(max_height_view, AltosConvert.height, 1, state.max_height()); if (from_receiver != null) { - elevation_view.setText(AltosDroid.number("%3.0f°", from_receiver.elevation)); - set_value(range_view, AltosConvert.distance, 6, from_receiver.range); - bearing_view.setText(AltosDroid.number("%3.0f°", from_receiver.bearing)); + elevation_view.setText(AltosDroid.number("%1.0f°", from_receiver.elevation)); + set_value(range_view, AltosConvert.distance, 1, from_receiver.range); + bearing_view.setText(AltosDroid.number("%1.0f°", from_receiver.bearing)); compass_view.setText(from_receiver.bearing_words(AltosGreatCircle.BEARING_LONG)); - set_value(distance_view, AltosConvert.distance, 6, from_receiver.distance); + set_value(distance_view, AltosConvert.distance, 1, from_receiver.distance); } else { elevation_view.setText(""); range_view.setText(""); @@ -108,7 +108,7 @@ public class TabFlight extends AltosDroidTab { if (state.apogee_voltage == AltosLib.MISSING) { apogee_view.setVisibility(View.GONE); } else { - apogee_voltage_view.setText(AltosDroid.number("%4.2f V", state.apogee_voltage)); + apogee_voltage_view.setText(AltosDroid.number("%1.2f V", state.apogee_voltage)); apogee_lights.set(state.apogee_voltage > 3.2, state.apogee_voltage == AltosLib.MISSING); apogee_view.setVisibility(View.VISIBLE); } @@ -116,7 +116,7 @@ public class TabFlight extends AltosDroidTab { if (state.main_voltage == AltosLib.MISSING) { main_view.setVisibility(View.GONE); } else { - main_voltage_view.setText(AltosDroid.number("%4.2f V", state.main_voltage)); + main_voltage_view.setText(AltosDroid.number("%1.2f V", state.main_voltage)); main_lights.set(state.main_voltage > 3.2, state.main_voltage == AltosLib.MISSING); main_view.setVisibility(View.VISIBLE); } diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabPad.java index 6e343f9f..58793bc2 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabPad.java @@ -159,19 +159,19 @@ public class TabPad extends AltosDroidTab { public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { if (state != null) { - battery_voltage_view.setText(AltosDroid.number(" %4.2f V", state.battery_voltage)); + battery_voltage_view.setText(AltosDroid.number("%1.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_row.setVisibility(View.GONE); } else { - apogee_voltage_view.setText(AltosDroid.number(" %4.2f V", state.apogee_voltage)); + apogee_voltage_view.setText(AltosDroid.number("%1.2f V", state.apogee_voltage)); 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_row.setVisibility(View.GONE); } else { - main_voltage_view.setText(AltosDroid.number(" %4.2f V", state.main_voltage)); + main_voltage_view.setText(AltosDroid.number("%1.2f V", state.main_voltage)); main_row.setVisibility(View.VISIBLE); } main_lights.set(state.main_voltage >= AltosLib.ao_igniter_good, state.main_voltage == AltosLib.MISSING); @@ -183,7 +183,7 @@ public class TabPad extends AltosDroidTab { if (voltage == AltosLib.MISSING) { ignite_row[i].setVisibility(View.GONE); } else { - ignite_voltage_view[i].setText(AltosDroid.number(" %4.2f V", voltage)); + ignite_voltage_view[i].setText(AltosDroid.number("%1.2f V", voltage)); ignite_row[i].setVisibility(View.VISIBLE); } ignite_lights[i].set(voltage >= AltosLib.ao_igniter_good, voltage == AltosLib.MISSING); @@ -219,7 +219,7 @@ public class TabPad extends AltosDroidTab { if (telem_state.receiver_battery == AltosLib.MISSING) { receiver_row.setVisibility(View.GONE); } else { - receiver_voltage_view.setText(AltosDroid.number(" %4.2f V", telem_state.receiver_battery)); + receiver_voltage_view.setText(AltosDroid.number("%1.2f V", telem_state.receiver_battery)); receiver_row.setVisibility(View.VISIBLE); } receiver_voltage_lights.set(telem_state.receiver_battery >= AltosLib.ao_battery_good, telem_state.receiver_battery == AltosLib.MISSING); diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabRecover.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabRecover.java index 11c82f04..be52a991 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabRecover.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TabRecover.java @@ -61,8 +61,8 @@ public class TabRecover extends AltosDroidTab { 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); + mBearingView.setText(String.format("%1.0f°", from_receiver.bearing)); + set_value(mDistanceView, AltosConvert.distance, 1, from_receiver.distance); String direction = AltosDroid.direction(from_receiver, receiver); if (direction == null) mDirectionView.setText(""); @@ -80,9 +80,9 @@ public class TabRecover extends AltosDroidTab { } if (state != null) { - set_value(mMaxHeightView, AltosConvert.height, 6, state.max_height()); - set_value(mMaxAccelView, AltosConvert.accel, 6, state.max_acceleration()); - set_value(mMaxSpeedView, AltosConvert.speed, 6, state.max_speed()); + set_value(mMaxHeightView, AltosConvert.height, 1, state.max_height()); + set_value(mMaxAccelView, AltosConvert.accel, 1, state.max_acceleration()); + set_value(mMaxSpeedView, AltosConvert.speed, 1, state.max_speed()); } } } diff --git a/altosdroid/app/src/main/res/layout/setup.xml b/altosdroid/app/src/main/res/layout/setup.xml index eeaf60ab..38ba8394 100644 --- a/altosdroid/app/src/main/res/layout/setup.xml +++ b/altosdroid/app/src/main/res/layout/setup.xml @@ -68,6 +68,25 @@ android:spinnerMode="dropdown" /> + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="wrap_content" + android:layout_height="wrap_content"> - - - - - + + + + + + + - - - - - + + + + + + + - - + + + + + + + - - - - - + + + + + + + - - + + + + + + + - - + + + + + + + - - + + + + + + + - - - - - + + + + + - - + + + + + + + + - - + + + + + + + - - + + + + + + + + + + + + + + + + + + - - + > + + + + + + + + + + diff --git a/altosdroid/app/src/main/res/layout/tab_layout.xml b/altosdroid/app/src/main/res/layout/tab_layout.xml index 2c21c648..96f50c15 100644 --- a/altosdroid/app/src/main/res/layout/tab_layout.xml +++ b/altosdroid/app/src/main/res/layout/tab_layout.xml @@ -7,7 +7,6 @@ android:id="@+id/tabLabel" android:layout_height="wrap_content" android:layout_width="match_parent" - android:textSize="13dp" android:textColor="#ffffff" android:gravity="center_horizontal" android:background="#808080" diff --git a/altosdroid/app/src/main/res/layout/tab_map.xml b/altosdroid/app/src/main/res/layout/tab_map.xml index 25ae3a8b..17c6d3cf 100644 --- a/altosdroid/app/src/main/res/layout/tab_map.xml +++ b/altosdroid/app/src/main/res/layout/tab_map.xml @@ -43,160 +43,109 @@ android:layout_weight="1"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + - - + android:layout_height="wrap_content"> + + + + + + + + diff --git a/altosdroid/app/src/main/res/layout/tab_pad.xml b/altosdroid/app/src/main/res/layout/tab_pad.xml index 990a6be3..981f45a8 100644 --- a/altosdroid/app/src/main/res/layout/tab_pad.xml +++ b/altosdroid/app/src/main/res/layout/tab_pad.xml @@ -38,17 +38,21 @@ @@ -112,15 +120,19 @@ @@ -148,15 +160,19 @@ @@ -184,15 +200,19 @@ @@ -222,15 +242,19 @@ @@ -259,15 +283,19 @@ @@ -296,15 +324,19 @@ @@ -333,15 +365,19 @@ @@ -370,15 +406,19 @@ @@ -407,15 +447,19 @@ diff --git a/altosdroid/app/src/main/res/layout/tab_recover.xml b/altosdroid/app/src/main/res/layout/tab_recover.xml index 7d1e750d..090f3dda 100644 --- a/altosdroid/app/src/main/res/layout/tab_recover.xml +++ b/altosdroid/app/src/main/res/layout/tab_recover.xml @@ -22,231 +22,223 @@ android:layout_height="wrap_content" android:orientation="vertical" > - - - - - - - - - - + android:layout_height="wrap_content"> - + > - - - - + - + + - - - - + > - + - - - - + + - + > - - - - + - + + - - - - + > + + - + + - - - - + > - + - - - - + - + - - - - + + + + + + + + + + + + + + + + + - + + + + + + + - - - + + + + + + + + + + diff --git a/altosdroid/app/src/main/res/values/CustomTheme.xml b/altosdroid/app/src/main/res/values/CustomTheme.xml index 43580966..6a22a37a 100644 --- a/altosdroid/app/src/main/res/values/CustomTheme.xml +++ b/altosdroid/app/src/main/res/values/CustomTheme.xml @@ -1,6 +1,24 @@ - + + + + diff --git a/altosdroid/app/src/main/res/values/strings.xml b/altosdroid/app/src/main/res/values/strings.xml index 55dc845b..14412209 100644 --- a/altosdroid/app/src/main/res/values/strings.xml +++ b/altosdroid/app/src/main/res/values/strings.xml @@ -38,7 +38,7 @@ Select Tracker Delete Track Map Type - Toggle Online/Offline maps + Map Source @@ -59,7 +59,7 @@ - Callsign + Call Serial Flight State @@ -92,6 +92,8 @@ GPS Ready Latitude Longitude + Tar + Me Tar Lat Tar Lon My Lat @@ -134,6 +136,7 @@ + Text Size Manage Frequencies OK