diff --git a/res/layout/dialer.xml b/res/layout/dialer.xml index e82be91b9..015a512ac 100644 --- a/res/layout/dialer.xml +++ b/res/layout/dialer.xml @@ -9,7 +9,6 @@ android:background="@color/colorF" android:layout_width="match_parent" android:layout_height="60dp" - android:layout_marginBottom="10dp" android:layout_alignParentTop="true"> 86400 - https://sip3.linphone.org:444/wizard.php true false diff --git a/res/values/strings.xml b/res/values/strings.xml index a5330910c..1f6cd6dd7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -52,6 +52,7 @@ Link Do you want to link the account %s with your phone number ? Maybe later + Link account the libre SIP client @@ -60,7 +61,6 @@ Welcome Assistant Create account - Link account Continue Activate account Finish configuration diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index a05bb8b50..6fdf0dbcc 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -133,12 +133,12 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta private LinearLayout mTabBar; private DrawerLayout sideMenu; - private String[] sideMenuItems; private RelativeLayout sideMenuContent, quitLayout, defaultAccount; private ListView accountsList, sideMenuItemList; private ImageView menu; private boolean fetchedContactsOnce = false; private boolean doNotGoToCallActivity = false; + private List sideMenuItems; static final boolean isInstanciated() { return instance != null; @@ -235,6 +235,14 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta refreshAccounts(); + if(state.equals(RegistrationState.RegistrationOk) && LinphonePreferences.instance().getLinkPopupTime() != ""){ + if(getResources().getBoolean(R.bool.use_phone_number_validation)) { + if (LinphonePreferences.instance().getLinkPopupTime() == null || (LinphonePreferences.instance().getLinkPopupTime() != null && !LinphonePreferences.instance().getLinkPopupTime().equals(""))){ + isAccountWithAlias(); + } + } + } + if(state.equals(RegistrationState.RegistrationFailed) && newProxyConfig) { newProxyConfig = false; if (proxy.getError() == Reason.BadCredentials) { @@ -1346,12 +1354,6 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta isTrialAccount(); } - if(getResources().getBoolean(R.bool.use_phone_number_validation)) { - if (LinphonePreferences.instance().getLinkPopupTime() == null || (LinphonePreferences.instance().getLinkPopupTime() != null && !LinphonePreferences.instance().getLinkPopupTime().equals(""))){ - isAccountWithAlias(); - } - } - updateMissedChatCount(); if(LinphonePreferences.instance().isFriendlistsubscriptionEnabled() && LinphoneManager.getLc().getDefaultProxyConfig() != null){ LinphoneManager.getInstance().subscribeFriendList(true); @@ -1481,13 +1483,14 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta } public void initSideMenu() { - sideMenu = (DrawerLayout) findViewById(R.id.side_menu); + sideMenuItems = new ArrayList(); + sideMenuItems.add(getResources().getString(R.string.menu_assistant)); + sideMenuItems.add(getResources().getString(R.string.menu_settings)); if(getResources().getBoolean(R.bool.enable_in_app_purchase)){ - sideMenuItems = new String[]{getResources().getString(R.string.menu_assistant),getResources().getString(R.string.menu_settings),getResources().getString(R.string.inapp), getResources().getString(R.string.menu_about)}; - } else { - sideMenuItems = new String[]{getResources().getString(R.string.menu_assistant),getResources().getString(R.string.menu_settings),getResources().getString(R.string.menu_about)}; + sideMenuItems.add(getResources().getString(R.string.inapp)); } + sideMenuItems.add(getResources().getString(R.string.menu_about)); sideMenuContent = (RelativeLayout) findViewById(R.id.side_menu_content); sideMenuItemList = (ListView)findViewById(R.id.item_list); menu = (ImageView) findViewById(R.id.side_menu_button); @@ -1686,7 +1689,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta private void isAccountWithAlias(){ if(LinphoneManager.getLc().getDefaultProxyConfig() != null) { LinphoneAccountCreator accountCreator; - accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), getResources().getString(R.string.wizard_url)); + accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator.setDomain(getResources().getString(R.string.default_domain)); accountCreator.setListener(this); accountCreator.setUsername(LinphonePreferences.instance().getAccountUsername(LinphonePreferences.instance().getDefaultAccountIndex())); diff --git a/src/org/linphone/LinphonePreferences.java b/src/org/linphone/LinphonePreferences.java index 99ff6cd56..8db511e99 100644 --- a/src/org/linphone/LinphonePreferences.java +++ b/src/org/linphone/LinphonePreferences.java @@ -1350,6 +1350,14 @@ public class LinphonePreferences { return purchasables; } + public String getXmlrpcUrl(){ + return getConfig().getString("assistant", "xmlrpc_url", null); + } + + public void setXmlrpcUrl(String url){ + getConfig().setString("assistant", "xmlrpc_url", url); + } + public String getInappPopupTime(){ return getConfig().getString("app", "inapp_popup_time", null); } diff --git a/src/org/linphone/assistant/AssistantActivity.java b/src/org/linphone/assistant/AssistantActivity.java index e11c3726e..853d67883 100644 --- a/src/org/linphone/assistant/AssistantActivity.java +++ b/src/org/linphone/assistant/AssistantActivity.java @@ -25,6 +25,8 @@ import org.linphone.LinphoneUtils; import org.linphone.LinphonePreferences.AccountBuilder; import org.linphone.R; import org.linphone.StatusFragment; +import org.linphone.core.LinphoneAccountCreator; +import org.linphone.core.LinphoneAccountCreatorImpl; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneAddress.TransportType; import org.linphone.core.LinphoneCore; @@ -65,7 +67,7 @@ import android.widget.Toast; /** * @author Sylvain Berfini */ -public class AssistantActivity extends Activity implements OnClickListener, ActivityCompat.OnRequestPermissionsResultCallback { +public class AssistantActivity extends Activity implements OnClickListener, ActivityCompat.OnRequestPermissionsResultCallback, LinphoneAccountCreator.LinphoneAccountCreatorListener { private static AssistantActivity instance; private ImageView back, cancel; private AssistantFragmentsEnum currentFragment; @@ -82,6 +84,7 @@ private static AssistantActivity instance; private boolean remoteProvisioningInProgress; private boolean echoCancellerAlreadyDone; private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201; + private LinphoneAccountCreator accountCreator; public CountryListFragment.Country country; public String phone_number; @@ -118,6 +121,10 @@ private static AssistantActivity instance; } mPrefs = LinphonePreferences.instance(); status.enableSideMenu(false); + + accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); + accountCreator.setDomain(getResources().getString(R.string.default_domain)); + accountCreator.setListener(this); mListener = new LinphoneCoreListenerBase() { @Override @@ -133,7 +140,7 @@ private static AssistantActivity instance; if (state == RegistrationState.RegistrationOk) { if (progress != null) progress.dismiss(); if (LinphoneManager.getLc().getDefaultProxyConfig() != null) { - success(); + accountCreator.isAccountUsed(); } } else if (state == RegistrationState.RegistrationFailed) { if (progress != null) progress.dismiss(); @@ -222,6 +229,9 @@ private static AssistantActivity instance; @Override public void onBackPressed() { + if(isLink){ + return; + } if (currentFragment == firstFragment) { LinphonePreferences.instance().firstLaunchSuccessful(); if (getResources().getBoolean(R.bool.assistant_cancel_move_to_back)) { @@ -435,6 +445,8 @@ private static AssistantActivity instance; address.setDisplayName(displayName); } + + boolean isMainAccountLinphoneDotOrg = domain.equals(getString(R.string.default_domain)); AccountBuilder builder = new AccountBuilder(LinphoneManager.getLc()) .setUsername(username) @@ -466,6 +478,10 @@ private static AssistantActivity instance; mPrefs.setStunServer(getString(R.string.default_stun)); mPrefs.setIceEnabled(true); + + accountCreator.setPassword(password); + accountCreator.setHa1(ha1); + accountCreator.setUsername(username); } else { String forcedProxy = ""; if (!TextUtils.isEmpty(forcedProxy)) { @@ -610,4 +626,45 @@ private static AssistantActivity instance; status.setLinphoneCoreListener(); } } + + @Override + public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { + if(status.equals(LinphoneAccountCreator.Status.AccountExistWithAlias)){ + success(); + } else { + isLink = true; + displayCreateAccount(); + } + + } + + @Override + public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { + + } + + @Override + public void onAccountCreatorAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { + + } + + @Override + public void onAccountCreatorAccountLinkedWithPhoneNumber(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { + + } + + @Override + public void onAccountCreatorPhoneNumberLinkActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { + + } + + @Override + public void onAccountCreatorIsAccountActivated(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { + + } + + @Override + public void onAccountCreatorPhoneAccountRecovered(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { + + } } diff --git a/src/org/linphone/assistant/CreateAccountActivationFragment.java b/src/org/linphone/assistant/CreateAccountActivationFragment.java index 102e99211..db3c732fe 100644 --- a/src/org/linphone/assistant/CreateAccountActivationFragment.java +++ b/src/org/linphone/assistant/CreateAccountActivationFragment.java @@ -18,6 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import org.linphone.LinphoneManager; +import org.linphone.LinphonePreferences; import org.linphone.R; import org.linphone.core.LinphoneXmlRpcRequest; import org.linphone.core.LinphoneXmlRpcRequest.LinphoneXmlRpcRequestListener; @@ -81,7 +82,7 @@ public class CreateAccountActivationFragment extends Fragment implements Linphon } }; - xmlRpcSession = new LinphoneXmlRpcSessionImpl(LinphoneManager.getLcIfManagerNotDestroyedOrNull(), getString(R.string.wizard_url)); + xmlRpcSession = new LinphoneXmlRpcSessionImpl(LinphoneManager.getLcIfManagerNotDestroyedOrNull(), LinphonePreferences.instance().getXmlrpcUrl()); xmlRpcRequest = new LinphoneXmlRpcRequestImpl("check_account_validated", LinphoneXmlRpcRequest.ArgType.Int); xmlRpcRequest.setListener(this); diff --git a/src/org/linphone/assistant/CreateAccountCodeActivationFragment.java b/src/org/linphone/assistant/CreateAccountCodeActivationFragment.java index 83d23e872..db3d3e8b1 100644 --- a/src/org/linphone/assistant/CreateAccountCodeActivationFragment.java +++ b/src/org/linphone/assistant/CreateAccountCodeActivationFragment.java @@ -60,7 +60,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin linkAccount = getArguments().getBoolean("LinkAccount"); code_length = LinphonePreferences.instance().getCodeLength(); - accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), getResources().getString(R.string.wizard_url)); + accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator.setDomain(getResources().getString(R.string.default_domain)); accountCreator.setListener(this); accountCreator.setUsername(username); @@ -160,7 +160,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin if(status.equals(LinphoneAccountCreator.Status.Ok)){ LinphonePreferences.instance().setLinkPopupTime(""); AssistantActivity.instance().hideKeyboard(); - AssistantActivity.instance().finish(); + AssistantActivity.instance().success(); } } diff --git a/src/org/linphone/assistant/CreateAccountFragment.java b/src/org/linphone/assistant/CreateAccountFragment.java index 9f2bdefec..a2dabaf75 100644 --- a/src/org/linphone/assistant/CreateAccountFragment.java +++ b/src/org/linphone/assistant/CreateAccountFragment.java @@ -28,7 +28,6 @@ import org.linphone.R; import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.LinphoneAccountCreatorImpl; import org.linphone.core.LinphoneProxyConfig; -import org.linphone.mediastream.Log; import android.accounts.Account; import android.accounts.AccountManager; @@ -81,7 +80,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On View view = inflater.inflate(R.layout.assistant_account_creation, container, false); //Initialize accountCreator - accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), getResources().getString(R.string.wizard_url)); + accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator.setDomain(getResources().getString(R.string.default_domain)); accountCreator.setListener(this); @@ -192,8 +191,8 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On passwordConfirmLayout.setVisibility(View.GONE); emailLayout.setVisibility(View.GONE); - createAccount.setText(getResources().getString(R.string.assistant_link_account)); - assisstantTitle.setText(getResources().getString(R.string.assistant_link_account)); + createAccount.setText(getResources().getString(R.string.link_account)); + assisstantTitle.setText(getResources().getString(R.string.link_account)); } addUsernameHandler(usernameEdit, null); @@ -570,7 +569,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On @Override public void onAccountCreatorAccountCreated(LinphoneAccountCreator accountCreator, Status status) { if(status.equals(Status.AccountCreated)) { - if(useEmail.isChecked()){ + if(useEmail.isChecked() || !getResources().getBoolean(R.bool.use_phone_number_validation)){ AssistantActivity.instance().displayAssistantConfirm(getUsername(), passwordEdit.getText().toString()); } else { AssistantActivity.instance().displayAssistantCodeConfirm(getUsername(), phoneNumberEdit.getText().toString(), getCountryCode(), false); diff --git a/src/org/linphone/assistant/EchoCancellerCalibrationFragment.java b/src/org/linphone/assistant/EchoCancellerCalibrationFragment.java index c7f2016ac..7bcbbbb7e 100644 --- a/src/org/linphone/assistant/EchoCancellerCalibrationFragment.java +++ b/src/org/linphone/assistant/EchoCancellerCalibrationFragment.java @@ -20,6 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import org.linphone.LinphoneManager; +import org.linphone.LinphonePreferences; import org.linphone.R; import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.EcCalibratorStatus; @@ -73,7 +74,7 @@ public class EchoCancellerCalibrationFragment extends Fragment implements Linpho } }; - xmlRpcSession = new LinphoneXmlRpcSessionImpl(LinphoneManager.getLcIfManagerNotDestroyedOrNull(), getString(R.string.wizard_url)); + xmlRpcSession = new LinphoneXmlRpcSessionImpl(LinphoneManager.getLcIfManagerNotDestroyedOrNull(), LinphonePreferences.instance().getXmlrpcUrl()); xmlRpcRequest = new LinphoneXmlRpcRequestImpl("add_ec_calibration_result", LinphoneXmlRpcRequest.ArgType.None); xmlRpcRequest.setListener(this); diff --git a/src/org/linphone/assistant/LinphoneLoginFragment.java b/src/org/linphone/assistant/LinphoneLoginFragment.java index 9423a0523..44aab5560 100644 --- a/src/org/linphone/assistant/LinphoneLoginFragment.java +++ b/src/org/linphone/assistant/LinphoneLoginFragment.java @@ -18,6 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import org.linphone.LinphoneManager; +import org.linphone.LinphonePreferences; import org.linphone.R; import org.linphone.compatibility.Compatibility; import org.linphone.core.LinphoneAccountCreator; @@ -62,7 +63,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On Bundle savedInstanceState) { View view = inflater.inflate(R.layout.assistant_linphone_login, container, false); - accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), getResources().getString(R.string.wizard_url)); + accountCreator = new LinphoneAccountCreatorImpl(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); accountCreator.setListener(this); String url = "http://linphone.org/free-sip-service.html&action=recover";