package us.shandian.giga.ui.settings; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.view.LayoutInflater; import android.webkit.WebView; import us.shandian.giga.R; import us.shandian.giga.util.Utility; import us.shandian.giga.util.Settings; public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { private static final String ABOUT = "about"; private static final String DOWNLOAD_DIR = "download_directory"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); onSharedPreferenceChanged(null, DOWNLOAD_DIR); } @Override public void onResume() { super.onResume(); getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); super.onPause(); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { switch (preference.getKey()) { case ABOUT: showAboutDialog(); return true; case DOWNLOAD_DIR: Utility.showDirectoryChooser(getActivity()); return true; default: return super.onPreferenceTreeClick(preferenceScreen, preference); } } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(DOWNLOAD_DIR)) { changeSummary(findPreference(key), getDownloadDir()); } } private String getDownloadDir(){ return Settings.getInstance(getActivity()).getString(Settings.DOWNLOAD_DIRECTORY, Settings.DEFAULT_PATH); } private void changeSummary(Preference pref, String summary){ pref.setSummary(summary); } private void showAboutDialog() { WebView v = new WebView(getActivity()); v.loadUrl("file:///android_asset/licenses.html"); new AlertDialog.Builder(getActivity()) .setView(v) .setNegativeButton(R.string.msg_close, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { // Noting to do } }) .show(); } }