Support granular "custom" MMS preferences.

1) Make each MMS preference an individual choice between custom
   and default.

2) Display default values.

Closes #2487

// FREEBIE
This commit is contained in:
Moxie Marlinspike
2015-02-16 20:31:44 -08:00
parent e31ddf0599
commit 534df06794
16 changed files with 543 additions and 221 deletions

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Spinner android:id="@+id/default_or_custom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/default_or_custom_entries"
android:entryValues="@array/default_or_custom_values"
android:layout_marginStart="16dip"
android:layout_marginLeft="16dip"
android:spinnerMode="dropdown"/>
<TextView android:id="@+id/default_label"
android:layout_marginLeft="18dip"
android:layout_marginRight="16dip"
android:layout_marginTop="16dip"
android:layout_marginBottom="16dip"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<EditText android:id="@+id/custom_edit"
android:layout_marginLeft="16dip"
android:layout_marginRight="16dip"
android:layout_marginTop="16dip"
android:layout_marginBottom="16dip"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

View File

@@ -202,4 +202,15 @@
<item>5</item>
<item>10</item>
</string-array>
<string-array name="default_or_custom_values" translatable="false">
<item>default</item>
<item>custom</item>
</string-array>
<string-array name="default_or_custom_entries">
<item>@string/arrays__use_default</item>
<item>@string/arrays__use_custom</item>
</string-array>
</resources>

View File

@@ -101,4 +101,9 @@
<attr name="pref_ic_advanced" format="reference" />
<attr name="app_protect_timeout_picker_color" format="reference"/>
<declare-styleable name="CustomDefaultPreference">
<attr name="custom_pref_toggle" format="string"/>
</declare-styleable>
</resources>

View File

@@ -153,6 +153,11 @@
<!-- ConversationListItem -->
<string name="ConversationListItem_key_exchange_message">Key exchange message...</string>
<!-- CustomDefaultPreference -->
<string name="CustomDefaultPreference_using_custom">Using custom: %s</string>
<string name="CustomDefaultPreference_using_default">Using default: %s</string>
<string name="CustomDefaultPreference_none">None</string>
<!-- DateUtils -->
<string name="DateUtils_now">Now</string>
@@ -691,6 +696,8 @@
<!-- arrays.xml -->
<string name="arrays__import_export">Import / export</string>
<string name="arrays__my_identity_key">My identity key</string>
<string name="arrays__use_default">Use default</string>
<string name="arrays__use_custom">Use custom</string>
<!-- plurals.xml -->
<plurals name="minutes_ago">
@@ -775,11 +782,11 @@
<string name="preferences__advanced_mms_access_point_names">Manual MMS settings</string>
<string name="preferences__enable_manual_mms">Use manual MMS settings</string>
<string name="preferences__override_system_mms_settings">Override system MMS settings with the information below.</string>
<string name="preferences__mmsc_url_required">MMSC URL (Required)</string>
<string name="preferences__mms_proxy_host_optional">MMS Proxy Host (Optional)</string>
<string name="preferences__mms_proxy_port_optional">MMS Proxy Port (Optional)</string>
<string name="preferences__mmsc_username_optional">MMSC Username (Optional)</string>
<string name="preferences__mmsc_password_optional">MMSC Password (Optional)</string>
<string name="preferences__mmsc_url">MMSC URL</string>
<string name="preferences__mms_proxy_host">MMS Proxy Host</string>
<string name="preferences__mms_proxy_port">MMS Proxy Port</string>
<string name="preferences__mmsc_username">MMSC Username</string>
<string name="preferences__mmsc_password">MMSC Password</string>
<string name="preferences__sms_delivery_reports">SMS delivery reports</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Request a delivery report for each SMS message you send</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Automatically delete older messages once a conversation thread exceeds a specified length</string>

View File

@@ -1,33 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference android:key="pref_enable_manual_mms"
android:defaultValue="false"
android:title="@string/preferences__enable_manual_mms"
android:summary="@string/preferences__override_system_mms_settings"/>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<EditTextPreference android:key="pref_apn_mmsc_host"
android:title="@string/preferences__mmsc_url_required"
android:dependency="pref_enable_manual_mms"
android:inputType="textUri" />
<org.thoughtcrime.securesms.components.CustomDefaultPreference
app:custom_pref_toggle="pref_apn_mmsc_custom_host"
android:key="pref_apn_mmsc_host"
android:title="@string/preferences__mmsc_url"
android:inputType="textUri" />
<EditTextPreference android:key="pref_apn_mms_proxy"
android:title="@string/preferences__mms_proxy_host_optional"
android:dependency="pref_enable_manual_mms"
android:inputType="textUri" />
<org.thoughtcrime.securesms.components.CustomDefaultPreference
app:custom_pref_toggle="pref_apn_mms_custom_proxy"
android:key="pref_apn_mms_proxy"
android:title="@string/preferences__mms_proxy_host"
android:inputType="textUri" />
<EditTextPreference android:key="pref_apn_mms_proxy_port"
android:title="@string/preferences__mms_proxy_port_optional"
android:dependency="pref_enable_manual_mms"
android:inputType="number" />
<org.thoughtcrime.securesms.components.CustomDefaultPreference
app:custom_pref_toggle="pref_apn_mms_custom_proxy_port"
android:key="pref_apn_mms_proxy_port"
android:title="@string/preferences__mms_proxy_port"
android:inputType="number"/>
<EditTextPreference android:key="pref_apn_mmsc_username"
android:title="@string/preferences__mmsc_username_optional"
android:dependency="pref_enable_manual_mms"
android:inputType="textNoSuggestions" />
<org.thoughtcrime.securesms.components.CustomDefaultPreference
app:custom_pref_toggle="pref_apn_mmsc_custom_username"
android:key="pref_apn_mmsc_username"
android:title="@string/preferences__mmsc_username"
android:inputType="textNoSuggestions"/>
<org.thoughtcrime.securesms.components.CustomDefaultPreference
app:custom_pref_toggle="pref_apn_mmsc_custom_password"
android:key="pref_apn_mmsc_password"
android:title="@string/preferences__mmsc_password"
android:inputType="textVisiblePassword"/>
<EditTextPreference android:key="pref_apn_mmsc_password"
android:title="@string/preferences__mmsc_password_optional"
android:dependency="pref_enable_manual_mms"
android:inputType="textVisiblePassword" />
</PreferenceScreen>