package info.justaway;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.view.MenuItem;
import info.justaway.util.ThemeUtil;
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
ThemeUtil.setTheme(this);
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content,
new SettingsFragment()).commit();
ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
}
return true;
}
public void applyTheme() {
setResult(RESULT_OK);
finish();
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager preferenceManager = getPreferenceManager();
if (preferenceManager == null) {
return;
}
preferenceManager.setSharedPreferencesName("settings");
addPreferencesFromResource(R.xml.pref_general);
ListPreference displayAccountNamePreference = (ListPreference) findPreference("display_account_name");
if (displayAccountNamePreference == null) {
return;
}
displayAccountNamePreference.setSummary(displayAccountNamePreference.getEntry());
displayAccountNamePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ListPreference listPreference = (ListPreference) preference;
int listId = listPreference.findIndexOfValue((String) newValue);
CharSequence[] entries = listPreference.getEntries();
if (entries != null) {
preference.setSummary(entries[listId]);
}
return true;
}
});
ListPreference fontSizePreference = (ListPreference) findPreference("font_size");
if (fontSizePreference == null) {
return;
}
fontSizePreference.setSummary(fontSizePreference.getValue() + " pt");
fontSizePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary(newValue + " pt");
return true;
}
});
ListPreference longTapPreference = (ListPreference) findPreference("long_tap");
if (longTapPreference == null) {
return;
}
longTapPreference.setSummary(longTapPreference.getEntry());
longTapPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ListPreference listPreference = (ListPreference) preference;
int listId = listPreference.findIndexOfValue((String) newValue);
CharSequence[] entries;
entries = listPreference.getEntries();
if (entries != null) {
preference.setSummary(entries[listId]);
}
return true;
}
});
ListPreference themePreference = (ListPreference) findPreference("themeName");
if (themePreference == null) {
return;
}
themePreference.setSummary(themePreference.getEntry());
themePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ListPreference listPreference = (ListPreference) preference;
int listId = listPreference.findIndexOfValue((String) newValue);
CharSequence[] entries;
entries = listPreference.getEntries();
if (entries != null) {
preference.setSummary(entries[listId]);
}
FragmentManager fragmentManager = getFragmentManager();
if (fragmentManager != null) {
new ThemeSwitchDialogFragment().show(fragmentManager, "dialog");
}
return true;
}
});
}
}
public static final class ThemeSwitchDialogFragment extends DialogFragment {
private SettingsActivity mActivity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = (SettingsActivity) activity;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setMessage(R.string.confirm_theme_apply_finish);
builder.setPositiveButton(getString(R.string.button_yes),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mActivity.applyTheme();
dismiss();
}
}
);
builder.setNegativeButton(getString(R.string.button_no),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
}
);
return builder.create();
}
}
}