package org.fossasia.openevent.activities; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.provider.Settings; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; import android.view.MenuInflater; import android.view.MenuItem; import org.fossasia.openevent.OpenEventApp; import org.fossasia.openevent.R; /** * User: manan * Date: 21-05-2015 */ public class SettingsActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener { public static final String NOTIFICATION_PREF_MODE = "notification"; public static final String LANGUAGE_PREF_MODE = "change_language"; private SwitchPreference internetPreference; private SwitchPreference timezonePreference; private Preference prefNotification; private Preference languagePreference; private SharedPreferences preferences; private AppCompatDelegate mDelegate; @Override protected void onCreate(Bundle savedInstanceState) { getDelegate().installViewFactory(); getDelegate().onCreate(savedInstanceState); super.onCreate(savedInstanceState); preferences = PreferenceManager.getDefaultSharedPreferences(this); addPreferencesFromResource(R.xml.settings); setContentView(R.layout.activity_settings); setToolbar(); PreferenceScreen preferenceScreen = getPreferenceScreen(); internetPreference = (SwitchPreference) preferenceScreen.findPreference(getResources().getString(R.string.download_mode_key)); internetPreference.setOnPreferenceChangeListener(this); timezonePreference = (SwitchPreference) preferenceScreen.findPreference(getResources().getString(R.string.timezone_mode_key)); timezonePreference.setOnPreferenceChangeListener(this); prefNotification = findPreference(NOTIFICATION_PREF_MODE); languagePreference=findPreference(LANGUAGE_PREF_MODE); languagePreference.setSummary(OpenEventApp.sDefSystemLanguage); } @Override public boolean onPreferenceChange(Preference preference, Object o) { if (preference.getKey().equals(getResources().getString(R.string.download_mode_key))) { if (o.equals(false)) { internetPreference.setChecked(false); } else if (o.equals(true)) { internetPreference.setChecked(true); } } else if (preference.getKey().equals(getResources().getString(R.string.timezone_mode_key))) { if (o.equals(false)) { timezonePreference.setChecked(false); } else if (o.equals(true)) { timezonePreference.setChecked(true); } } else if (preference.getKey().equals(getResources().getString(R.string.notification_key))) { prefNotification.setSummary((String) o); } else if (preference.getKey().equals(getResources().getString(R.string.language_key))) { languagePreference.setSummary((String) o); } return false; } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); getDelegate().onPostCreate(savedInstanceState); } @NonNull @Override public MenuInflater getMenuInflater() { return getDelegate().getMenuInflater(); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } @Override public void setContentView(@LayoutRes int layoutResID) { getDelegate().setContentView(layoutResID); } @Override public void onResume() { super.onResume(); prefNotification.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { prefNotification.setSummary((String) newValue); return true; } }); languagePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent((Settings.ACTION_LOCALE_SETTINGS))); return true; } }); prefNotification.setSummary(preferences.getString(getString(R.string.notification_key), "")); languagePreference.setSummary(OpenEventApp.sDefSystemLanguage); } @Override protected void onPostResume() { super.onPostResume(); getDelegate().onPostResume(); } @Override public void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); getDelegate().onStop(); } @Override protected void onDestroy() { super.onDestroy(); getDelegate().onDestroy(); } private void setToolbar() { setContentView(R.layout.activity_settings); setSupportActionBar((Toolbar) findViewById(R.id.setting_toolbar)); getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); } private ActionBar getSupportActionBar() { return getDelegate().getSupportActionBar(); } private void setSupportActionBar(@Nullable Toolbar toolbar) { getDelegate().setSupportActionBar(toolbar); } private AppCompatDelegate getDelegate() { if (mDelegate == null) { mDelegate = AppCompatDelegate.create(this, null); } return mDelegate; } }