From 471b6349c7cedd096d686d7c84298581b7cd937e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 19 Nov 2018 12:41:45 +0100 Subject: [PATCH] Auto download of incoming file transfer messages --- .../org/linphone/LinphonePreferences.java | 10 + .../linphone/fragments/SettingsFragment.java | 48 +- .../res/values/non_localizable_strings.xml | 144 +-- app/src/main/res/values/strings.xml | 10 + app/src/main/res/xml/preferences.xml | 840 +++++++++--------- 5 files changed, 569 insertions(+), 483 deletions(-) diff --git a/app/src/main/java/org/linphone/LinphonePreferences.java b/app/src/main/java/org/linphone/LinphonePreferences.java index c3e0097eb..7598d53cf 100644 --- a/app/src/main/java/org/linphone/LinphonePreferences.java +++ b/app/src/main/java/org/linphone/LinphonePreferences.java @@ -1654,4 +1654,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/fragments/SettingsFragment.java b/app/src/main/java/org/linphone/fragments/SettingsFragment.java index f233d9175..748e331b2 100644 --- a/app/src/main/java/org/linphone/fragments/SettingsFragment.java +++ b/app/src/main/java/org/linphone/fragments/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); @@ -1095,6 +1109,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); } @@ -1151,7 +1169,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 53e5e21fd..ea93e305e 100644 --- a/app/src/main/res/values/non_localizable_strings.xml +++ b/app/src/main/res/values/non_localizable_strings.xml @@ -1,16 +1,16 @@ - + false - dummy subject + dummy subject pref_disable_account_key pref_nb_accounts_extra pref_default_account - pref_tunnel_key + pref_tunnel_key pref_tunnel_mode_key disabled 3G_only @@ -39,7 +39,7 @@ pref_add_account_key pref_in_app_store_key pref_video_key - pref_video_codecs_key + pref_video_codecs_key pref_transport_key pref_transport_udp_key @@ -48,73 +48,83 @@ pref_transport_use_random_ports_key pref_sip_port_key - pref_echo_canceller_calibration_key - pref_prefix_key - pref_proxy_key - pref_domain_key - pref_passwd_key - pref_username_key - pref_auth_userid_key - pref_wizard_key - pref_activated_key - pref_debug_key - pref_java_debug_key - first_launch_succeeded_once_key + pref_echo_canceller_calibration_key + pref_prefix_key + pref_proxy_key + pref_domain_key + pref_passwd_key + pref_username_key + pref_auth_userid_key + pref_wizard_key + pref_activated_key + pref_debug_key + pref_java_debug_key + first_launch_succeeded_once_key - pref_wifi_only_key + pref_wifi_only_key pref_doze_mode_key - pref_overlay_key - pref_video_use_front_camera_key - pref_video_codec_h263_key - pref_video_codec_mpeg4_key - pref_video_codec_h264_key - pref_video_automatically_accept_video_key - pref_video_initiate_call_with_video_key - pref_video_enable_key + pref_overlay_key + pref_video_use_front_camera_key + pref_video_codec_h263_key + pref_video_codec_mpeg4_key + pref_video_codec_h264_key + pref_video_automatically_accept_video_key + pref_video_initiate_call_with_video_key + pref_video_enable_key pref_video_preset_key pref_preferred_video_size_key pref_preferred_video_fps_key pref_bandwidth_limit_key - pref_animation_enable_key - pref_service_notification_key - pref_escape_plus_key - pref_friendlist_subscribe_key - pref_link_account_key - pref_proxy_push_notif_key - pref_echo_cancellation_key - pref_autostart_key - Outbound proxy - pref_codec_pcma_key - pref_codec_pcmu_key - pref_codec_gsm_key - pref_codec_g722_key - pref_codec_g729_key - pref_codec_amr_key - pref_codec_amrwb_key - pref_codec_ilbc_key - pref_codec_speex8_key - pref_codec_speex16_key - pref_codec_speex32_key - pref_codec_silk8_key - pref_codec_silk12_key - pref_codec_silk16_key - pref_codec_silk24_key - pref_codec_opus_key - pref_codecs_key - pref_stun_server_key - pref_ice_enable_key - pref_turn_enable_key - pref_video_codec_vp8_key - pref_media_encryption_key - none - srtp - zrtp - dtls + pref_animation_enable_key + pref_service_notification_key + pref_escape_plus_key + pref_friendlist_subscribe_key + pref_link_account_key + pref_proxy_push_notif_key + pref_echo_cancellation_key + pref_autostart_key + Outbound proxy + pref_codec_pcma_key + pref_codec_pcmu_key + pref_codec_gsm_key + pref_codec_g722_key + pref_codec_g729_key + pref_codec_amr_key + pref_codec_amrwb_key + pref_codec_ilbc_key + pref_codec_speex8_key + pref_codec_speex16_key + pref_codec_speex32_key + pref_codec_silk8_key + pref_codec_silk12_key + pref_codec_silk16_key + pref_codec_silk24_key + pref_codec_opus_key + pref_codecs_key + pref_stun_server_key + pref_ice_enable_key + pref_turn_enable_key + pref_video_codec_vp8_key + pref_media_encryption_key + none + srtp + zrtp + dtls pref_background_mode_key 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 @@ -124,15 +134,15 @@ pref_image_sharing_server_key pref_remote_provisioning_key - pref_video_port_key - pref_audio_port_key - pref_incoming_expire_key + pref_video_port_key + pref_audio_port_key + pref_incoming_expire_key pref_call_timeout_key pref_auto_answer_time_key - pref_display_name_key - pref_user_name_key - pref_expire_key + pref_display_name_key + pref_user_name_key + pref_expire_key pref_avpf_key pref_avpf_rr_interval_key @@ -203,7 +213,7 @@ VP8 SRTP ZRTP - DTLS + DTLS Debug diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b7def490e..3fbe5229d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -423,6 +423,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 5ff4dcfba..44c1d309f 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,448 +1,460 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:key="@string/pref_sipaccounts_key" + android:persistent="false"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +