Merge branch 'feature/auto_download_incoming_file_transfer_messages' into feature/release-4.1

This commit is contained in:
Sylvain Berfini 2018-11-27 16:44:15 +01:00
commit d1f7a51cf5
5 changed files with 508 additions and 421 deletions

View file

@ -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);
}
}

View file

@ -483,8 +483,8 @@ public class SettingsFragment extends PreferencesListFragment {
}
private void initLimeEncryptionPreference(ListPreference pref) {
List<CharSequence> entries = new ArrayList<CharSequence>();
List<CharSequence> values = new ArrayList<CharSequence>();
List<CharSequence> entries = new ArrayList<>();
List<CharSequence> 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<CharSequence> entries, List<CharSequence> 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;
}
});

View file

@ -116,6 +116,16 @@
<string name="pref_codec_bitrate_limit_key">pref_codec_bitrate_limit_key</string>
<string name="pref_adaptive_rate_control_key">pref_adaptive_rate_control_key</string>
<string name="pref_echo_tester_key">pref_echo_tester_key</string>
<string name="pref_auto_download_policy_key">pref_auto_download_policy_key</string>
<string name="pref_auto_download_max_size_key">pref_auto_download_max_size_key</string>
<string name="pref_auto_download_policy_disabled_key">-1</string>
<string name="pref_auto_download_policy_always_key">0</string>
<string name="pref_auto_download_policy_size_key">10000000</string>
<string-array name="pref_auto_download_policy_entries_values">
<item>@string/pref_auto_download_policy_disabled_key</item>
<item>@string/pref_auto_download_policy_always_key</item>
<item>@string/pref_auto_download_policy_size_key</item>
</string-array>
<string name="push_reg_id_key">push_reg_id_key</string>
<string name="push_sender_id_key">push_sender_id_key</string>

View file

@ -425,6 +425,16 @@
<string name="lime_encryption_entry_mandatory">Mandatory</string>
<string name="lime_encryption_entry_preferred">Preferred</string>
<string name="lime_encryption_enable_zrtp">LIME requires ZRTP encryption.\nBy activating LIME you automatically activate ZRTP media encryption.</string>
<string name="pref_auto_download_policy_title">Auto download incoming files policy</string>
<string name="pref_auto_download_max_size_title">Max size in bytes to auto download incoming files</string>
<string-array name="pref_auto_download_policy_entries_labels">
<item>@string/pref_auto_download_disabled</item>
<item>@string/pref_auto_download_always</item>
<item>@string/pref_auto_download_under_size</item>
</string-array>
<string name="pref_auto_download_disabled">Never</string>
<string name="pref_auto_download_always">Always</string>
<string name="pref_auto_download_under_size">If lighter than given size (see below setting)</string>
<!-- Network settings -->
<string name="pref_network_title">Network</string>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- DO NOT PUT A PreferenceCategory INSIDE ANOTHER ONE EVER ! -->
<!-- It will trigger [PreferencesListFragment] addPreferencesFromResource TargetInvocationException error -->
@ -259,6 +258,19 @@
android:inputType="textUri"
android:persistent="false"/>
<ListPreference
android:title="@string/pref_auto_download_policy_title"
android:key="@string/pref_auto_download_policy_key"
android:entries="@array/pref_auto_download_policy_entries_labels"
android:entryValues="@array/pref_auto_download_policy_entries_values"
android:persistent="false"/>
<EditTextPreference
android:title="@string/pref_auto_download_max_size_title"
android:key="@string/pref_auto_download_max_size_key"
android:inputType="numberSigned"
android:persistent="false"/>
<Preference
android:title="@string/pref_android_app_notif_settings_title"
android:key="@string/pref_android_app_notif_settings_key"
@ -450,4 +462,5 @@
</PreferenceCategory>
</PreferenceScreen>