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 @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (LinphonePreferences.instance().shouldStartAtStartup()) { if (LinphonePreferences.instance().isAutoStartEnabled()) {
Intent lLinphoneServiceIntent = new Intent(Intent.ACTION_MAIN); Intent lLinphoneServiceIntent = new Intent(Intent.ACTION_MAIN);
lLinphoneServiceIntent.setClass(context, LinphoneService.class); lLinphoneServiceIntent.setClass(context, LinphoneService.class);
context.startService(lLinphoneServiceIntent);; context.startService(lLinphoneServiceIntent);;

View file

@ -1,4 +1,11 @@
package org.linphone; 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 ChatListFragment.java
Copyright (C) 2012 Belledonne Communications, Grenoble, France 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 { public class LinphonePreferences {
private static LinphonePreferences instance; private static LinphonePreferences instance;
private Context mContext;
public static final synchronized LinphonePreferences instance() { public static final synchronized LinphonePreferences instance() {
if (instance == null) { 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() { public boolean isFirstLaunch() {
return false; return false;
} }
@ -46,8 +62,12 @@ public class LinphonePreferences {
return false; return false;
} }
public void setRemoteProvisioningUrl(String url) {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().getConfig().setString("app", "remote_provisioning", url);
}
public String getRemoteProvisioningUrl() { public String getRemoteProvisioningUrl() {
return null; return LinphoneCoreFactory.instance().createLpConfig(LinphoneManager.getInstance().mLinphoneConfigFile).getString("app", "remote_provisioning", null);
} }
public String getTunnelMode() { public String getTunnelMode() {
@ -78,12 +98,20 @@ public class LinphonePreferences {
return null; return null;
} }
public boolean shouldStartAtStartup() { public boolean isAutoStartEnabled() {
return false; 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() { 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() { public boolean shouldUseLinphoneToStoreChatHistory() {
@ -195,4 +223,100 @@ public class LinphonePreferences {
} }
// End of Accounts // 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.CheckBoxPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceScreen; import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener; import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory; import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
public class SettingsFragment extends PreferencesListFragment implements EcCalibrationListener { public class SettingsFragment extends PreferencesListFragment implements EcCalibrationListener {
private LinphonePreferences mPrefs;
public SettingsFragment() { public SettingsFragment() {
super(R.xml.preferences); super(R.xml.preferences);
mPrefs = LinphonePreferences.instance();
} }
@Override @Override
@ -41,6 +45,11 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
initMediaEncryptionPreference((ListPreference) findPreference(getString(R.string.pref_media_encryption_key))); initMediaEncryptionPreference((ListPreference) findPreference(getString(R.string.pref_media_encryption_key)));
initializeTransportPreferences((ListPreference) findPreference(getString(R.string.pref_transport_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 // Add action on About button
findPreference(getString(R.string.menu_about_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() { findPreference(getString(R.string.menu_about_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override @Override
@ -54,7 +63,9 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
}); });
// Disable sip port choice if port is random // 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)) { if (getResources().getBoolean(R.bool.disable_all_patented_codecs_for_markets)) {
Preference prefH264 = findPreference(getString(R.string.pref_video_codec_h264_key)); 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() { 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 // 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) { private void initMediaEncryptionPreference(ListPreference pref) {
LinphoneCore lc = null;
try {
lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
} catch (Exception e) {}
List<CharSequence> mencEntries = new ArrayList<CharSequence>(); List<CharSequence> mencEntries = new ArrayList<CharSequence>();
List<CharSequence> mencEntryValues = new ArrayList<CharSequence>(); List<CharSequence> mencEntryValues = new ArrayList<CharSequence>();
mencEntries.add(getString(R.string.media_encryption_none)); mencEntries.add(getString(R.string.media_encryption_none));
mencEntryValues.add(getString(R.string.pref_media_encryption_key_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)) { if (lc == null || getResources().getBoolean(R.bool.disable_all_security_features_for_markets)) {
setListPreferenceValues(pref, mencEntries, mencEntryValues); setListPreferenceValues(pref, mencEntries, mencEntryValues);
return; return;
@ -217,6 +232,8 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
} }
setListPreferenceValues(pref, mencEntries, mencEntryValues); setListPreferenceValues(pref, mencEntries, mencEntryValues);
} }
pref.setSummary(mPrefs.getMediaEncryption().toString());
} }
private void initializeTransportPreferences(ListPreference pref) { 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)); mencEntryValues.add(getString(R.string.pref_transport_tls_key));
} }
setListPreferenceValues(pref, mencEntries, mencEntryValues); setListPreferenceValues(pref, mencEntries, mencEntryValues);
pref.setSummary(mPrefs.getTransport());
} }
private static void setListPreferenceValues(ListPreference pref, List<CharSequence> entries, List<CharSequence> values) { private static void setListPreferenceValues(ListPreference pref, List<CharSequence> entries, List<CharSequence> values) {