package com.leavjenn.hews.ui; import android.app.FragmentManager; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.WindowManager; import com.leavjenn.hews.misc.ChromeCustomTabsHelper; import com.leavjenn.hews.R; import com.leavjenn.hews.misc.SharedPrefsManager; public class SettingsActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener { private SharedPreferences prefs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set theme prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.registerOnSharedPreferenceChangeListener(this); String theme = SharedPrefsManager.getTheme(prefs); switch (theme) { case SharedPrefsManager.THEME_SEPIA: setTheme(R.style.AppTheme_Sepia); break; case SharedPrefsManager.THEME_DARK: setTheme(R.style.AppTheme_Dark); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getResources().getColor(R.color.grey_900)); } break; case SharedPrefsManager.THEME_AMOLED_BLACK: setTheme(R.style.AppTheme_AMOLEDBlack); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getResources().getColor(android.R.color.black)); } break; } setContentView(R.layout.activity_settings); //Setup Toolbar Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); final ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setTitle("Settings"); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); } if (savedInstanceState == null) { SettingsFragment fragment = new SettingsFragment(); getFragmentManager().beginTransaction().add(R.id.container, fragment).commit(); } } @Override protected void onStop() { super.onStop(); prefs.unregisterOnSharedPreferenceChangeListener(this); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { FragmentManager fm = getFragmentManager(); if (fm.getBackStackEntryCount() > 0) { fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } else { finish(); } } return super.onOptionsItemSelected(item); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals("themekey")) { Intent intent = new Intent(this, SettingsActivity.class); // Finish this activity and start it again startActivity(intent); finish(); // set animation overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } } public static class SettingsFragment extends PreferenceFragment { public SettingsFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_general); if (ChromeCustomTabsHelper.getPackageNameToUse(getActivity()) == null) { disableOpenLinkOptionPreference(); } } private void disableOpenLinkOptionPreference() { CheckBoxPreference openLinkOptionPref = (CheckBoxPreference) findPreference( getString(R.string.pref_key_open_link_option)); openLinkOptionPref.setEnabled(false); openLinkOptionPref.setChecked(false); openLinkOptionPref.setSummary(R.string.summary_open_link_option_unavailable); } } }