package hecosire.com.hecosireapp.smartwatch;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceManager;
import android.util.Log;
import hecosire.com.hecosireapp.MyApplication;
import hecosire.com.hecosireapp.R;
/**
* The sample control preference activity handles the preferences for the sample
* control extension.
*/
public class SamplePreferenceActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
private static final int DIALOG_READ_ME = 1;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preference);
// Handle read me
Preference preference = findPreference(getText(R.string.preference_key_read_me));
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
showDialog(DIALOG_READ_ME);
return true;
}
});
try {
PreferenceManager.setDefaultValues(SamplePreferenceActivity.this, R.xml.preference,
false);
for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
initSummary(getPreferenceScreen().getPreference(i));
}
} catch (Exception ex) {
ex.printStackTrace();
}
((MyApplication)getApplication()).reportScreenView("Smartwatch preferences");
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case DIALOG_READ_ME:
dialog = createReadMeDialog();
break;
default:
Log.w(SampleExtensionService.LOG_TAG, "Not a valid dialog id: " + id);
break;
}
return dialog;
}
/**
* Create the Read me dialog
*
* @return the Dialog
*/
private Dialog createReadMeDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.preference_option_read_me_txt)
.setTitle(R.string.preference_option_read_me)
.setIcon(android.R.drawable.ic_dialog_info)
.setPositiveButton(android.R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
return builder.create();
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
updatePrefSummary(findPreference(key));
}
private void initSummary(Preference p) {
if (p instanceof PreferenceCategory) {
PreferenceCategory pCat = (PreferenceCategory) p;
for (int i = 0; i < pCat.getPreferenceCount(); i++) {
initSummary(pCat.getPreference(i));
}
} else {
p.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
preference.setSummary(newVal.toString());
return true;
}
});
updatePrefSummary(p);
}
}
private void updatePrefSummary(Preference p) {
if (p instanceof ListPreference) {
ListPreference listPref = (ListPreference) p;
p.setSummary(listPref.getEntry());
}
if (p instanceof EditTextPreference) {
EditTextPreference editTextPref = (EditTextPreference) p;
p.setSummary(editTextPref.getText());
}
}
}