From 90aacc2b5e3a375e64d0a1bffcc584bcc153ea40 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 20 Jul 2016 17:08:29 +0200 Subject: [PATCH] Fixes and improvements of SettingsFragment --- res/xml/preferences.xml | 514 ++++++++++-------- src/org/linphone/LinphoneActivity.java | 3 +- src/org/linphone/SettingsFragment.java | 32 +- .../RemoteProvisioningLoginActivity.java | 9 +- .../linphone/ui/PreferencesListFragment.java | 17 +- 5 files changed, 314 insertions(+), 261 deletions(-) diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 12dda11d8..d8aa6c8d0 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -1,6 +1,9 @@ + + + - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - + android:persistent="false"> - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + - - - + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -312,7 +358,7 @@ android:persistent="false"/> - + diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 42ce65a73..4c62398ad 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -429,6 +429,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta } private void changeFragment(Fragment newFragment, FragmentsAvailable newFragmentType, boolean withoutAnimation) { + FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); @@ -456,7 +457,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta fm.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } } - + transaction.replace(R.id.fragmentContainer, newFragment, newFragmentType.toString()); transaction.commit(); fm.executePendingTransactions(); diff --git a/src/org/linphone/SettingsFragment.java b/src/org/linphone/SettingsFragment.java index 605bb45ad..5ec59e13a 100644 --- a/src/org/linphone/SettingsFragment.java +++ b/src/org/linphone/SettingsFragment.java @@ -23,7 +23,6 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import org.linphone.compatibility.Compatibility; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.EcCalibratorStatus; @@ -43,6 +42,7 @@ import org.linphone.ui.PreferencesListFragment; import android.Manifest; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.media.AudioManager; import android.os.Bundle; @@ -64,6 +64,10 @@ public class SettingsFragment extends PreferencesListFragment { private LinphonePreferences mPrefs; private Handler mHandler = new Handler(); private LinphoneCoreListenerBase mListener; + + public SettingsFragment() { + super(R.xml.preferences); + } @Override public void onCreate(Bundle bundle) { @@ -71,7 +75,6 @@ public class SettingsFragment extends PreferencesListFragment { mPrefs = LinphonePreferences.instance(); removePreviousPreferencesFile(); // Required when updating the preferences order - addPreferencesFromResource(R.xml.preferences); mListener = new LinphoneCoreListenerBase() { @Override @@ -85,19 +88,19 @@ public class SettingsFragment extends PreferencesListFragment { echoCancellerCalibration.setSummary(R.string.no_echo); echoCancellation.setChecked(false); LinphonePreferences.instance().setEchoCancellation(false); - ((AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); + ((AudioManager)getActivity().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); Log.i("Set audio mode on 'Normal'"); } else if (status == EcCalibratorStatus.Done) { echoCancellerCalibration.setSummary(String.format(getString(R.string.ec_calibrated), delayMs)); echoCancellation.setChecked(true); LinphonePreferences.instance().setEchoCancellation(true); - ((AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); + ((AudioManager)getActivity().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); Log.i("Set audio mode on 'Normal'"); } else if (status == EcCalibratorStatus.Failed) { echoCancellerCalibration.setSummary(R.string.failed); echoCancellation.setChecked(true); LinphonePreferences.instance().setEchoCancellation(true); - ((AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); + ((AudioManager)getActivity().getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL); Log.i("Set audio mode on 'Normal'"); } } @@ -109,6 +112,10 @@ public class SettingsFragment extends PreferencesListFragment { } private void removePreviousPreferencesFile() { + SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit(); + editor.clear(); + editor.commit(); + File dir = new File(getActivity().getFilesDir().getAbsolutePath() + "shared_prefs"); LinphoneUtils.recursiveFileRemoval(dir); } @@ -175,7 +182,7 @@ public class SettingsFragment extends PreferencesListFragment { } if (!Version.isVideoCapable() || !LinphoneManager.getLcIfManagerNotDestroyedOrNull().isVideoSupported()) { - uncheckAndHidePreference(R.string.pref_video_enable_key); + emptyAndHidePreference(R.string.pref_video_key); } else { if (!AndroidCameraConfiguration.hasFrontCamera()) { uncheckAndHidePreference(R.string.pref_video_use_front_camera_key); @@ -188,7 +195,6 @@ public class SettingsFragment extends PreferencesListFragment { if (getResources().getBoolean(R.bool.hide_camera_settings)) { emptyAndHidePreference(R.string.pref_video_key); - hidePreference(R.string.pref_video_enable_key); } if (getResources().getBoolean(R.bool.disable_every_log)) { @@ -249,12 +255,18 @@ public class SettingsFragment extends PreferencesListFragment { private void setPreferenceDefaultValueAndSummary(int pref, String value) { if (value != null) { EditTextPreference etPref = (EditTextPreference) findPreference(getString(pref)); - etPref.setText(value); - etPref.setSummary(value); + if (etPref != null) { + etPref.setText(value); + etPref.setSummary(value); + } } } private void initTunnelSettings() { + if (!LinphoneManager.getLc().isTunnelAvailable()) { + return; + } + setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_host_key, mPrefs.getTunnelHost()); setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_port_key, String.valueOf(mPrefs.getTunnelPort())); ListPreference tunnelModePref = (ListPreference) findPreference(getString(R.string.pref_tunnel_mode_key)); @@ -580,7 +592,7 @@ public class SettingsFragment extends PreferencesListFragment { synchronized (SettingsFragment.this) { preference.setSummary(R.string.ec_calibrating); - int recordAudio = getContext().getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getContext().getPackageName()); + int recordAudio = getActivity().getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getActivity().getPackageName()); if (recordAudio == PackageManager.PERMISSION_GRANTED) { startEchoCancellerCalibration(); } else { diff --git a/src/org/linphone/assistant/RemoteProvisioningLoginActivity.java b/src/org/linphone/assistant/RemoteProvisioningLoginActivity.java index 1d5a90afe..c5d2799a7 100644 --- a/src/org/linphone/assistant/RemoteProvisioningLoginActivity.java +++ b/src/org/linphone/assistant/RemoteProvisioningLoginActivity.java @@ -20,9 +20,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import org.linphone.LinphoneManager; import org.linphone.LinphonePreferences; -import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.R; import org.linphone.core.LinphoneCore; +import org.linphone.core.LinphoneCoreListenerBase; import org.linphone.xmlrpc.XmlRpcHelper; import org.linphone.xmlrpc.XmlRpcListenerBase; @@ -32,7 +32,6 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; -import android.widget.ImageView; import android.widget.Toast; /** @@ -40,7 +39,6 @@ import android.widget.Toast; */ public class RemoteProvisioningLoginActivity extends Activity implements OnClickListener { private EditText login, password, domain; - private ImageView cancel; private Button connect; private LinphoneCoreListenerBase mListener; @@ -53,9 +51,6 @@ public class RemoteProvisioningLoginActivity extends Activity implements OnClick password = (EditText) findViewById(R.id.assistant_password); domain = (EditText) findViewById(R.id.assistant_domain); - //cancel = (ImageView) findViewById(R.id.cancel); - //cancel.setOnClickListener(this); - connect = (Button) findViewById(R.id.assistant_connect); connect.setOnClickListener(this); @@ -86,8 +81,6 @@ public class RemoteProvisioningLoginActivity extends Activity implements OnClick } private boolean storeAccount(String username, String password, String domain) { - LinphoneCore lc = LinphoneManager.getLc(); - XmlRpcHelper xmlRpcHelper = new XmlRpcHelper(); xmlRpcHelper.getRemoteProvisioningFilenameAsync(new XmlRpcListenerBase() { @Override diff --git a/src/org/linphone/ui/PreferencesListFragment.java b/src/org/linphone/ui/PreferencesListFragment.java index 635813c5a..280b3d3b8 100644 --- a/src/org/linphone/ui/PreferencesListFragment.java +++ b/src/org/linphone/ui/PreferencesListFragment.java @@ -70,7 +70,7 @@ public class PreferencesListFragment extends ListFragment { } // Must be provided - public PreferencesListFragment(){ + public PreferencesListFragment() { } @@ -123,7 +123,7 @@ public class PreferencesListFragment extends ListFragment { m.setAccessible(true); m.invoke(mPreferenceManager); } catch(Exception e) { - Log.e(e); + Log.e("[PreferencesListFragment] onStop " + e); } } @@ -136,7 +136,7 @@ public class PreferencesListFragment extends ListFragment { m.setAccessible(true); m.invoke(mPreferenceManager); } catch(Exception e) { - Log.e(e); + Log.e("[PreferencesListFragment] onDestroy " + e); } } @@ -154,7 +154,7 @@ public class PreferencesListFragment extends ListFragment { m.setAccessible(true); m.invoke(mPreferenceManager, requestCode, resultCode, data); } catch(Exception e) { - Log.e(e); + Log.e("[PreferencesListFragment] onActivityResult " + e); } } @@ -188,7 +188,7 @@ public class PreferencesListFragment extends ListFragment { PreferenceManager preferenceManager = c.newInstance(this.getActivity(), FIRST_REQUEST_CODE); return preferenceManager; } catch(Exception e) { - Log.e(e); + Log.e("[PreferencesListFragment] onCreatePreferenceManager " + e); return null; } } @@ -215,7 +215,7 @@ public class PreferencesListFragment extends ListFragment { postBindPreferences(); } }catch(Exception e){ - Log.e(e); + Log.e("[PreferencesListFragment] setPreferenceScreen " + e); } } @@ -231,7 +231,7 @@ public class PreferencesListFragment extends ListFragment { m.setAccessible(true); return (PreferenceScreen) m.invoke(mPreferenceManager); } catch(Exception e) { - Log.e(e); + Log.e("[PreferencesListFragment] getPreferenceScreen " + e); } return null; @@ -250,7 +250,7 @@ public class PreferencesListFragment extends ListFragment { PreferenceScreen prefScreen = (PreferenceScreen) m.invoke(mPreferenceManager, getActivity(), preferencesResId, getPreferenceScreen()); setPreferenceScreen(prefScreen); } catch(Exception e) { - Log.e(e); + Log.e("[PreferencesListFragment] addPreferencesFromResource " + e); } } @@ -263,6 +263,7 @@ public class PreferencesListFragment extends ListFragment { */ public Preference findPreference(CharSequence key) { if (mPreferenceManager == null) { + Log.e("[PreferencesListFragment] PreferenceManager is null !"); return null; } return mPreferenceManager.findPreference(key);