From 1ca5ea2b7a894afd8f91076cf4e263ac44dfbab4 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Thu, 1 Jun 2017 12:19:12 +0200 Subject: [PATCH] Rework Generic Login fragment - close #64 -Add user id -Go to default login when it's the default domain --- res/layout/assistant_login.xml | 18 +++++++ res/values/strings.xml | 1 + .../linphone/assistant/AssistantActivity.java | 53 ++++++------------- .../assistant/LinphoneLoginFragment.java | 12 ++++- .../org/linphone/assistant/LoginFragment.java | 18 ++++--- .../linphone/assistant/WelcomeFragment.java | 10 ++-- 6 files changed, 63 insertions(+), 49 deletions(-) diff --git a/res/layout/assistant_login.xml b/res/layout/assistant_login.xml index 275f79299..c35bc4207 100644 --- a/res/layout/assistant_login.xml +++ b/res/layout/assistant_login.xml @@ -51,6 +51,24 @@ android:layout_height="40dp" android:maxLines="1"/> + + + + Username + User-id (optional) Phone number Display name Password diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index 7f1963daa..9ea7b229b 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -285,7 +285,7 @@ private static AssistantActivity instance; finish(); } else if (currentFragment == AssistantFragmentsEnum.COUNTRY_CHOOSER){ if(lastFragment.equals(AssistantFragmentsEnum.LINPHONE_LOGIN)){ - displayLoginLinphone(); + displayLoginLinphone(null, null); } else { displayCreateAccount(); } @@ -347,10 +347,6 @@ private static AssistantActivity instance; } } - private void logIn(String username, String password, String ha1, String prefix, String domain, TransportType transport) { - saveCreatedAccount(username, password, ha1, prefix, domain, transport); - } - public void configureLinphoneProxyConfig(LinphoneAccountCreator accountCreator) { LinphoneCore lc = LinphoneManager.getLc(); LinphoneProxyConfig proxyConfig = lc.createProxyConfig(); @@ -417,12 +413,8 @@ private static AssistantActivity instance; configureLinphoneProxyConfig(accountCreator); } - public void genericLogIn(String username, String password, String prefix, String domain, TransportType transport) { - if (accountCreated) { - retryLogin(username, password, prefix, domain, transport); - } else { - logIn(username, password, null, prefix, domain, transport); - } + public void genericLogIn(String username, String userid, String password, String prefix, String domain, TransportType transport) { + saveCreatedAccount(username, userid, password, null, prefix, domain, transport); } private void display(AssistantFragmentsEnum fragment) { @@ -431,7 +423,7 @@ private static AssistantActivity instance; displayMenu(); break; case LINPHONE_LOGIN: - displayLoginLinphone(); + displayLoginLinphone(null, null); break; default: throw new IllegalStateException("Can't handle " + fragment); @@ -453,11 +445,13 @@ private static AssistantActivity instance; back.setVisibility(View.VISIBLE); } - public void displayLoginLinphone() { + public void displayLoginLinphone(String username, String password) { fragment = new LinphoneLoginFragment(); Bundle extras = new Bundle(); extras.putString("Phone", null); extras.putString("Dialcode", null); + extras.putString("Username", username); + extras.putString("Password", password); fragment.setArguments(extras); changeFragment(fragment); currentFragment = AssistantFragmentsEnum.LINPHONE_LOGIN; @@ -490,11 +484,6 @@ private static AssistantActivity instance; back.setVisibility(View.VISIBLE); } - public void retryLogin(String username, String password, String prefix, String domain, TransportType transport) { - accountCreated = false; - saveCreatedAccount(username, password, null, prefix, domain, transport); - } - private void launchDownloadCodec() { if (LinphoneManager.getLc().downloadOpenH264Enabled()) { OpenH264DownloadHelper downloadHelper = LinphoneCoreFactory.instance().createOpenH264DownloadHelper(); @@ -521,9 +510,7 @@ private static AssistantActivity instance; return phoneNumberWithCountry; } - public void saveCreatedAccount(String username, String password, String ha1, String prefix, String domain, TransportType transport) { - if (accountCreated) - return; + public void saveCreatedAccount(String username, String userid, String password, String ha1, String prefix, String domain, TransportType transport) { username = LinphoneUtils.getDisplayableUsernameFromAddress(username); domain = LinphoneUtils.getDisplayableUsernameFromAddress(domain); @@ -539,6 +526,7 @@ private static AssistantActivity instance; .setUsername(username) .setDomain(domain) .setHa1(ha1) + .setUserId(userid) .setPassword(password); if (prefix != null) { @@ -555,23 +543,14 @@ private static AssistantActivity instance; builder.setTransport(transport); } - if (getResources().getBoolean(R.bool.enable_push_id)) { - String regId = mPrefs.getPushNotificationRegistrationID(); - String appId = getString(R.string.push_sender_id); - if (regId != null && mPrefs.isPushNotificationEnabled()) { - String contactInfos = "app-id=" + appId + ";pn-type=" + getString(R.string.push_type) + ";pn-tok=" + regId; - builder.setContactParameters(contactInfos); - } - - try { - builder.saveNewAccount(); - if (!newAccount) { - displayRegistrationInProgressDialog(); - } - accountCreated = true; - } catch (LinphoneCoreException e) { - Log.e(e); + try { + builder.saveNewAccount(); + if (!newAccount) { + displayRegistrationInProgressDialog(); } + accountCreated = true; + } catch (LinphoneCoreException e) { + Log.e(e); } } diff --git a/src/android/org/linphone/assistant/LinphoneLoginFragment.java b/src/android/org/linphone/assistant/LinphoneLoginFragment.java index 2d64ef743..783e16cb3 100644 --- a/src/android/org/linphone/assistant/LinphoneLoginFragment.java +++ b/src/android/org/linphone/assistant/LinphoneLoginFragment.java @@ -62,7 +62,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On private Boolean recoverAccount; private LinphoneAccountCreator accountCreator; private int countryCode; - private String phone, dialcode; + private String phone, dialcode, username, pwd; private ImageView phoneNumberInfo; @Override @@ -170,6 +170,16 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On passwordLayout.setVisibility(View.VISIBLE); } + // When we come from generic login fragment + username = getArguments().getString("Username"); + pwd = getArguments().getString("Password"); + if (username != null && pwd != null) { + useUsername.setChecked(true); + onCheckedChanged(useUsername, true); + login.setText(username); + password.setText(pwd); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { accountCreator.setLanguage(Locale.getDefault().toLanguageTag()); } diff --git a/src/android/org/linphone/assistant/LoginFragment.java b/src/android/org/linphone/assistant/LoginFragment.java index 024d7f0f9..f60e68b2b 100644 --- a/src/android/org/linphone/assistant/LoginFragment.java +++ b/src/android/org/linphone/assistant/LoginFragment.java @@ -36,17 +36,19 @@ import android.widget.Toast; * @author Sylvain Berfini */ public class LoginFragment extends Fragment implements OnClickListener, TextWatcher { - private EditText login, password, domain; + private EditText login, userid, password, domain; private RadioGroup transports; private Button apply; - + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.assistant_login, container, false); - + login = (EditText) view.findViewById(R.id.assistant_username); login.addTextChangedListener(this); + userid = (EditText) view.findViewById(R.id.assistant_userid); + userid.addTextChangedListener(this); password = (EditText) view.findViewById(R.id.assistant_password); password.addTextChangedListener(this); domain = (EditText) view.findViewById(R.id.assistant_domain); @@ -55,14 +57,14 @@ public class LoginFragment extends Fragment implements OnClickListener, TextWatc apply = (Button) view.findViewById(R.id.assistant_apply); apply.setEnabled(false); apply.setOnClickListener(this); - + return view; } @Override public void onClick(View v) { int id = v.getId(); - + if (id == R.id.assistant_apply) { if (login.getText() == null || login.length() == 0 || password.getText() == null || password.length() == 0 || domain.getText() == null || domain.length() == 0) { Toast.makeText(getActivity(), getString(R.string.first_launch_no_login_password), Toast.LENGTH_LONG).show(); @@ -80,7 +82,11 @@ public class LoginFragment extends Fragment implements OnClickListener, TextWatc } } - AssistantActivity.instance().genericLogIn(login.getText().toString(), password.getText().toString(), null, domain.getText().toString(), transport); + if (domain.getText().toString().compareTo(getString(R.string.default_domain)) == 0) { + AssistantActivity.instance().displayLoginLinphone(login.getText().toString(), password.getText().toString()); + } else { + AssistantActivity.instance().genericLogIn(login.getText().toString(), userid.getText().toString(), password.getText().toString(), null, domain.getText().toString(), transport); + } } } diff --git a/src/android/org/linphone/assistant/WelcomeFragment.java b/src/android/org/linphone/assistant/WelcomeFragment.java index b85120800..730e58c69 100644 --- a/src/android/org/linphone/assistant/WelcomeFragment.java +++ b/src/android/org/linphone/assistant/WelcomeFragment.java @@ -32,7 +32,7 @@ import android.widget.Button; */ public class WelcomeFragment extends Fragment implements OnClickListener { private Button createAccount, logLinphoneAccount, logGenericAccount, remoteProvisioning; - + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -47,21 +47,21 @@ public class WelcomeFragment extends Fragment implements OnClickListener { } else { logLinphoneAccount.setOnClickListener(this); } - + logGenericAccount = (Button) view.findViewById(R.id.login_generic); if (getResources().getBoolean(R.bool.hide_generic_accounts_in_assistant)) { logGenericAccount.setVisibility(View.GONE); } else { logGenericAccount.setOnClickListener(this); } - + remoteProvisioning = (Button) view.findViewById(R.id.remote_provisioning); if (getResources().getBoolean(R.bool.hide_remote_provisioning_in_assistant)) { remoteProvisioning.setVisibility(View.GONE); } else { remoteProvisioning.setOnClickListener(this); } - + return view; } @@ -71,7 +71,7 @@ public class WelcomeFragment extends Fragment implements OnClickListener { if (id == R.id.login_generic) { AssistantActivity.instance().displayLoginGeneric(); } else if (id == R.id.login_linphone) { - AssistantActivity.instance().displayLoginLinphone(); + AssistantActivity.instance().displayLoginLinphone(null, null); } else if (id == R.id.create_account) { AssistantActivity.instance().displayCreateAccount(); } else if (id == R.id.remote_provisioning) {