Fix assistant link + contacts

This commit is contained in:
Erwan Croze 2016-10-12 11:56:09 +02:00
parent e3efead597
commit f75de58f3d
7 changed files with 115 additions and 78 deletions

View file

@ -22,10 +22,12 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.linphone.LinphonePreferences.AccountBuilder; import org.linphone.LinphonePreferences.AccountBuilder;
import org.linphone.assistant.AssistantActivity;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreException;
import org.linphone.mediastream.Log; import org.linphone.mediastream.Log;
import org.linphone.ui.PreferencesListFragment; import org.linphone.ui.PreferencesListFragment;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference; import android.preference.EditTextPreference;
@ -47,15 +49,15 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
private EditTextPreference mProxyPreference; private EditTextPreference mProxyPreference;
private ListPreference mTransportPreference; private ListPreference mTransportPreference;
private AccountBuilder builder; private AccountBuilder builder;
public AccountPreferencesFragment() { public AccountPreferencesFragment() {
super(R.xml.account_preferences); super(R.xml.account_preferences);
mPrefs = LinphonePreferences.instance(); mPrefs = LinphonePreferences.instance();
} }
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
PreferenceScreen screen = getPreferenceScreen(); PreferenceScreen screen = getPreferenceScreen();
n = getArguments().getInt("Account", 0); n = getArguments().getInt("Account", 0);
if(n == mPrefs.getAccountCount()) { if(n == mPrefs.getAccountCount()) {
@ -67,11 +69,11 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
// Force hide keyboard // Force hide keyboard
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
} }
public static boolean isEditTextEmpty(String s) { public static boolean isEditTextEmpty(String s) {
return s.equals(""); // really empty. return s.equals(""); // really empty.
} }
OnPreferenceChangeListener usernameChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener usernameChangedListener = new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@ -83,7 +85,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
} }
preference.setSummary(newValue.toString()); preference.setSummary(newValue.toString());
return true; return true;
} }
}; };
OnPreferenceChangeListener useridChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener useridChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -92,10 +94,10 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
builder.setUserId(newValue.toString()); builder.setUserId(newValue.toString());
} else { } else {
mPrefs.setAccountUserId(n, newValue.toString()); mPrefs.setAccountUserId(n, newValue.toString());
} }
preference.setSummary(newValue.toString()); preference.setSummary(newValue.toString());
return true; return true;
} }
}; };
OnPreferenceChangeListener passwordChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener passwordChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -105,9 +107,9 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
builder.setPassword(newValue.toString()); builder.setPassword(newValue.toString());
} else { } else {
mPrefs.setAccountPassword(n, newValue.toString()); mPrefs.setAccountPassword(n, newValue.toString());
} }
return true; return true;
} }
}; };
OnPreferenceChangeListener domainChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener domainChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -117,10 +119,10 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
builder.setDomain(newValue.toString()); builder.setDomain(newValue.toString());
} else { } else {
mPrefs.setAccountDomain(n, newValue.toString()); mPrefs.setAccountDomain(n, newValue.toString());
} }
preference.setSummary(newValue.toString()); preference.setSummary(newValue.toString());
return true; return true;
} }
}; };
OnPreferenceChangeListener displayNameChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener displayNameChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -132,7 +134,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
} }
preference.setSummary(newValue.toString()); preference.setSummary(newValue.toString());
return true; return true;
} }
}; };
OnPreferenceChangeListener proxyChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener proxyChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -144,14 +146,14 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
} else { } else {
mPrefs.setAccountProxy(n, value); mPrefs.setAccountProxy(n, value);
preference.setSummary(mPrefs.getAccountProxy(n)); preference.setSummary(mPrefs.getAccountProxy(n));
if (mTransportPreference != null) { if (mTransportPreference != null) {
mTransportPreference.setSummary(mPrefs.getAccountTransportString(n)); mTransportPreference.setSummary(mPrefs.getAccountTransportString(n));
mTransportPreference.setValue(mPrefs.getAccountTransportKey(n)); mTransportPreference.setValue(mPrefs.getAccountTransportKey(n));
} }
} }
return true; return true;
} }
}; };
OnPreferenceChangeListener outboundProxyChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener outboundProxyChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -160,9 +162,9 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
builder.setOutboundProxyEnabled((Boolean) newValue); builder.setOutboundProxyEnabled((Boolean) newValue);
} else { } else {
mPrefs.setAccountOutboundProxyEnabled(n, (Boolean) newValue); mPrefs.setAccountOutboundProxyEnabled(n, (Boolean) newValue);
} }
return true; return true;
} }
}; };
OnPreferenceChangeListener expiresChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener expiresChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -215,7 +217,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
//TODO //TODO
} else { } else {
mPrefs.setAvpfRRInterval(n, value); mPrefs.setAvpfRRInterval(n, value);
} }
preference.setSummary(value); preference.setSummary(value);
return true; return true;
} }
@ -244,7 +246,10 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
OnPreferenceClickListener linkAccountListener = new OnPreferenceClickListener() { OnPreferenceClickListener linkAccountListener = new OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
LinphoneActivity.instance().displayLinkPhoneNumber(); Intent assistant = new Intent();
assistant.setClass(LinphoneActivity.instance(), AssistantActivity.class);
assistant.putExtra("LinkPhoneNumber", true);
startActivity(assistant);
return true; return true;
} }
}; };
@ -256,9 +261,9 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
builder.setEnabled(!value); builder.setEnabled(!value);
} else { } else {
mPrefs.setAccountEnabled(n, !value); mPrefs.setAccountEnabled(n, !value);
} }
return true; return true;
} }
}; };
OnPreferenceChangeListener transportChangedListener = new OnPreferenceChangeListener() { OnPreferenceChangeListener transportChangedListener = new OnPreferenceChangeListener() {
@Override @Override
@ -276,14 +281,14 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
mProxyPreference.setSummary(newProxy); mProxyPreference.setSummary(newProxy);
mProxyPreference.setText(newProxy); mProxyPreference.setText(newProxy);
} }
} }
return true; return true;
} }
}; };
private void initAccountPreferencesFields(PreferenceScreen parent) { private void initAccountPreferencesFields(PreferenceScreen parent) {
boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n; boolean isDefaultAccount = mPrefs.getDefaultAccountIndex() == n;
PreferenceCategory account = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_sipaccount_key)); PreferenceCategory account = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_sipaccount_key));
EditTextPreference username = (EditTextPreference) account.getPreference(0); EditTextPreference username = (EditTextPreference) account.getPreference(0);
username.setOnPreferenceChangeListener(usernameChangedListener); username.setOnPreferenceChangeListener(usernameChangedListener);
@ -298,27 +303,27 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
userid.setText(mPrefs.getAccountUserId(n)); userid.setText(mPrefs.getAccountUserId(n));
userid.setSummary(userid.getText()); userid.setSummary(userid.getText());
} }
EditTextPreference password = (EditTextPreference) account.getPreference(2); EditTextPreference password = (EditTextPreference) account.getPreference(2);
password.setOnPreferenceChangeListener(passwordChangedListener); password.setOnPreferenceChangeListener(passwordChangedListener);
if(!isNewAccount){ if(!isNewAccount){
password.setText(mPrefs.getAccountPassword(n)); password.setText(mPrefs.getAccountPassword(n));
} }
EditTextPreference domain = (EditTextPreference) account.getPreference(3); EditTextPreference domain = (EditTextPreference) account.getPreference(3);
domain.setOnPreferenceChangeListener(domainChangedListener); domain.setOnPreferenceChangeListener(domainChangedListener);
if (!isNewAccount){ if (!isNewAccount){
domain.setText(mPrefs.getAccountDomain(n)); domain.setText(mPrefs.getAccountDomain(n));
domain.setSummary(domain.getText()); domain.setSummary(domain.getText());
} }
EditTextPreference displayName = (EditTextPreference) account.getPreference(4); EditTextPreference displayName = (EditTextPreference) account.getPreference(4);
displayName.setOnPreferenceChangeListener(displayNameChangedListener); displayName.setOnPreferenceChangeListener(displayNameChangedListener);
if (!isNewAccount){ if (!isNewAccount){
displayName.setText(mPrefs.getAccountDisplayName(n)); displayName.setText(mPrefs.getAccountDisplayName(n));
displayName.setSummary(displayName.getText()); displayName.setSummary(displayName.getText());
} }
PreferenceCategory advanced = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_advanced_key)); PreferenceCategory advanced = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_advanced_key));
mTransportPreference = (ListPreference) advanced.getPreference(0); mTransportPreference = (ListPreference) advanced.getPreference(0);
initializeTransportPreference(mTransportPreference); initializeTransportPreference(mTransportPreference);
@ -326,20 +331,20 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
if(!isNewAccount){ if(!isNewAccount){
mTransportPreference.setSummary(mPrefs.getAccountTransportString(n)); mTransportPreference.setSummary(mPrefs.getAccountTransportString(n));
} }
mProxyPreference = (EditTextPreference) advanced.getPreference(1); mProxyPreference = (EditTextPreference) advanced.getPreference(1);
mProxyPreference.setOnPreferenceChangeListener(proxyChangedListener); mProxyPreference.setOnPreferenceChangeListener(proxyChangedListener);
if (!isNewAccount){ if (!isNewAccount){
mProxyPreference.setText(mPrefs.getAccountProxy(n)); mProxyPreference.setText(mPrefs.getAccountProxy(n));
mProxyPreference.setSummary("".equals(mProxyPreference.getText()) || (mProxyPreference.getText() == null) ? getString(R.string.pref_help_proxy) : mProxyPreference.getText()); mProxyPreference.setSummary("".equals(mProxyPreference.getText()) || (mProxyPreference.getText() == null) ? getString(R.string.pref_help_proxy) : mProxyPreference.getText());
} }
CheckBoxPreference outboundProxy = (CheckBoxPreference) advanced.getPreference(2); CheckBoxPreference outboundProxy = (CheckBoxPreference) advanced.getPreference(2);
outboundProxy.setOnPreferenceChangeListener(outboundProxyChangedListener); outboundProxy.setOnPreferenceChangeListener(outboundProxyChangedListener);
if (!isNewAccount){ if (!isNewAccount){
outboundProxy.setChecked(mPrefs.isAccountOutboundProxySet(n)); outboundProxy.setChecked(mPrefs.isAccountOutboundProxySet(n));
} }
EditTextPreference expires = (EditTextPreference) advanced.getPreference(3); EditTextPreference expires = (EditTextPreference) advanced.getPreference(3);
expires.setOnPreferenceChangeListener(expiresChangedListener); expires.setOnPreferenceChangeListener(expiresChangedListener);
if(!isNewAccount){ if(!isNewAccount){
@ -382,7 +387,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
Preference linkAccount = advanced.getPreference(9); Preference linkAccount = advanced.getPreference(9);
linkAccount.setOnPreferenceClickListener(linkAccountListener); linkAccount.setOnPreferenceClickListener(linkAccountListener);
PreferenceCategory manage = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_manage_key)); PreferenceCategory manage = (PreferenceCategory) getPreferenceScreen().findPreference(getString(R.string.pref_manage_key));
final CheckBoxPreference disable = (CheckBoxPreference) manage.getPreference(0); final CheckBoxPreference disable = (CheckBoxPreference) manage.getPreference(0);
disable.setEnabled(true); disable.setEnabled(true);
@ -390,11 +395,11 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
if(!isNewAccount){ if(!isNewAccount){
disable.setChecked(!mPrefs.isAccountEnabled(n)); disable.setChecked(!mPrefs.isAccountEnabled(n));
} }
CheckBoxPreference mainAccount = (CheckBoxPreference) manage.getPreference(1); CheckBoxPreference mainAccount = (CheckBoxPreference) manage.getPreference(1);
mainAccount.setChecked(isDefaultAccount); mainAccount.setChecked(isDefaultAccount);
mainAccount.setEnabled(!mainAccount.isChecked()); mainAccount.setEnabled(!mainAccount.isChecked());
mainAccount.setOnPreferenceClickListener(new OnPreferenceClickListener() mainAccount.setOnPreferenceClickListener(new OnPreferenceClickListener()
{ {
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
mPrefs.setDefaultAccount(n); mPrefs.setDefaultAccount(n);
@ -419,7 +424,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
} }
}); });
} }
private void initializeTransportPreference(ListPreference pref) { private void initializeTransportPreference(ListPreference pref) {
List<CharSequence> entries = new ArrayList<CharSequence>(); List<CharSequence> entries = new ArrayList<CharSequence>();
List<CharSequence> values = new ArrayList<CharSequence>(); List<CharSequence> values = new ArrayList<CharSequence>();
@ -427,13 +432,13 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
values.add(getString(R.string.pref_transport_udp_key)); values.add(getString(R.string.pref_transport_udp_key));
entries.add(getString(R.string.pref_transport_tcp)); entries.add(getString(R.string.pref_transport_tcp));
values.add(getString(R.string.pref_transport_tcp_key)); values.add(getString(R.string.pref_transport_tcp_key));
if (!getResources().getBoolean(R.bool.disable_all_security_features_for_markets)) { if (!getResources().getBoolean(R.bool.disable_all_security_features_for_markets)) {
entries.add(getString(R.string.pref_transport_tls)); entries.add(getString(R.string.pref_transport_tls));
values.add(getString(R.string.pref_transport_tls_key)); values.add(getString(R.string.pref_transport_tls_key));
} }
setListPreferenceValues(pref, entries, values); setListPreferenceValues(pref, entries, values);
if (! isNewAccount) { if (! isNewAccount) {
pref.setSummary(mPrefs.getAccountTransportString(n)); pref.setSummary(mPrefs.getAccountTransportString(n));
pref.setDefaultValue(mPrefs.getAccountTransportKey(n)); pref.setDefaultValue(mPrefs.getAccountTransportKey(n));
@ -445,7 +450,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
pref.setValueIndex(entries.indexOf(getString(R.string.pref_transport_udp))); pref.setValueIndex(entries.indexOf(getString(R.string.pref_transport_udp)));
} }
} }
private static void setListPreferenceValues(ListPreference pref, List<CharSequence> entries, List<CharSequence> values) { private static void setListPreferenceValues(ListPreference pref, List<CharSequence> entries, List<CharSequence> values) {
CharSequence[] contents = new CharSequence[entries.size()]; CharSequence[] contents = new CharSequence[entries.size()];
entries.toArray(contents); entries.toArray(contents);
@ -466,7 +471,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment {
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
if (LinphoneActivity.isInstanciated()) { if (LinphoneActivity.isInstanciated()) {
try { try {
if(isNewAccount){ if(isNewAccount){

View file

@ -631,10 +631,12 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
} }
public void displayLinkPhoneNumber() { public void displayLinkPhoneNumber() {
Intent assistant = new Intent(); LinphoneAccountCreator accountCreator;
assistant.setClass(this, AssistantActivity.class); accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl());
assistant.putExtra("LinkPhoneNumber", true); accountCreator.setDomain(getResources().getString(R.string.default_domain));
startActivity(assistant); accountCreator.setListener(this);
accountCreator.setUsername(LinphonePreferences.instance().getAccountUsername(LinphonePreferences.instance().getDefaultAccountIndex()));
accountCreator.isAccountLinked();
} }
public void displayInapp() { public void displayInapp() {
@ -1243,8 +1245,11 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
@Override @Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
int readContactsI = -1;
for (int i = 0; i < permissions.length; i++) { for (int i = 0; i < permissions.length; i++) {
Log.i("[Permission] " + permissions[i] + " is " + (grantResults[i] == PackageManager.PERMISSION_GRANTED ? "granted" : "denied")); Log.i("[Permission] " + permissions[i] + " is " + (grantResults[i] == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
if (permissions[i] == Manifest.permission.READ_CONTACTS)
readContactsI = i;
} }
switch (requestCode) { switch (requestCode) {
@ -1256,7 +1261,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
} }
break; break;
case PERMISSIONS_REQUEST_CONTACTS: case PERMISSIONS_REQUEST_CONTACTS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (readContactsI >= 0 && grantResults[readContactsI] == PackageManager.PERMISSION_GRANTED) {
ContactsManager.getInstance().enableContactsAccess(); ContactsManager.getInstance().enableContactsAccess();
} }
checkAndRequestReadPhoneStatePermission(); checkAndRequestReadPhoneStatePermission();
@ -1315,6 +1320,12 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
Log.i("[Permission] Asking for contacts"); Log.i("[Permission] Asking for contacts");
permissionsList.add(Manifest.permission.READ_CONTACTS); permissionsList.add(Manifest.permission.READ_CONTACTS);
} }
} else {
if (!fetchedContactsOnce) {
ContactsManager.getInstance().enableContactsAccess();
ContactsManager.getInstance().fetchContactsAsync();
fetchedContactsOnce = true;
}
} }
if (permissionsList.size() > 0) { if (permissionsList.size() > 0) {
@ -1826,8 +1837,8 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
@Override @Override
public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { public void onAccountCreatorIsAccountUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) {
if(status.equals(LinphoneAccountCreator.Status.AccountExist)){ if (status.equals(LinphoneAccountCreator.Status.AccountExist)) {
askLinkWithPhoneNumber(); accountCreator.isAccountLinked();
} }
} }
@ -1851,12 +1862,13 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) {
if (status.equals(LinphoneAccountCreator.Status.AccountNotLinked)) {
askLinkWithPhoneNumber();
}
} }
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) {
} }
} }

View file

@ -67,7 +67,7 @@ public class SettingsFragment extends PreferencesListFragment {
private LinphonePreferences mPrefs; private LinphonePreferences mPrefs;
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
private LinphoneCoreListenerBase mListener; private LinphoneCoreListenerBase mListener;
public SettingsFragment() { public SettingsFragment() {
super(R.xml.preferences); super(R.xml.preferences);
} }
@ -108,17 +108,17 @@ public class SettingsFragment extends PreferencesListFragment {
} }
} }
}; };
initSettings(); initSettings();
setListeners(); setListeners();
hideSettings(); hideSettings();
} }
private void removePreviousPreferencesFile() { private void removePreviousPreferencesFile() {
SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit(); SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit();
editor.clear(); editor.clear();
editor.commit(); editor.commit();
File dir = new File(getActivity().getFilesDir().getAbsolutePath() + "shared_prefs"); File dir = new File(getActivity().getFilesDir().getAbsolutePath() + "shared_prefs");
LinphoneUtils.recursiveFileRemoval(dir); LinphoneUtils.recursiveFileRemoval(dir);
} }
@ -257,7 +257,7 @@ public class SettingsFragment extends PreferencesListFragment {
if (!LinphoneManager.getLc().isTunnelAvailable()) { if (!LinphoneManager.getLc().isTunnelAvailable()) {
return; return;
} }
setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_host_key, mPrefs.getTunnelHost()); setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_host_key, mPrefs.getTunnelHost());
setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_port_key, String.valueOf(mPrefs.getTunnelPort())); setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_port_key, String.valueOf(mPrefs.getTunnelPort()));
ListPreference tunnelModePref = (ListPreference) findPreference(getString(R.string.pref_tunnel_mode_key)); ListPreference tunnelModePref = (ListPreference) findPreference(getString(R.string.pref_tunnel_mode_key));
@ -448,7 +448,7 @@ public class SettingsFragment extends PreferencesListFragment {
pref.setSummary(value); pref.setSummary(value);
pref.setValue(value); pref.setValue(value);
} }
private void initLimeEncryptionPreference(ListPreference pref) { private void initLimeEncryptionPreference(ListPreference pref) {
List<CharSequence> entries = new ArrayList<CharSequence>(); List<CharSequence> entries = new ArrayList<CharSequence>();
List<CharSequence> values = new ArrayList<CharSequence>(); List<CharSequence> values = new ArrayList<CharSequence>();
@ -461,7 +461,7 @@ public class SettingsFragment extends PreferencesListFragment {
pref.setEnabled(false); pref.setEnabled(false);
return; return;
} }
entries.add(getString(R.string.lime_encryption_entry_mandatory)); entries.add(getString(R.string.lime_encryption_entry_mandatory));
values.add(LinphoneLimeState.Mandatory.toString()); values.add(LinphoneLimeState.Mandatory.toString());
entries.add(getString(R.string.lime_encryption_entry_preferred)); entries.add(getString(R.string.lime_encryption_entry_preferred));
@ -588,7 +588,7 @@ public class SettingsFragment extends PreferencesListFragment {
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
synchronized (SettingsFragment.this) { synchronized (SettingsFragment.this) {
preference.setSummary(R.string.ec_calibrating); preference.setSummary(R.string.ec_calibrating);
int recordAudio = getActivity().getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getActivity().getPackageName()); int recordAudio = getActivity().getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getActivity().getPackageName());
if (recordAudio == PackageManager.PERMISSION_GRANTED) { if (recordAudio == PackageManager.PERMISSION_GRANTED) {
startEchoCancellerCalibration(); startEchoCancellerCalibration();
@ -640,7 +640,7 @@ public class SettingsFragment extends PreferencesListFragment {
e.printStackTrace(); e.printStackTrace();
} }
} }
public void startEchoCancellerCalibration() { public void startEchoCancellerCalibration() {
try { try {
if (LinphoneManager.getInstance().getEchoTesterStatus()) if (LinphoneManager.getInstance().getEchoTesterStatus())
@ -650,7 +650,7 @@ public class SettingsFragment extends PreferencesListFragment {
Log.e(e); Log.e(e);
} }
} }
public void echoCalibrationFail() { public void echoCalibrationFail() {
Preference echoCancellerCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key)); Preference echoCancellerCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key));
echoCancellerCalibration.setSummary(R.string.failed); echoCancellerCalibration.setSummary(R.string.failed);
@ -838,7 +838,7 @@ public class SettingsFragment extends PreferencesListFragment {
return true; return true;
} }
}); });
findPreference(getString(R.string.pref_overlay_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_overlay_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@ -893,7 +893,7 @@ public class SettingsFragment extends PreferencesListFragment {
mPrefs.enableDeviceRingtone(false); mPrefs.enableDeviceRingtone(false);
LinphoneManager.getInstance().enableDeviceRingtone(false); LinphoneManager.getInstance().enableDeviceRingtone(false);
} }
return true; return true;
} }
}); });
@ -915,9 +915,9 @@ public class SettingsFragment extends PreferencesListFragment {
return true; return true;
} }
}); });
initMediaEncryptionPreference((ListPreference) findPreference(getString(R.string.pref_media_encryption_key))); initMediaEncryptionPreference((ListPreference) findPreference(getString(R.string.pref_media_encryption_key)));
findPreference(getString(R.string.pref_auto_answer_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_auto_answer_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@ -926,7 +926,7 @@ public class SettingsFragment extends PreferencesListFragment {
return true; return true;
} }
}); });
findPreference(getString(R.string.pref_rfc2833_dtmf_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_rfc2833_dtmf_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@ -992,7 +992,7 @@ public class SettingsFragment extends PreferencesListFragment {
} else if (lime == LinphoneLimeState.Preferred) { } else if (lime == LinphoneLimeState.Preferred) {
preference.setSummary(getString(R.string.lime_encryption_entry_preferred)); preference.setSummary(getString(R.string.lime_encryption_entry_preferred));
} }
return true; return true;
} }
}); });
@ -1007,7 +1007,7 @@ public class SettingsFragment extends PreferencesListFragment {
ice.setChecked(mPrefs.isIceEnabled()); ice.setChecked(mPrefs.isIceEnabled());
turn.setEnabled(mPrefs.getStunServer() != null); turn.setEnabled(mPrefs.getStunServer() != null);
turn.setChecked(mPrefs.isTurnEnabled()); turn.setChecked(mPrefs.isTurnEnabled());
EditTextPreference turnUsername = (EditTextPreference) findPreference(getString(R.string.pref_turn_username_key)); EditTextPreference turnUsername = (EditTextPreference) findPreference(getString(R.string.pref_turn_username_key));
EditTextPreference turnPassword = (EditTextPreference) findPreference(getString(R.string.pref_turn_passwd_key)); EditTextPreference turnPassword = (EditTextPreference) findPreference(getString(R.string.pref_turn_passwd_key));
turnUsername.setEnabled(mPrefs.isTurnEnabled()); turnUsername.setEnabled(mPrefs.isTurnEnabled());
@ -1046,7 +1046,7 @@ public class SettingsFragment extends PreferencesListFragment {
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
mPrefs.setStunServer(newValue.toString()); mPrefs.setStunServer(newValue.toString());
preference.setSummary(newValue.toString()); preference.setSummary(newValue.toString());
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key)); CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
turn.setEnabled(mPrefs.getStunServer() != null); turn.setEnabled(mPrefs.getStunServer() != null);
return true; return true;
@ -1072,7 +1072,7 @@ public class SettingsFragment extends PreferencesListFragment {
return true; return true;
} }
}); });
findPreference(getString(R.string.pref_turn_username_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_turn_username_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@ -1081,7 +1081,7 @@ public class SettingsFragment extends PreferencesListFragment {
return true; return true;
} }
}); });
findPreference(getString(R.string.pref_turn_passwd_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_turn_passwd_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@ -1202,7 +1202,7 @@ public class SettingsFragment extends PreferencesListFragment {
return true; return true;
} }
}); });
findPreference(getString(R.string.pref_android_app_settings_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() { findPreference(getString(R.string.pref_android_app_settings_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
@ -1253,7 +1253,6 @@ public class SettingsFragment extends PreferencesListFragment {
if (LinphoneActivity.isInstanciated()) { if (LinphoneActivity.isInstanciated()) {
LinphoneActivity.instance().selectMenu(FragmentsAvailable.SETTINGS); LinphoneActivity.instance().selectMenu(FragmentsAvailable.SETTINGS);
} }
} }

View file

@ -110,7 +110,7 @@ private static AssistantActivity instance;
setContentView(R.layout.assistant); setContentView(R.layout.assistant);
initUI(); initUI();
if(getIntent().getBooleanExtra("LinkPhoneNumber",false)){ if (getIntent().getBooleanExtra("LinkPhoneNumber",false)) {
isLink = true; isLink = true;
displayCreateAccount(); displayCreateAccount();
} else { } else {

View file

@ -212,6 +212,8 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
createAccount.setText(getResources().getString(R.string.link_account)); createAccount.setText(getResources().getString(R.string.link_account));
assisstantTitle.setText(getResources().getString(R.string.link_account)); assisstantTitle.setText(getResources().getString(R.string.link_account));
} }
accountCreator.setLanguage(Locale.getDefault().toLanguageTag());
addUsernameHandler(usernameEdit, null); addUsernameHandler(usernameEdit, null);
createAccount.setEnabled(true); createAccount.setEnabled(true);
@ -297,7 +299,11 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
} }
case R.id.assistant_create: { case R.id.assistant_create: {
accountCreator.isAccountUsed(); createAccount.setEnabled(false);
if (linkAccount)
addAlias();
else
accountCreator.isAccountUsed();
break; break;
} }
} }
@ -322,6 +328,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
if (isOk) { if (isOk) {
accountCreator.linkPhoneNumberWithAccount(); accountCreator.linkPhoneNumberWithAccount();
} else { } else {
createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext());
LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForStatus(status)); LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForStatus(status));
} }
@ -566,6 +573,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
, LinphoneUtils.getCountryCode(dialCode), false); , LinphoneUtils.getCountryCode(dialCode), false);
} }
} else { } else {
createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext());
} }
} }
@ -602,6 +610,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
accountCreator.recoverPhoneAccount(); // Resend SMS accountCreator.recoverPhoneAccount(); // Resend SMS
} }
} else { } else {
createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext());
} }
} }
@ -612,6 +621,7 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
AssistantActivity.instance().displayAssistantCodeConfirm(getUsername() AssistantActivity.instance().displayAssistantCodeConfirm(getUsername()
, dialCode.getText().toString() , phoneNumberEdit.getText().toString(), false); , dialCode.getText().toString() , phoneNumberEdit.getText().toString(), false);
} else { } else {
createAccount.setEnabled(true);
//SMS error //SMS error
LinphoneUtils.displayErrorAlert(getString(R.string.request_failed), getContext()); LinphoneUtils.displayErrorAlert(getString(R.string.request_failed), getContext());
} }
@ -624,10 +634,12 @@ public class CreateAccountFragment extends Fragment implements CompoundButton.On
@Override @Override
public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator ac, Status status) { public void onAccountCreatorIsPhoneNumberUsed(LinphoneAccountCreator ac, Status status) {
if (status.equals(Status.PhoneNumberUsedAccount) || status.equals(Status.PhoneNumberUsedAlias)) { if (status.equals(Status.PhoneNumberUsedAccount) || status.equals(Status.PhoneNumberUsedAlias)) {
if (accountCreator.getPhoneNumber().compareTo(accountCreator.getUsername()) == 0) if (accountCreator.getPhoneNumber().compareTo(accountCreator.getUsername()) == 0) {
accountCreator.isAccountActivated(); accountCreator.isAccountActivated();
else } else {
createAccount.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext());
}
} else { } else {
accountCreator.isAccountActivated(); accountCreator.isAccountActivated();
} }

View file

@ -44,6 +44,9 @@ import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import java.util.Locale;
/** /**
* @author Sylvain Berfini * @author Sylvain Berfini
*/ */
@ -146,6 +149,8 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
passwordLayout.setVisibility(View.VISIBLE); passwordLayout.setVisibility(View.VISIBLE);
} }
accountCreator.setLanguage(Locale.getDefault().toLanguageTag());
addPhoneNumberHandler(dialCode, null); addPhoneNumberHandler(dialCode, null);
addPhoneNumberHandler(phoneNumberEdit, null); addPhoneNumberHandler(phoneNumberEdit, null);
@ -166,9 +171,11 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
public void linphoneLogIn() { public void linphoneLogIn() {
if (login.getText() == null || login.length() == 0 || password.getText() == null || password.length() == 0) { if (login.getText() == null || login.length() == 0 || password.getText() == null || password.length() == 0) {
LinphoneUtils.displayErrorAlert(getString(R.string.first_launch_no_login_password), getContext()); LinphoneUtils.displayErrorAlert(getString(R.string.first_launch_no_login_password), getContext());
apply.setEnabled(true);
return; return;
} }
AssistantActivity.instance().linphoneLogIn(login.getText().toString(), password.getText().toString(), null, null, getResources().getBoolean(R.bool.assistant_account_validation_mandatory)); AssistantActivity.instance().linphoneLogIn(login.getText().toString(), password.getText().toString(), null, null, getResources().getBoolean(R.bool.assistant_account_validation_mandatory));
apply.setEnabled(true);
} }
private LinphoneAccountCreator.Status getPhoneNumberStatus() { private LinphoneAccountCreator.Status getPhoneNumberStatus() {
@ -213,6 +220,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
switch(id) { switch(id) {
case R.id.assistant_apply: { case R.id.assistant_apply: {
apply.setEnabled(false);
if (recoverAccount) { if (recoverAccount) {
recoverAccount(); recoverAccount();
} else { } else {
@ -243,10 +251,12 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
if (isOk) { if (isOk) {
accountCreator.recoverPhoneAccount(); accountCreator.recoverPhoneAccount();
} else { } else {
apply.setEnabled(true);
LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext()); LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForStatus(status), getContext());
LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForStatus(status)); LinphoneUtils.displayError(isOk, phoneNumberError, LinphoneUtils.errorForStatus(status));
} }
} else { } else {
apply.setEnabled(true);
LinphoneUtils.displayErrorAlert(getString(R.string.assistant_create_account_part_1), getContext()); LinphoneUtils.displayErrorAlert(getString(R.string.assistant_create_account_part_1), getContext());
} }
} }
@ -337,7 +347,6 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
@Override @Override
public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) { public void onAccountCreatorIsAccountLinked(LinphoneAccountCreator accountCreator, LinphoneAccountCreator.Status status) {
} }
@Override @Override

@ -1 +1 @@
Subproject commit 1faa826dea91566eb7598cd34873017753e2b8ed Subproject commit 3e7b6b90b5f5c70847b55b406221cd27c8ea307f