X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fuk%2Fme%2Fnjae%2Fsunshine%2FSettingsActivity.java;h=90780586aab35b4c65a79f0dedcfd510ec5c138d;hb=HEAD;hp=59075986424b48d9174283bd3a6d5ae29745729e;hpb=7d8bc1dd2aa1259534a427113fe29adc2c40855c;p=Sunshine.git diff --git a/app/src/main/java/uk/me/njae/sunshine/SettingsActivity.java b/app/src/main/java/uk/me/njae/sunshine/SettingsActivity.java index 5907598..9078058 100644 --- a/app/src/main/java/uk/me/njae/sunshine/SettingsActivity.java +++ b/app/src/main/java/uk/me/njae/sunshine/SettingsActivity.java @@ -6,6 +6,8 @@ import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; +import uk.me.njae.sunshine.data.WeatherContract; + /** * A {@link PreferenceActivity} that presents a set of application settings. *

@@ -17,6 +19,10 @@ import android.preference.PreferenceManager; public class SettingsActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener { + // since we use the preference change initially to populate the summary + // field, we'll ignore that change at start of the activity + boolean mBindingPreference; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -26,6 +32,8 @@ public class SettingsActivity extends PreferenceActivity // For all preferences, attach an OnPreferenceChangeListener so the UI summary can be // updated when the preference changes. bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key))); + bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_units_key))); + } /** @@ -34,6 +42,8 @@ public class SettingsActivity extends PreferenceActivity * is changed.) */ private void bindPreferenceSummaryToValue(Preference preference) { + mBindingPreference = true; + // Set the listener to watch for value changes. preference.setOnPreferenceChangeListener(this); @@ -43,11 +53,25 @@ public class SettingsActivity extends PreferenceActivity PreferenceManager .getDefaultSharedPreferences(preference.getContext()) .getString(preference.getKey(), "")); + + mBindingPreference = false; } @Override public boolean onPreferenceChange(Preference preference, Object value) { - String stringValue = value.toString(); + String stringValue = value.toString().trim(); + + // are we starting the preference activity? + if ( !mBindingPreference ) { + if (preference.getKey().equals(getString(R.string.pref_location_key))) { + FetchWeatherTask weatherTask = new FetchWeatherTask(this); + String location = value.toString(); + weatherTask.execute(location); + } else { + // notify code that weather may be impacted + getContentResolver().notifyChange(WeatherContract.WeatherEntry.CONTENT_URI, null); + } + } if (preference instanceof ListPreference) { // For list preferences, look up the correct display value in