package be.digitalia.fosdem.activities;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceManager;
import android.view.MenuItem;
import be.digitalia.fosdem.R;
import be.digitalia.fosdem.utils.TwoStatePreferenceCompat;
public class SettingsActivity extends AppCompatPreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
public static final String KEY_PREF_NOTIFICATIONS_ENABLED = "notifications_enabled";
public static final String KEY_PREF_NOTIFICATIONS_VIBRATE = "notifications_vibrate";
public static final String KEY_PREF_NOTIFICATIONS_LED = "notifications_led";
public static final String KEY_PREF_NOTIFICATIONS_DELAY = "notifications_delay";
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
addPreferencesFromResource(R.xml.settings);
updateNotificationsEnabled();
updateNotificationsDelaySummary();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return false;
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.partial_zoom_in, R.anim.slide_out_right);
}
@Override
protected void onResume() {
super.onResume();
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (KEY_PREF_NOTIFICATIONS_ENABLED.equals(key)) {
updateNotificationsEnabled();
} else if (KEY_PREF_NOTIFICATIONS_DELAY.equals(key)) {
updateNotificationsDelaySummary();
}
}
@SuppressWarnings("deprecation")
private void updateNotificationsEnabled() {
boolean notificationsEnabled = TwoStatePreferenceCompat.isChecked(findPreference(KEY_PREF_NOTIFICATIONS_ENABLED));
findPreference(KEY_PREF_NOTIFICATIONS_VIBRATE).setEnabled(notificationsEnabled);
findPreference(KEY_PREF_NOTIFICATIONS_LED).setEnabled(notificationsEnabled);
findPreference(KEY_PREF_NOTIFICATIONS_DELAY).setEnabled(notificationsEnabled);
}
@SuppressWarnings("deprecation")
private void updateNotificationsDelaySummary() {
ListPreference notificationsDelayPreference = (ListPreference) findPreference(KEY_PREF_NOTIFICATIONS_DELAY);
notificationsDelayPreference.setSummary(notificationsDelayPreference.getEntry());
}
}