accounts: easier ip account discovery
An ip2ip account is a well hidden feature, since we request users to
fill all fields when creating a SIP account.
This commit reduces the discovery barrier by making only the Alias field
mandatory. A warning is displayed if the user tries to create an account
without an hostname (e.g a IP2IP account).
Change-Id: I9f8a1b6d56485fa73f403fe99f918b18c274f355
Tuleap: #694
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountCreationFragment.java
index bd740c1..3fbdaa2 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AccountCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountCreationFragment.java
@@ -105,13 +105,11 @@
mPasswordView.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- mAccountType = AccountDetailBasic.ACCOUNT_TYPE_SIP;
-
- mAlias = mAliasView.getText().toString();
- mHostname = mHostnameView.getText().toString();
- mUsername = mUsernameView.getText().toString();
- mPassword = mPasswordView.getText().toString();
- attemptCreation();
+ if (actionId == getResources().getInteger(R.integer.register_sip_account_actionid)
+ || event == null
+ || (event.getAction() == KeyEvent.ACTION_UP)) {
+ inflatedView.findViewById(R.id.create_sip_button).callOnClick();
+ }
return true;
}
});
@@ -119,7 +117,7 @@
@Override
public void onClick(View view) {
mAccountType = AccountDetailBasic.ACCOUNT_TYPE_RING;
- initCreation();
+ initAccountCreation();
}
});
inflatedView.findViewById(R.id.create_sip_button).setOnClickListener(new View.OnClickListener() {
@@ -444,48 +442,62 @@
// Store values at the time of the login attempt.
boolean cancel = false;
+ boolean warningIPAccount = false;
View focusView = null;
- // Check for a valid password.
- if (TextUtils.isEmpty(mPassword)) {
- mPasswordView.setError(getString(R.string.error_field_required));
- focusView = mPasswordView;
- cancel = true;
- }
-
- if (TextUtils.isEmpty(mUsername)) {
- mUsernameView.setError(getString(R.string.error_field_required));
- focusView = mUsernameView;
- cancel = true;
- }
-
- if (TextUtils.isEmpty(mHostname)) {
- mHostnameView.setError(getString(R.string.error_field_required));
- focusView = mHostnameView;
- cancel = true;
- }
-
- // Check for a valid email address.
+ // Alias is mandatory
if (TextUtils.isEmpty(mAlias)) {
mAliasView.setError(getString(R.string.error_field_required));
focusView = mAliasView;
cancel = true;
}
- if (cancel) {
- // There was an error; don't attempt login and focus the first
- // form field with an error.
- focusView.requestFocus();
- } else {
- // Show a progress spinner, and kick off a background task to
- // perform the user login attempt.
- initCreation();
+ if (TextUtils.isEmpty(mHostname)) {
+ warningIPAccount = true;
+ }
+ if (!warningIPAccount && TextUtils.isEmpty(mPassword)) {
+ mPasswordView.setError(getString(R.string.error_field_required));
+ focusView = mPasswordView;
+ cancel = true;
+ }
+
+ if (!warningIPAccount && TextUtils.isEmpty(mUsername)) {
+ mUsernameView.setError(getString(R.string.error_field_required));
+ focusView = mUsernameView;
+ cancel = true;
+ }
+
+ if (cancel) {
+ focusView.requestFocus();
+ } else if (warningIPAccount) {
+ showIP2IPDialog();
+ } else {
+ initAccountCreation();
}
}
+ private void showIP2IPDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setTitle(R.string.dialog_warn_ip2ip_account_title)
+ .setMessage(R.string.dialog_warn_ip2ip_account_message)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ initAccountCreation();
+ }
+ })
+ .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ /* Terminate with no action */
+ }
+ })
+ .create().show();
+ }
+
@SuppressWarnings("unchecked")
- private void initCreation() {
+ private void initAccountCreation() {
try {
HashMap<String, String> accountDetails = (HashMap<String, String>) mCallbacks.getRemoteService().getAccountTemplate(mAccountType);
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_TYPE, mAccountType);
diff --git a/ring-android/app/src/main/res/layout/frag_account_creation.xml b/ring-android/app/src/main/res/layout/frag_account_creation.xml
index a9faa6a..a6249f7 100644
--- a/ring-android/app/src/main/res/layout/frag_account_creation.xml
+++ b/ring-android/app/src/main/res/layout/frag_account_creation.xml
@@ -274,6 +274,7 @@
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:hint="@string/prompt_password"
+ android:imeActionId="@integer/register_sip_account_actionid"
android:imeActionLabel="@string/action_create_short"
android:inputType="textPassword"
android:singleLine="true"
diff --git a/ring-android/app/src/main/res/values/integers.xml b/ring-android/app/src/main/res/values/integers.xml
new file mode 100644
index 0000000..353c4cf
--- /dev/null
+++ b/ring-android/app/src/main/res/values/integers.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <integer name="register_sip_account_actionid">1000</integer>
+</resources>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/values/strings_account.xml b/ring-android/app/src/main/res/values/strings_account.xml
index 3e867ea..fdc31a0 100644
--- a/ring-android/app/src/main/res/values/strings_account.xml
+++ b/ring-android/app/src/main/res/values/strings_account.xml
@@ -31,6 +31,11 @@
<string name="dialog_wait_create">Adding account</string>
<string name="dialog_wait_create_details">Please wait while your new account is added…</string>
+ <string name="dialog_warn_ip2ip_account_title">Create empty SIP account ?</string>
+ <string name="dialog_warn_ip2ip_account_message">You are about to create a SIP account with no valid hostname.
+ You will only be able to make and receive direct ip calls.
+ You can edit your account later</string>
+
<string-array name="accountType">
<item>RING</item>
<item>SIP</item>