diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 7f27609f5..b179b2386 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -74,7 +74,7 @@ Tämä käyttäjätunnus on jo käytössä. Sinun käyttäjätunnus ei ole kelvollinen. Sähkpostisi ei ole kelvollinen. - Salasanasi ei ole kelvollinen (6 merkkiä vähintään). + Salasanasi ei ole kelvollinen. Antamasi salasanat ovat erillaiset. Sinun käyttäjätunnus tulee olemaan %s.\r\n\r\nIt voiden muuttua, jotta vaatiukset täyttyisivät .\r\nHyväksytkö? Anna käyttäjätunnus ja salasana diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index ab4846398..0024676a8 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -75,7 +75,7 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Ce nom d\'utilisateur est déjà pris. Votre nom d\'utilisateur est invalide. Votre email est invalide. - Votre mot de passe est invalide (6 caractères minimum). + Votre mot de passe est invalide. Les mots de passes ne correspondent pas. Votre nom d\'utilisateur sera %s.\r\n\r\nIl peut différer de votre saisie.\r\nContinuer ? Entrez votre nom d\'utilisateur et votre mot de passe diff --git a/res/values/strings.xml b/res/values/strings.xml index 3df9d6ab6..535d91f60 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -85,7 +85,7 @@ This username is already in use. Your username is invalid. Your email is invalid. - Your password is invalid (6 characters min). + Your password is invalid Passwords do not match. Your username will be %s.\r\n\r\nIt may differ from your input to match requirements.\r\nDo you accept? Please enter your login and password diff --git a/src/org/linphone/assistant/AssistantActivity.java b/src/org/linphone/assistant/AssistantActivity.java index 9ac5c8875..e56c8e7ca 100644 --- a/src/org/linphone/assistant/AssistantActivity.java +++ b/src/org/linphone/assistant/AssistantActivity.java @@ -392,10 +392,12 @@ public class AssistantActivity extends Activity implements OnClickListener { builder.setContactParameters(contactInfos); } } - + try { builder.saveNewAccount(); - displayRegistrationInProgressDialog(); + if(!newAccount) { + displayRegistrationInProgressDialog(); + } accountCreated = true; } catch (LinphoneCoreException e) { e.printStackTrace(); @@ -414,12 +416,12 @@ public class AssistantActivity extends Activity implements OnClickListener { } } - public void displayAssistantConfirm(String username) { + public void displayAssistantConfirm(String username, String password) { CreateAccountActivationFragment fragment = new CreateAccountActivationFragment(); - progress.dismiss(); newAccount = true; Bundle extras = new Bundle(); extras.putString("Username", username); + extras.putString("Password", password); fragment.setArguments(extras); changeFragment(fragment); diff --git a/src/org/linphone/assistant/CreateAccountActivationFragment.java b/src/org/linphone/assistant/CreateAccountActivationFragment.java index 99df60779..719cc7897 100644 --- a/src/org/linphone/assistant/CreateAccountActivationFragment.java +++ b/src/org/linphone/assistant/CreateAccountActivationFragment.java @@ -38,7 +38,7 @@ import de.timroes.axmlrpc.XMLRPCServerException; * @author Sylvain Berfini */ public class CreateAccountActivationFragment extends Fragment { - private String username; + private String username, password, domain; private Handler mHandler = new Handler(); @Override @@ -47,7 +47,8 @@ public class CreateAccountActivationFragment extends Fragment { View view = inflater.inflate(R.layout.assistant_account_creation_activation, container, false); username = getArguments().getString("Username"); - + password = getArguments().getString("Password"); + Button checkAccount = (Button) view.findViewById(R.id.assistant_check); checkAccount.setOnClickListener(new OnClickListener() { @Override @@ -78,6 +79,7 @@ public class CreateAccountActivationFragment extends Fragment { Runnable runOk = new Runnable() { public void run() { + AssistantActivity.instance().saveCreatedAccount(username,password,null, getString(R.string.default_domain),null); AssistantActivity.instance().isAccountVerified(username); } }; diff --git a/src/org/linphone/assistant/CreateAccountFragment.java b/src/org/linphone/assistant/CreateAccountFragment.java index c17d15e6d..cebf9cbfd 100644 --- a/src/org/linphone/assistant/CreateAccountFragment.java +++ b/src/org/linphone/assistant/CreateAccountFragment.java @@ -19,6 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import java.net.URL; import java.util.Locale; +import java.util.regex.Matcher; import java.util.regex.Pattern; import org.linphone.LinphoneManager; @@ -35,8 +36,7 @@ import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.text.Editable; -import android.text.InputFilter; -import android.text.Spanned; +import android.text.InputType; import android.text.TextWatcher; import android.util.Patterns; import android.view.LayoutInflater; @@ -64,7 +64,8 @@ public class CreateAccountFragment extends Fragment { private boolean emailOk = false; private boolean confirmPasswordOk = false; private Button createAccount; - private char[] acceptedChars = new char[]{ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + private final Pattern UPPER_CASE_REGEX = Pattern.compile("[A-Z]"); + private char[] acceptedChars = new char[]{ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '_', '-' }; private char[] acceptedCharsForPhoneNumbers = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+' }; @@ -96,25 +97,12 @@ public class CreateAccountFragment extends Fragment { emailEdit = (EditText) view.findViewById(R.id.email); addXMLRPCUsernameHandler(usernameEdit, null); - + inputFilterCharacters = new String(acceptedChars); if (getResources().getBoolean(R.bool.allow_only_phone_numbers_in_wizard)) { inputFilterCharacters = new String(acceptedCharsForPhoneNumbers); + usernameEdit.setInputType(InputType.TYPE_CLASS_NUMBER); } - InputFilter filter = new InputFilter(){ - @Override - public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { - if (end > start) { - for (int index = start; index < end; index++) { - if (!inputFilterCharacters.contains(String.valueOf(source.charAt(index)))) { - return ""; - } - } - } - return null; - } - }; - usernameEdit.setFilters(new InputFilter[] { filter }); addXMLRPCPasswordHandler(passwordEdit, null); addXMLRPCConfirmPasswordHandler(passwordEdit, passwordConfirmEdit, null); @@ -124,19 +112,7 @@ public class CreateAccountFragment extends Fragment { createAccount.setEnabled(false); createAccount.setOnClickListener(new OnClickListener() { public void onClick(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setPositiveButton(R.string.accept, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - createAccount(getUsername(), passwordEdit.getText().toString(), emailEdit.getText().toString(), false); - } - }); - builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - } - }); - builder.setMessage(getString(R.string.setup_confirm_username).replace("%s", getUsername())); - AlertDialog dialog = builder.create(); - dialog.show(); + createAccount(getUsername(), passwordEdit.getText().toString(), emailEdit.getText().toString(), false); } }); @@ -147,6 +123,7 @@ public class CreateAccountFragment extends Fragment { if (isEmailCorrect(account.name)) { String possibleEmail = account.name; emailEdit.setText(possibleEmail); + emailOk = true; break; } } @@ -172,7 +149,7 @@ public class CreateAccountFragment extends Fragment { LinphoneProxyConfig lpc = LinphoneManager.getLc().createProxyConfig(); return lpc.isPhoneNumber(username); } else { - return username.matches("^[a-zA-Z]+[a-zA-Z0-9.\\-_]{2,}$"); + return username.matches("^[a-z]+[a-z0-9.\\-_]{2,}$"); } } @@ -237,7 +214,7 @@ public class CreateAccountFragment extends Fragment { } private boolean isPasswordCorrect(String password) { - return password.length() >= 6; + return password.length() >= 1; } private void createAccount(final String username, final String password, String email, boolean suscribe) { @@ -261,8 +238,7 @@ public class CreateAccountFragment extends Fragment { Runnable runOk = new Runnable() { public void run() { - AssistantActivity.instance().saveCreatedAccount(username, password, null, context.getString(R.string.default_domain), null); - AssistantActivity.instance().displayAssistantConfirm(username); + AssistantActivity.instance().displayAssistantConfirm(username, password); } }; @@ -294,7 +270,11 @@ public class CreateAccountFragment extends Fragment { private void addXMLRPCUsernameHandler(final EditText field, final ImageView icon) { field.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { - + Matcher matcher = UPPER_CASE_REGEX.matcher(s); + while (matcher.find()) { + CharSequence upperCaseRegion = s.subSequence(matcher.start(), matcher.end()); + s.replace(matcher.start(), matcher.end(), upperCaseRegion.toString().toLowerCase()); + } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { @@ -302,17 +282,26 @@ public class CreateAccountFragment extends Fragment { } public void onTextChanged(CharSequence s, int start, int count, int after) { - usernameOk = false; - String username = field.getText().toString().toLowerCase(Locale.getDefault()); - if (isUsernameCorrect(username)) { - if (getResources().getBoolean(R.bool.allow_only_phone_numbers_in_wizard)) { - LinphoneProxyConfig lpc = LinphoneManager.getLc().createProxyConfig(); - username = lpc.normalizePhoneNumber(username); + field.setOnFocusChangeListener(new View.OnFocusChangeListener() { + @Override + public void onFocusChange(View v, boolean hasFocus) { + if(!hasFocus){ + usernameOk = false; + String username = field.getText().toString(); + if (isUsernameCorrect(username)) { + if (getResources().getBoolean(R.bool.allow_only_phone_numbers_in_wizard)) { + LinphoneProxyConfig lpc = LinphoneManager.getLc().createProxyConfig(); + username = lpc.normalizePhoneNumber(username); + } + isUsernameRegistred(username, icon); + } else { + displayError(usernameOk, usernameError, usernameEdit, getResources().getString(R.string.wizard_username_incorrect)); + } + } else { + displayError(true, usernameError, usernameEdit, ""); + } } - isUsernameRegistred(username, icon); - } else { - displayError(usernameOk, usernameError, usernameEdit, getResources().getString(R.string.wizard_username_incorrect)); - } + }); } }); } @@ -381,21 +370,29 @@ public class CreateAccountFragment extends Fragment { public void onTextChanged(CharSequence s, int start, int count, int after) { - confirmPasswordOk = false; - if (field1.getText().toString().equals(field2.getText().toString())) { - confirmPasswordOk = true; + field2.setOnFocusChangeListener(new View.OnFocusChangeListener() { + @Override + public void onFocusChange(View v, boolean hasFocus) { + if (!hasFocus) { + confirmPasswordOk = false; + if (field1.getText().toString().equals(field2.getText().toString())) { + confirmPasswordOk = true; - if (!isPasswordCorrect(field1.getText().toString())) { - displayError(passwordOk, passwordError, passwordEdit, getString(R.string.wizard_password_incorrect)); + if (!isPasswordCorrect(field1.getText().toString())) { + displayError(passwordOk, passwordError, passwordEdit, getString(R.string.wizard_password_incorrect)); + } else { + displayError(confirmPasswordOk, passwordConfirmError, passwordConfirmEdit, ""); + } + } else { + displayError(confirmPasswordOk, passwordConfirmError, passwordConfirmEdit, getString(R.string.wizard_passwords_unmatched)); + } + createAccount.setEnabled(usernameOk && passwordOk && confirmPasswordOk && emailOk); + } else { + displayError(true, passwordConfirmError, passwordConfirmEdit, ""); + } } - else { - displayError(confirmPasswordOk, passwordConfirmError, passwordConfirmEdit, ""); - } - } - else { - displayError(confirmPasswordOk, passwordConfirmError, passwordConfirmEdit, getString(R.string.wizard_passwords_unmatched)); - } - createAccount.setEnabled(usernameOk && passwordOk && confirmPasswordOk && emailOk); + }); + } };