package ca.grocerygo.android.settings; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceManager; import ca.grocerygo.android.CategoryTopFragmentActivity; import ca.grocerygo.android.R; import ca.grocerygo.android.services.location.LocationServiceReceiver; import ca.grocerygo.android.utils.GroceryGoUtils; import com.actionbarsherlock.app.SherlockPreferenceActivity; import com.actionbarsherlock.view.MenuItem; public class SettingsActivity extends SherlockPreferenceActivity { Activity mActivity; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); this.mActivity = this; getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); // Register preference actions registerActions(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Intent parentActivityIntent = new Intent(this, CategoryTopFragmentActivity.class); parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(parentActivityIntent); this.finish(); return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("deprecation") private void registerActions() { PreferenceManager pm = this.getPreferenceManager(); Preference notificationEnabledPreference = pm.findPreference(SettingsManager.SETTINGS_NOTIFICATION_ENABLED); assert (notificationEnabledPreference != null); notificationEnabledPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { CheckBoxPreference cb = (CheckBoxPreference) preference; boolean isChecked = cb.isChecked(); Intent intent = new Intent(mActivity, LocationServiceReceiver.class); if (isChecked) { SettingsManager.setNotificationsEnabled(mActivity, true); intent.setAction(LocationServiceReceiver.LOCATION_SERVICE_RECEIVER_ENABLE); } else { SettingsManager.setNotificationsEnabled(mActivity, false); intent.setAction(LocationServiceReceiver.LOCATION_SERVICE_RECEIVER_DISABLE); } mActivity.sendBroadcast(intent); return true; } }); Preference storeFilterPreference = pm.findPreference(SettingsManager.SETTINGS_STORE_FILTER); storeFilterPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { GroceryGoUtils.restartGroceryLoaders(mActivity); return true; } }); Preference storeLocationPreference = pm.findPreference(SettingsManager.SETTINGS_STORE_LOCATION); storeLocationPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { GroceryGoUtils.restartGroceryLoaders(mActivity); return true; } }); } }