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=d037e72bf8d369a4284e237456af46ec00005aa6;hp=4fe29fbe8a73b7b87f9870d868385a4c97309c78;hpb=cffe4d29f34f7c0ef8b12d99591b684b7c893779;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 4fe29fb..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); @@ -36,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); @@ -45,12 +53,26 @@ 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().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 // the preference's 'entries' list (since they have separate labels/values).