Auto-download when unmetered

Stephen Paul Weber created

Change summary

src/cheogram/res/drawable/ic_wifi_24dp.xml                                   | 10 
src/main/java/eu/siacs/conversations/services/AbstractConnectionManager.java |  6 
src/main/res/values/bools.xml                                                |  2 
src/main/res/values/defaults.xml                                             |  3 
src/main/res/xml/preferences_attachments.xml                                 |  6 
5 files changed, 25 insertions(+), 2 deletions(-)

Detailed changes

src/cheogram/res/drawable/ic_wifi_24dp.xml 🔗

@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M480,840Q438,840 409,811Q380,782 380,740Q380,698 409,669Q438,640 480,640Q522,640 551,669Q580,698 580,740Q580,782 551,811Q522,840 480,840ZM254,614L170,528Q229,469 308.5,434.5Q388,400 480,400Q572,400 651.5,435Q731,470 790,530L706,614Q662,570 604,545Q546,520 480,520Q414,520 356,545Q298,570 254,614ZM84,444L0,360Q92,266 215,213Q338,160 480,160Q622,160 745,213Q868,266 960,360L876,444Q799,367 697.5,323.5Q596,280 480,280Q364,280 262.5,323.5Q161,367 84,444Z"/>
+</vector>

src/main/java/eu/siacs/conversations/services/AbstractConnectionManager.java 🔗

@@ -1,6 +1,7 @@
 package eu.siacs.conversations.services;
 
 import android.content.Context;
+import android.net.ConnectivityManager;
 import android.os.PowerManager;
 import android.os.SystemClock;
 import android.util.Log;
@@ -120,6 +121,11 @@ public class AbstractConnectionManager {
     }
 
     public long getAutoAcceptFileSize() {
+        final ConnectivityManager connectivityManager = mXmppConnectionService.getSystemService(ConnectivityManager.class);
+        final var autoAcceptUnmetered = mXmppConnectionService.getBooleanPreference("auto_accept_unmetered", R.bool.auto_accept_unmetered);
+        if (autoAcceptUnmetered && !Compatibility.isActiveNetworkMetered(connectivityManager)) {
+            return 20000000; // 20 MB
+        }
         final long autoAcceptFileSize = this.mXmppConnectionService.getLongPreference("auto_accept_file_size", R.integer.auto_accept_filesize);
         return autoAcceptFileSize <= 0 ? -1 : autoAcceptFileSize;
     }

src/main/res/values/bools.xml 🔗

@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <bool name="show_avatar_incoming_call">true</bool>
-    <bool name="send_link_previews">true</bool>
-    <bool name="compose_rich_text">true</bool>
 </resources>

src/main/res/values/defaults.xml 🔗

@@ -51,4 +51,7 @@
     <bool name="require_channel_binding">false</bool>
     <bool name="enable_quiet_hours">false</bool>
     <bool name="autojoin">true</bool>
+    <bool name="send_link_previews">true</bool>
+    <bool name="compose_rich_text">true</bool>
+    <bool name="auto_accept_unmetered">true</bool>
 </resources>

src/main/res/xml/preferences_attachments.xml 🔗

@@ -28,6 +28,12 @@
             android:key="auto_accept_file_size"
             android:title="@string/pref_automatic_download"
             app:useSimpleSummaryProvider="true" />
+        <SwitchPreferenceCompat
+            android:defaultValue="@bool/auto_accept_unmetered"
+            android:icon="@drawable/ic_wifi_24dp"
+            android:key="auto_accept_unmetered"
+            android:title="Always Accept When Unmetered"
+            android:summary="Don't use the above size limit on unmetered networks" />
     </PreferenceCategory>
     <PreferenceCategory android:title="Advanced">
         <Preference