diff --git a/src/org/linphone/AccountPreferencesFragment.java b/src/org/linphone/AccountPreferencesFragment.java index ba01adbca..8d0707039 100644 --- a/src/org/linphone/AccountPreferencesFragment.java +++ b/src/org/linphone/AccountPreferencesFragment.java @@ -33,6 +33,8 @@ import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.text.InputType; +import android.text.method.PasswordTransformationMethod; +import android.view.View; /** * @author Sylvain Berfini @@ -196,7 +198,27 @@ public class AccountPreferencesFragment extends PreferencesListFragment { return true; } }; - + private class CoolPasswordMethod extends PasswordTransformationMethod{ + @Override + public CharSequence getTransformation(CharSequence source, View view) { + return new PasswordCharSequence(source); + } + private class PasswordCharSequence implements CharSequence { + private CharSequence mSource; + public PasswordCharSequence(CharSequence source) { + mSource = source; + } + public char charAt(int index) { + return index==mSource.length()-1 ? mSource.charAt(index) : '*'; + } + public int length() { + return mSource.length(); + } + public CharSequence subSequence(int start, int end) { + return mSource.subSequence(start, end); // Return default + } + } + } private void manageAccountPreferencesFields(PreferenceScreen parent) { boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n; @@ -216,6 +238,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment { EditTextPreference password = (EditTextPreference) account.getPreference(2); password.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); password.setText(mPrefs.getAccountPassword(n)); + password.getEditText().setTransformationMethod(new CoolPasswordMethod()); password.setOnPreferenceChangeListener(passwordChangedListener); EditTextPreference domain = (EditTextPreference) account.getPreference(3);