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);
+ });
+
}
};