package org.yaxim.androidclient.preferences; import org.yaxim.androidclient.YaximApplication; import org.yaxim.androidclient.dialogs.ChangePasswordDialog; import org.yaxim.androidclient.exceptions.YaximXMPPAdressMalformedException; import org.yaxim.androidclient.util.PreferenceConstants; import org.yaxim.androidclient.util.XMPPHelper; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceManager; import android.text.Editable; import android.text.TextWatcher; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.SherlockPreferenceActivity; import org.yaxim.androidclient.R; public class AccountPrefs extends SherlockPreferenceActivity { private SharedPreferences sharedPreference; private static int prioIntValue = 0; private EditTextPreference prefPrio; private EditTextPreference prefAccountID; public void onCreate(Bundle savedInstanceState) { setTheme(YaximApplication.getConfig(this).getTheme()); super.onCreate(savedInstanceState); addPreferencesFromResource(R.layout.accountprefs); ActionBar actionBar = getSupportActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); sharedPreference = PreferenceManager.getDefaultSharedPreferences(this); this.prefAccountID = (EditTextPreference) findPreference(PreferenceConstants.JID); this.prefAccountID.getEditText().addTextChangedListener( new TextWatcher() { public void afterTextChanged(Editable s) { // Nothing } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // Nothing } public void onTextChanged(CharSequence s, int start, int before, int count) { try { XMPPHelper.verifyJabberID(s.toString()); prefAccountID.getEditText().setError(null); } catch (YaximXMPPAdressMalformedException e) { prefAccountID.getEditText().setError(getString(R.string.Global_JID_malformed)); } } }); this.prefPrio = (EditTextPreference) findPreference(PreferenceConstants.PRIORITY); this.prefPrio .setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { try { int prioIntValue = Integer.parseInt(newValue .toString()); if (prioIntValue <= 127 && prioIntValue >= -128) { sharedPreference.edit().putInt(PreferenceConstants.PRIORITY, prioIntValue); } else { sharedPreference.edit().putInt(PreferenceConstants.PRIORITY, 0); } return true; } catch (NumberFormatException ex) { sharedPreference.edit().putInt(PreferenceConstants.PRIORITY, 0); return true; } } }); this.prefPrio.getEditText().addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { try { prioIntValue = Integer.parseInt(s.toString()); if (prioIntValue <= 127 && prioIntValue >= -128) { prefPrio.getEditText().setError(null); prefPrio.setPositiveButtonText(android.R.string.ok); } else { prefPrio.getEditText().setError(getString(R.string.account_prio_error)); } } catch (NumberFormatException numF) { prioIntValue = 0; prefPrio.getEditText().setError(getString(R.string.account_prio_error)); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // Nothing } public void onTextChanged(CharSequence s, int start, int before, int count) { } }); findPreference(PreferenceConstants.PASSWORD).setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { new ChangePasswordDialog(AccountPrefs.this).show(); return true; } }); } @Override public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Intent intent = new Intent(this, MainPrefs.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } }