Started filling preferences wrapper

This commit is contained in:
Sylvain Berfini 2013-10-09 17:03:01 +02:00
parent 37b43c398d
commit 0d61f337d3
3 changed files with 157 additions and 15 deletions

View file

@ -27,7 +27,7 @@ public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (LinphonePreferences.instance().shouldStartAtStartup()) {
if (LinphonePreferences.instance().isAutoStartEnabled()) {
Intent lLinphoneServiceIntent = new Intent(Intent.ACTION_MAIN);
lLinphoneServiceIntent.setClass(context, LinphoneService.class);
context.startService(lLinphoneServiceIntent);;

View file

@ -1,4 +1,11 @@
package org.linphone;
import org.linphone.core.LinphoneCore.MediaEncryption;
import org.linphone.core.LinphoneCore.Transports;
import org.linphone.core.LinphoneCoreFactory;
import android.content.Context;
/*
ChatListFragment.java
Copyright (C) 2012 Belledonne Communications, Grenoble, France
@ -23,6 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
public class LinphonePreferences {
private static LinphonePreferences instance;
private Context mContext;
public static final synchronized LinphonePreferences instance() {
if (instance == null) {
@ -35,6 +43,14 @@ public class LinphonePreferences {
}
private String getString(int key) {
if (mContext == null) {
mContext = LinphoneService.instance();
}
return mContext.getString(key);
}
public boolean isFirstLaunch() {
return false;
}
@ -46,8 +62,12 @@ public class LinphonePreferences {
return false;
}
public void setRemoteProvisioningUrl(String url) {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().getConfig().setString("app", "remote_provisioning", url);
}
public String getRemoteProvisioningUrl() {
return null;
return LinphoneCoreFactory.instance().createLpConfig(LinphoneManager.getInstance().mLinphoneConfigFile).getString("app", "remote_provisioning", null);
}
public String getTunnelMode() {
@ -78,12 +98,20 @@ public class LinphonePreferences {
return null;
}
public boolean shouldStartAtStartup() {
return false;
public boolean isAutoStartEnabled() {
return LinphoneManager.getLcIfManagerNotDestroyedOrNull().getConfig().getBool("app", "auto_start", false);
}
public void setAutoStart(boolean autoStartEnabled) {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().getConfig().setBool("app", "auto_start", autoStartEnabled);
}
public String getSharingPictureServerUrl() {
return null;
return LinphoneManager.getLcIfManagerNotDestroyedOrNull().getConfig().getString("app", "sharing_server", null);
}
public void setSharingPictureServerUrl(String url) {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().getConfig().setString("app", "sharing_server", url);
}
public boolean shouldUseLinphoneToStoreChatHistory() {
@ -195,4 +223,100 @@ public class LinphonePreferences {
}
// End of Accounts
public MediaEncryption getMediaEncryption() {
return LinphoneManager.getLcIfManagerNotDestroyedOrNull().getMediaEncryption();
}
public void setMediaEncryption(MediaEncryption menc) {
if (menc == null)
return;
LinphoneManager.getLcIfManagerNotDestroyedOrNull().setMediaEncryption(menc);
}
public String getTransport() {
Transports transports = LinphoneManager.getLcIfManagerNotDestroyedOrNull().getSignalingTransportPorts();
String transport = getString(R.string.pref_transport_udp);
if (transports.tcp > 0)
transport = getString(R.string.pref_transport_tcp_key);
else if (transports.tls > 0)
transport = getString(R.string.pref_transport_tls_key);
return transport;
}
public void setTransport(String transportKey) {
if (transportKey == null)
return;
Transports transports = LinphoneManager.getLcIfManagerNotDestroyedOrNull().getSignalingTransportPorts();
if (transports.udp > 0) {
if (transportKey.equals(getString(R.string.pref_transport_tcp_key))) {
transports.tcp = transports.udp;
transports.udp = transports.tls;
} else if (transportKey.equals(getString(R.string.pref_transport_tls_key))) {
transports.tls = transports.udp;
transports.udp = transports.tcp;
}
} else if (transports.tcp > 0) {
if (transportKey.equals(getString(R.string.pref_transport_udp_key))) {
transports.udp = transports.tcp;
transports.tcp = transports.tls;
} else if (transportKey.equals(getString(R.string.pref_transport_tls_key))) {
transports.tls = transports.tcp;
transports.tcp = transports.udp;
}
} else if (transports.tls > 0) {
if (transportKey.equals(getString(R.string.pref_transport_udp_key))) {
transports.udp = transports.tls;
transports.tls = transports.tcp;
} else if (transportKey.equals(getString(R.string.pref_transport_tcp_key))) {
transports.tcp = transports.tls;
transports.tls = transports.udp;
}
}
LinphoneManager.getLcIfManagerNotDestroyedOrNull().setSignalingTransportPorts(transports);
}
public String getStunServer() {
return LinphoneManager.getLcIfManagerNotDestroyedOrNull().getStunServer();
}
public void setStunServer(String stun) {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().setStunServer(stun);
}
public String getExpire() {
return null;
}
public void setExpire(String expire) {
}
public String getSipPortIfNotRandom() {
Transports transports = LinphoneManager.getLcIfManagerNotDestroyedOrNull().getSignalingTransportPorts();
int port;
if (transports.udp > 0)
port = transports.udp;
else if (transports.tcp > 0)
port = transports.tcp;
else
port = transports.tls;
return String.valueOf(port);
}
public void setSipPortIfNotRandom(int port) {
if (port <= 0)
return;
Transports transports = LinphoneManager.getLcIfManagerNotDestroyedOrNull().getSignalingTransportPorts();
if (transports.udp > 0)
transports.udp = port;
else if (transports.tcp > 0)
transports.tcp = port;
else
transports.udp = port;
LinphoneManager.getLcIfManagerNotDestroyedOrNull().setSignalingTransportPorts(transports);
}
}

View file

@ -17,13 +17,17 @@ import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
public class SettingsFragment extends PreferencesListFragment implements EcCalibrationListener {
private LinphonePreferences mPrefs;
public SettingsFragment() {
super(R.xml.preferences);
mPrefs = LinphonePreferences.instance();
}
@Override
@ -41,6 +45,11 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
initMediaEncryptionPreference((ListPreference) findPreference(getString(R.string.pref_media_encryption_key)));
initializeTransportPreferences((ListPreference) findPreference(getString(R.string.pref_transport_key)));
findPreference(getString(R.string.pref_stun_server_key)).setSummary(mPrefs.getStunServer());
findPreference(getString(R.string.pref_image_sharing_server_key)).setSummary(mPrefs.getSharingPictureServerUrl());
findPreference(getString(R.string.pref_remote_provisioning_key)).setSummary(mPrefs.getRemoteProvisioningUrl());
findPreference(getString(R.string.pref_expire_key)).setSummary(mPrefs.getExpire());
// Add action on About button
findPreference(getString(R.string.menu_about_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
@ -54,7 +63,9 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
});
// Disable sip port choice if port is random
findPreference(getString(R.string.pref_sip_port_key)).setEnabled(!((CheckBoxPreference)findPreference(getString(R.string.pref_transport_use_random_ports_key))).isChecked());
Preference sipPort = findPreference(getString(R.string.pref_sip_port_key));
sipPort.setEnabled(!((CheckBoxPreference)findPreference(getString(R.string.pref_transport_use_random_ports_key))).isChecked());
sipPort.setSummary(mPrefs.getSipPortIfNotRandom());
if (getResources().getBoolean(R.bool.disable_all_patented_codecs_for_markets)) {
Preference prefH264 = findPreference(getString(R.string.pref_video_codec_h264_key));
@ -75,8 +86,16 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
}
}
// Sets listener for each preference to update the matching value in linphonecore
private void setListeners() {
findPreference(getString(R.string.pref_stun_server_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
mPrefs.setStunServer(newValue.toString());
preference.setSummary(newValue.toString());
return true;
}
});
}
// Read the values set in resources and hides the settings accordingly
@ -187,16 +206,12 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
}
private void initMediaEncryptionPreference(ListPreference pref) {
LinphoneCore lc = null;
try {
lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
} catch (Exception e) {}
List<CharSequence> mencEntries = new ArrayList<CharSequence>();
List<CharSequence> mencEntryValues = new ArrayList<CharSequence>();
mencEntries.add(getString(R.string.media_encryption_none));
mencEntryValues.add(getString(R.string.pref_media_encryption_key_none));
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null || getResources().getBoolean(R.bool.disable_all_security_features_for_markets)) {
setListPreferenceValues(pref, mencEntries, mencEntryValues);
return;
@ -217,6 +232,8 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
}
setListPreferenceValues(pref, mencEntries, mencEntryValues);
}
pref.setSummary(mPrefs.getMediaEncryption().toString());
}
private void initializeTransportPreferences(ListPreference pref) {
@ -232,6 +249,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
mencEntryValues.add(getString(R.string.pref_transport_tls_key));
}
setListPreferenceValues(pref, mencEntries, mencEntryValues);
pref.setSummary(mPrefs.getTransport());
}
private static void setListPreferenceValues(ListPreference pref, List<CharSequence> entries, List<CharSequence> values) {