diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java index bbf9c5653..4a3577dfa 100644 --- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java +++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java @@ -1665,4 +1665,14 @@ public class LinphonePreferences { public boolean useBasicChatRoomFor1To1() { return getConfig().getBool("app", "prefer_basic_chat_room", false); } + + // 0 is download all, -1 is disable feature, else size is bytes + public int getAutoDownloadFileMaxSize() { + return getLc().getMaxSizeForAutoDownloadIncomingFiles(); + } + + // 0 is download all, -1 is disable feature, else size is bytes + public void setAutoDownloadFileMaxSize(int size) { + getLc().setMaxSizeForAutoDownloadIncomingFiles(size); + } } diff --git a/app/src/main/java/org/linphone/settings/SettingsFragment.java b/app/src/main/java/org/linphone/settings/SettingsFragment.java index f9956c839..686e20025 100644 --- a/app/src/main/java/org/linphone/settings/SettingsFragment.java +++ b/app/src/main/java/org/linphone/settings/SettingsFragment.java @@ -483,8 +483,8 @@ public class SettingsFragment extends PreferencesListFragment { } private void initLimeEncryptionPreference(ListPreference pref) { - List entries = new ArrayList(); - List values = new ArrayList(); + List entries = new ArrayList<>(); + List values = new ArrayList<>(); entries.add(getString(R.string.lime_encryption_entry_disabled)); values.add(LimeState.Disabled.toString()); @@ -512,6 +512,20 @@ public class SettingsFragment extends PreferencesListFragment { pref.setValue(lime.toString()); } + private void initAutoDownloadPolicyPreference(ListPreference pref) { + int max_size = mPrefs.getAutoDownloadFileMaxSize(); + if (max_size == -1) { + pref.setSummary(getString(R.string.pref_auto_download_disabled)); + pref.setValue(getString(R.string.pref_auto_download_policy_disabled_key)); + } else if (max_size == 0) { + pref.setSummary(getString(R.string.pref_auto_download_always)); + pref.setValue(getString(R.string.pref_auto_download_policy_always_key)); + } else { + pref.setSummary(getString(R.string.pref_auto_download_under_size)); + pref.setValue(getString(R.string.pref_auto_download_policy_size_key)); + } + } + private static void setListPreferenceValues(ListPreference pref, List entries, List values) { CharSequence[] contents = new CharSequence[entries.size()]; entries.toArray(contents); @@ -1100,6 +1114,10 @@ public class SettingsFragment extends PreferencesListFragment { private void initChatSettings() { setPreferenceDefaultValueAndSummary(R.string.pref_image_sharing_server_key, mPrefs.getSharingPictureServerUrl()); initLimeEncryptionPreference((ListPreference) findPreference(getString(R.string.pref_use_lime_encryption_key))); + initAutoDownloadPolicyPreference((ListPreference) findPreference(getString(R.string.pref_auto_download_policy_key))); + int max_size = mPrefs.getAutoDownloadFileMaxSize(); + setPreferenceDefaultValueAndSummary(R.string.pref_auto_download_max_size_key, String.valueOf(max_size)); + findPreference(getString(R.string.pref_auto_download_max_size_key)).setEnabled(max_size > 0); if (Version.sdkStrictlyBelow(Version.API26_O_80)) { findPreference(getString(R.string.pref_android_app_notif_settings_key)).setLayoutResource(R.layout.hidden); } @@ -1156,7 +1174,33 @@ public class SettingsFragment extends PreferencesListFragment { i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); context.startActivity(i); + return true; } + } + }); + + findPreference(getString(R.string.pref_auto_download_policy_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + String value = (String)newValue; + int size = Integer.valueOf(value); + mPrefs.setAutoDownloadFileMaxSize(size); + initAutoDownloadPolicyPreference((ListPreference) findPreference(getString(R.string.pref_auto_download_policy_key))); + setPreferenceDefaultValueAndSummary(R.string.pref_auto_download_max_size_key, String.valueOf(size)); + findPreference(getString(R.string.pref_auto_download_max_size_key)).setEnabled(size > 0); + return true; + } + }); + + findPreference(getString(R.string.pref_auto_download_max_size_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + String value = (String)newValue; + int size = Integer.valueOf(value); + mPrefs.setAutoDownloadFileMaxSize(size); + preference.setSummary(String.valueOf(size)); + preference.setEnabled(size > 0); + initAutoDownloadPolicyPreference((ListPreference) findPreference(getString(R.string.pref_auto_download_policy_key))); return true; } }); diff --git a/app/src/main/res/values/non_localizable_strings.xml b/app/src/main/res/values/non_localizable_strings.xml index 300b1fcba..195138278 100644 --- a/app/src/main/res/values/non_localizable_strings.xml +++ b/app/src/main/res/values/non_localizable_strings.xml @@ -116,6 +116,16 @@ pref_codec_bitrate_limit_key pref_adaptive_rate_control_key pref_echo_tester_key + pref_auto_download_policy_key + pref_auto_download_max_size_key + -1 + 0 + 10000000 + + @string/pref_auto_download_policy_disabled_key + @string/pref_auto_download_policy_always_key + @string/pref_auto_download_policy_size_key + push_reg_id_key push_sender_id_key diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c11dc9af..79c6a1292 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -425,6 +425,16 @@ Mandatory Preferred LIME requires ZRTP encryption.\nBy activating LIME you automatically activate ZRTP media encryption. + Auto download incoming files policy + Max size in bytes to auto download incoming files + + @string/pref_auto_download_disabled + @string/pref_auto_download_always + @string/pref_auto_download_under_size + + Never + Always + If lighter than given size (see below setting) Network diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 29f70abbd..c383430a0 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,453 +1,466 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:key="@string/pref_sipaccounts_key" + android:persistent="false"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + -