package org.primftpd.prefs; import android.content.Context; import android.preference.EditTextPreference; import android.preference.Preference; import android.util.AttributeSet; import android.widget.Toast; import org.primftpd.R; import org.slf4j.LoggerFactory; public class PortEditTextPreference extends EditTextPreference implements Preference.OnPreferenceChangeListener { public PortEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setOnPreferenceChangeListener(this); } public PortEditTextPreference(Context context, AttributeSet attrs) { super(context, attrs); setOnPreferenceChangeListener(this); } public PortEditTextPreference(Context context) { super(context); setOnPreferenceChangeListener(this); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { int port = Integer.parseInt((String)newValue); boolean valid = LoadPrefsUtil.validatePort(port); if (!valid) { Toast.makeText( getContext(), R.string.portInvalid_v2, Toast.LENGTH_LONG).show(); } else { // check that both ports have different values String thisKey = preference.getKey(); String otherKey = LoadPrefsUtil.PREF_KEY_PORT.equals(thisKey) ? LoadPrefsUtil.PREF_KEY_SECURE_PORT : LoadPrefsUtil.PREF_KEY_PORT; int otherDefaultVal = LoadPrefsUtil.PREF_KEY_PORT.equals(otherKey) ? LoadPrefsUtil.PORT_DEFAULT_VAL : LoadPrefsUtil.SECURE_PORT_DEFAULT_VAL; String otherDefaultValStr = LoadPrefsUtil.PORT_DEFAULT_VAL == otherDefaultVal ? LoadPrefsUtil.PORT_DEFAULT_VAL_STR : LoadPrefsUtil.SECURE_PORT_DEFAULT_VAL_STR; int otherVal = LoadPrefsUtil.loadPort( LoggerFactory.getLogger(getClass()), preference.getSharedPreferences(), otherKey, otherDefaultVal, otherDefaultValStr); if (port == otherVal) { valid = false; Toast.makeText( getContext(), R.string.portsEqual_v2, Toast.LENGTH_LONG).show(); } } return valid; } }