From 8975813855e9bb6b9b28bb363fbf44443fc27d78 Mon Sep 17 00:00:00 2001 From: Dan Galpin Date: Sun, 24 May 2015 15:04:31 -0700 Subject: [PATCH] Updated settings to show the status of the typed-in location. --- .../sunshine/app/SettingsActivity.java | 22 +++++++++++++++++++ app/src/main/res/values/strings.xml | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java b/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java index 5487595..162c9a0 100644 --- a/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java +++ b/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java @@ -95,10 +95,28 @@ public class SettingsActivity extends PreferenceActivity if (prefIndex >= 0) { preference.setSummary(listPreference.getEntries()[prefIndex]); } + } else if (key.equals(getString(R.string.pref_location_key))) { + @SunshineSyncAdapter.LocationStatus int status = Utility.getLocationStatus(this); + switch (status) { + case SunshineSyncAdapter.LOCATION_STATUS_OK: + preference.setSummary(stringValue); + break; + case SunshineSyncAdapter.LOCATION_STATUS_UNKNOWN: + preference.setSummary(getString(R.string.pref_location_unknown_description, value.toString())); + break; + case SunshineSyncAdapter.LOCATION_STATUS_INVALID: + preference.setSummary(getString(R.string.pref_location_error_description, value.toString())); + break; + default: + // Note --- if the server is down we still assume the value + // is valid + preference.setSummary(stringValue); + } } else { // For other preferences, set the summary to the value's simple string representation. preference.setSummary(stringValue); } + } // This gets called before the preference is changed @@ -120,6 +138,10 @@ public class SettingsActivity extends PreferenceActivity } else if ( key.equals(getString(R.string.pref_units_key)) ) { // units have changed. update lists of weather entries accordingly getContentResolver().notifyChange(WeatherContract.WeatherEntry.CONTENT_URI, null); + } else if ( key.equals(getString(R.string.pref_location_status_key)) ) { + // our location status has changed. Update the summary accordingly + Preference locationPreference = findPreference(getString(R.string.pref_location_key)); + bindPreferenceSummaryToValue(locationPreference); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 87d92e0..8b3a6bb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -48,6 +48,10 @@ 94043 + + Invalid Location (%1$s)" + Validating Location... (%1$s)" + enable_notifications Weather Notifications