diff --git a/res/values/strings.xml b/res/values/strings.xml index 034918a648..4b6381f2e2 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -374,7 +374,8 @@ Enable local APNs Use APN information configured here when system APN information is unavailable. MMSC URL (Required) - MMS Proxy (Optional) + MMS Proxy Host (Optional) + MMS Proxy Port (Optional) diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index a853df6857..b4fd3ad2fa 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -152,8 +152,13 @@ android:dependency="pref_use_local_apns" /> + + diff --git a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java index 7470d3e239..b63fb178f2 100644 --- a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java +++ b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java @@ -77,7 +77,8 @@ public class ApplicationPreferencesActivity extends SherlockPreferenceActivity { public static final String USE_LOCAL_MMS_APNS_PREF = "pref_use_local_apns"; public static final String MMSC_HOST_PREF = "pref_apn_mmsc_host"; - public static final String MMSC_PROXY_PREF = "pref_apn_mms_proxy"; + public static final String MMSC_PROXY_HOST_PREF = "pref_apn_mms_proxy"; + public static final String MMSC_PROXY_PORT_PREF = "pref_apn_mms_proxy_port"; @Override protected void onCreate(Bundle icicle) { @@ -144,38 +145,31 @@ public class ApplicationPreferencesActivity extends SherlockPreferenceActivity { return false; } - + + private void initializeEditTextSummary(final EditTextPreference preference) { + if (preference.getText() == null) { + preference.setSummary("Not set"); + } else { + preference.setSummary(preference.getText()); + } + + preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference pref, Object newValue) { + preference.setSummary(newValue == null ? "Not set" : (String)newValue); + return true; + } + }); + } + private void initializeEditTextSummaries() { - final EditTextPreference mmscUrlPreference = (EditTextPreference)this.findPreference(MMSC_HOST_PREF); - final EditTextPreference mmsProxyPreference = (EditTextPreference)this.findPreference(MMSC_PROXY_PREF); - - if (mmscUrlPreference.getText() == null) { - mmscUrlPreference.setSummary("Not set"); - } else { - mmscUrlPreference.setSummary(mmscUrlPreference.getText()); - } - - if (mmsProxyPreference.getText() == null) { - mmsProxyPreference.setSummary("Not set"); - } else { - mmsProxyPreference.setSummary(mmsProxyPreference.getText()); - } - - mmscUrlPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - mmscUrlPreference.setSummary(newValue == null ? "Not set" : (String)newValue); - return true; - } - }); - - mmsProxyPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - mmsProxyPreference.setSummary(newValue == null ? "Not set" : (String)newValue); - return true; - } - }); + final EditTextPreference mmscUrlPreference = (EditTextPreference)this.findPreference(MMSC_HOST_PREF); + final EditTextPreference mmsProxyHostPreference = (EditTextPreference)this.findPreference(MMSC_PROXY_HOST_PREF); + final EditTextPreference mmsProxyPortPreference = (EditTextPreference)this.findPreference(MMSC_PROXY_PORT_PREF); + + initializeEditTextSummary(mmscUrlPreference); + initializeEditTextSummary(mmsProxyHostPreference); + initializeEditTextSummary(mmsProxyPortPreference); } private void initializeIdentitySelection() { diff --git a/src/org/thoughtcrime/securesms/mms/MmsCommunication.java b/src/org/thoughtcrime/securesms/mms/MmsCommunication.java index 184042b3a2..d856af16dd 100644 --- a/src/org/thoughtcrime/securesms/mms/MmsCommunication.java +++ b/src/org/thoughtcrime/securesms/mms/MmsCommunication.java @@ -63,9 +63,10 @@ public class MmsCommunication { if (mmsc == null || !mmsc.startsWith("http")) throw new ApnUnavailableException("Malformed locally configured MMSC: " + mmsc); - String proxy = preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_PREF, null); + String proxy = preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_HOST_PREF, null); + String port = preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_PORT_PREF, null); - return new MmsConnectionParameters(mmsc, proxy, null); + return new MmsConnectionParameters(mmsc, proxy, port); } throw new ApnUnavailableException("No locally configured parameters available"); @@ -180,6 +181,9 @@ public class MmsCommunication { } public String getProxy() { + if (!hasProxy()) + return null; + return proxy; }