diff --git a/app/src/main/java/org/linphone/assistant/AssistantActivity.java b/app/src/main/java/org/linphone/assistant/AssistantActivity.java index dd8bfc134..b3e531513 100644 --- a/app/src/main/java/org/linphone/assistant/AssistantActivity.java +++ b/app/src/main/java/org/linphone/assistant/AssistantActivity.java @@ -19,6 +19,11 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +import static org.linphone.core.AccountCreator.UsernameStatus.Invalid; +import static org.linphone.core.AccountCreator.UsernameStatus.InvalidCharacters; +import static org.linphone.core.AccountCreator.UsernameStatus.TooLong; +import static org.linphone.core.AccountCreator.UsernameStatus.TooShort; + import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; @@ -281,4 +286,18 @@ public abstract class AssistantActivity extends LinphoneGenericActivity } return null; } + + String getErrorFromUsernameStatus(AccountCreator.UsernameStatus status) { + switch (status) { + case Invalid: + return getString(R.string.username_invalid_size); + case InvalidCharacters: + return getString(R.string.invalid_characters); + case TooLong: + return getString(R.string.username_too_long); + case TooShort: + return getString(R.string.username_too_short); + } + return null; + } } diff --git a/app/src/main/java/org/linphone/assistant/EmailAccountCreationAssistantActivity.java b/app/src/main/java/org/linphone/assistant/EmailAccountCreationAssistantActivity.java index f98b0e860..f9b0403ef 100644 --- a/app/src/main/java/org/linphone/assistant/EmailAccountCreationAssistantActivity.java +++ b/app/src/main/java/org/linphone/assistant/EmailAccountCreationAssistantActivity.java @@ -73,20 +73,7 @@ public class EmailAccountCreationAssistantActivity extends AssistantActivity { status == AccountCreator.UsernameStatus.Ok ? View.INVISIBLE : View.VISIBLE); - switch (status) { - case Invalid: - mUsernameError.setText(getString(R.string.username_invalid_size)); - break; - case InvalidCharacters: - mUsernameError.setText(getString(R.string.invalid_characters)); - break; - case TooLong: - mUsernameError.setText(getString(R.string.username_too_long)); - break; - case TooShort: - mUsernameError.setText(getString(R.string.username_too_short)); - break; - } + mUsernameError.setText(getErrorFromUsernameStatus(status)); updateCreateButton(); } }); diff --git a/app/src/main/java/org/linphone/assistant/PhoneAccountCreationAssistantActivity.java b/app/src/main/java/org/linphone/assistant/PhoneAccountCreationAssistantActivity.java index aca624f10..66a3eeb87 100644 --- a/app/src/main/java/org/linphone/assistant/PhoneAccountCreationAssistantActivity.java +++ b/app/src/main/java/org/linphone/assistant/PhoneAccountCreationAssistantActivity.java @@ -24,6 +24,8 @@ import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; +import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; @@ -36,7 +38,8 @@ import org.linphone.core.tools.Log; public class PhoneAccountCreationAssistantActivity extends AssistantActivity { private TextView mCountryPicker, mError, mSipUri, mCreate; - private EditText mPrefix, mPhoneNumber; + private EditText mPrefix, mPhoneNumber, mUsername; + private CheckBox mUseUsernameInsteadOfPhoneNumber; private AccountCreatorListenerStub mListener; @@ -69,7 +72,11 @@ public class PhoneAccountCreationAssistantActivity extends AssistantActivity { public void onClick(View v) { enableButtonsAndFields(false); - mAccountCreator.setUsername(mAccountCreator.getPhoneNumber()); + if (mUseUsernameInsteadOfPhoneNumber.isChecked()) { + mAccountCreator.setUsername(mUsername.getText().toString()); + } else { + mAccountCreator.setUsername(mAccountCreator.getPhoneNumber()); + } mAccountCreator.setDomain(getString(R.string.default_domain)); AccountCreator.Status status = mAccountCreator.isAccountExist(); @@ -133,6 +140,32 @@ public class PhoneAccountCreationAssistantActivity extends AssistantActivity { } }); + mUseUsernameInsteadOfPhoneNumber = findViewById(R.id.use_username); + mUseUsernameInsteadOfPhoneNumber.setOnCheckedChangeListener( + new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + mUsername.setVisibility(isChecked ? View.VISIBLE : View.GONE); + updateCreateButtonAndDisplayError(); + } + }); + + mUsername = findViewById(R.id.username); + mUsername.addTextChangedListener( + new TextWatcher() { + @Override + public void beforeTextChanged( + CharSequence s, int start, int count, int after) {} + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) {} + + @Override + public void afterTextChanged(Editable s) { + updateCreateButtonAndDisplayError(); + } + }); + mListener = new AccountCreatorListenerStub() { public void onIsAccountExist( @@ -209,18 +242,34 @@ public class PhoneAccountCreationAssistantActivity extends AssistantActivity { if (mPrefix.getText().toString().isEmpty() || mPhoneNumber.getText().toString().isEmpty()) return; + mCreate.setEnabled(true); + mError.setText(""); + mError.setVisibility(View.INVISIBLE); + int status = arePhoneNumberAndPrefixOk(mPrefix, mPhoneNumber); if (status == AccountCreator.PhoneNumberStatus.Ok.toInt()) { - mCreate.setEnabled(true); - mError.setText(""); - mError.setVisibility(View.INVISIBLE); + if (mUseUsernameInsteadOfPhoneNumber.isChecked()) { + AccountCreator.UsernameStatus usernameStatus = + mAccountCreator.setUsername(mUsername.getText().toString()); + if (usernameStatus != AccountCreator.UsernameStatus.Ok) { + mCreate.setEnabled(false); + mError.setText(getErrorFromUsernameStatus(usernameStatus)); + mError.setVisibility(View.VISIBLE); + } + } } else { mCreate.setEnabled(false); mError.setText(getErrorFromPhoneNumberStatus(status)); mError.setVisibility(View.VISIBLE); } - String username = mAccountCreator.getPhoneNumber(); + String username; + if (mUseUsernameInsteadOfPhoneNumber.isChecked()) { + username = mUsername.getText().toString(); + } else { + username = mAccountCreator.getPhoneNumber(); + } + if (username != null) { String sip = getString(R.string.assistant_create_account_phone_number_address) diff --git a/app/src/main/res/layout/assistant_phone_account_creation.xml b/app/src/main/res/layout/assistant_phone_account_creation.xml index 65fccbfd3..4c05e3e31 100644 --- a/app/src/main/res/layout/assistant_phone_account_creation.xml +++ b/app/src/main/res/layout/assistant_phone_account_creation.xml @@ -117,6 +117,24 @@ + + + + Echo canceler calibration in progress Enter your login Your account has not been validated yet. - The confirmation code is invalid.\r\nPlease try again. + The confirmation code is invalid.\nPlease try again. Your account has been validated. Incorrect username or password Do you agree to download OpenH264 Video Codec provided by Cisco Systems, Inc.? @@ -114,13 +114,13 @@ An error occurred, try again later. Server unreachable, verify your network connection. This username is already taken. - This phone number is already used.\r\nPlease type a different number.\r\nYou can delete your existing account if you want to reuse your phone number. + This phone number is already used.\nPlease type a different number.\nYou can delete your existing account if you want to reuse your phone number. Your username is invalid. Your phone number is invalid. Your email is invalid. 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? + Your username will be %s.\n\nIt may differ from your input to match requirements.\nDo you accept? Please enter your login and password Forgot password ? Choose a country