From c3c2ce4ee34e7906bf60b5a924e1b7487933b8d4 Mon Sep 17 00:00:00 2001 From: Paul Akhamiogu Date: Mon, 6 Sep 2021 22:25:38 +0100 Subject: [PATCH] feat: add settings option to customise the MMS file size limit --- .../activities/SettingsActivity.kt | 30 ++++++++++++++--- .../smsmessenger/activities/ThreadActivity.kt | 4 +-- .../smsmessenger/extensions/Context.kt | 12 +++++++ .../smsmessenger/helpers/Config.kt | 4 +++ .../smsmessenger/helpers/Constants.kt | 9 ++++- app/src/main/res/layout/activity_settings.xml | 33 +++++++++++++++++++ app/src/main/res/values-cs/strings.xml | 8 +++++ app/src/main/res/values-da/strings.xml | 8 +++++ app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 8 +++++ app/src/main/res/values-es/strings.xml | 8 +++++ app/src/main/res/values-fi/strings.xml | 8 +++++ app/src/main/res/values-fr/strings.xml | 8 +++++ app/src/main/res/values-id/strings.xml | 9 +++++ app/src/main/res/values-it/strings.xml | 8 +++++ app/src/main/res/values-ja/strings.xml | 8 +++++ app/src/main/res/values-lt/strings.xml | 8 +++++ app/src/main/res/values-ml/strings.xml | 8 +++++ app/src/main/res/values-nl/strings.xml | 8 +++++ app/src/main/res/values-pl/strings.xml | 8 +++++ app/src/main/res/values-pt/strings.xml | 8 +++++ app/src/main/res/values-ru/strings.xml | 8 +++++ app/src/main/res/values-sk/strings.xml | 8 +++++ app/src/main/res/values-tr/strings.xml | 8 +++++ app/src/main/res/values-uk/strings.xml | 8 +++++ app/src/main/res/values-zh-rCN/strings.xml | 8 +++++ app/src/main/res/values/strings.xml | 8 +++++ 27 files changed, 246 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt index 96f7f99e..ab012e2f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt @@ -14,12 +14,10 @@ import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.extensions.config import com.simplemobiletools.smsmessenger.extensions.getLockScreenVisibilityText -import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_NOTHING -import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_SENDER -import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_SENDER_MESSAGE -import com.simplemobiletools.smsmessenger.helpers.refreshMessages -import kotlinx.android.synthetic.main.activity_settings.* +import com.simplemobiletools.smsmessenger.extensions.getMMSFileLimitText +import com.simplemobiletools.smsmessenger.helpers.* import java.util.* +import kotlinx.android.synthetic.main.activity_settings.* class SettingsActivity : SimpleActivity() { private var blockedNumbersAtPause = -1 @@ -42,6 +40,7 @@ class SettingsActivity : SimpleActivity() { setupShowCharacterCounter() setupEnableDeliveryReports() setupLockScreenVisibility() + setupMMSFileSizeLimit() updateTextColors(settings_scrollview) if (blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()) { @@ -155,4 +154,25 @@ class SettingsActivity : SimpleActivity() { } } } + + private fun setupMMSFileSizeLimit() { + settings_mms_file_size_limit.text = getMMSFileLimitText(config.mmsFileSizeLimit) + settings_mms_file_size_limit_holder.setOnClickListener { + val items = arrayListOf( + RadioItem(1, getString(R.string.mms_file_size_limit_100kb), FILE_SIZE_100_KB), + RadioItem(2, getString(R.string.mms_file_size_limit_200kb), FILE_SIZE_200_KB), + RadioItem(3, getString(R.string.mms_file_size_limit_300kb), FILE_SIZE_300_KB), + RadioItem(4, getString(R.string.mms_file_size_limit_600kb), FILE_SIZE_600_KB), + RadioItem(5, getString(R.string.mms_file_size_limit_1000kb), FILE_SIZE_1000_KB), + RadioItem(6, getString(R.string.mms_file_size_limit_2000kb), FILE_SIZE_2000_KB), + RadioItem(7, getString(R.string.mms_file_size_limit_none), FILE_SIZE_NONE), + ) + + val checkedItemId = items.find { it.value == config.mmsFileSizeLimit }?.id ?: 7 + RadioGroupDialog(this@SettingsActivity, items, checkedItemId) { + config.mmsFileSizeLimit = it as Long + settings_mms_file_size_limit.text = getMMSFileLimitText(config.mmsFileSizeLimit) + } + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 702a3f15..23a6ea9b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -602,12 +602,12 @@ class ThreadActivity : SimpleActivity() { val attachmentView = addAttachmentView(originalUriString, uri) val mimeType = contentResolver.getType(uri) ?: return - if (mimeType.isImageMimeType()) { + if (mimeType.isImageMimeType() && config.mmsFileSizeLimit != FILE_SIZE_NONE) { val selection = attachmentSelections[originalUriString] attachmentSelections[originalUriString] = selection!!.copy(isPending = true) checkSendMessageAvailability() attachmentView.thread_attachment_progress.beVisible() - imageCompressor.compressImage(uri, IMAGE_COMPRESS_SIZE) { compressedUri -> + imageCompressor.compressImage(uri, config.mmsFileSizeLimit) { compressedUri -> runOnUiThread { if (compressedUri != null) { attachmentSelections[originalUriString] = AttachmentSelection(compressedUri, false) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index cb55e7c8..f9e1fa1e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -764,3 +764,15 @@ fun Context.getLockScreenVisibilityText(type: Int) = getString( else -> R.string.nothing } ) + +fun Context.getMMSFileLimitText(size: Long) = getString( + when (size) { + FILE_SIZE_100_KB -> R.string.mms_file_size_limit_100kb + FILE_SIZE_200_KB -> R.string.mms_file_size_limit_200kb + FILE_SIZE_300_KB -> R.string.mms_file_size_limit_300kb + FILE_SIZE_600_KB -> R.string.mms_file_size_limit_600kb + FILE_SIZE_1000_KB -> R.string.mms_file_size_limit_1000kb + FILE_SIZE_2000_KB -> R.string.mms_file_size_limit_2000kb + else -> R.string.mms_file_size_limit_none + } +) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt index e284b832..c829383a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt @@ -25,4 +25,8 @@ class Config(context: Context) : BaseConfig(context) { var lockScreenVisibilitySetting: Int get() = prefs.getInt(LOCK_SCREEN_VISIBILITY, LOCK_SCREEN_SENDER_MESSAGE) set(lockScreenVisibilitySetting) = prefs.edit().putInt(LOCK_SCREEN_VISIBILITY, lockScreenVisibilitySetting).apply() + + var mmsFileSizeLimit: Long + get() = prefs.getLong(MMS_FILE_SIZE_LIMIT, FILE_SIZE_NONE) + set(mmsFileSizeLimit) = prefs.edit().putLong(MMS_FILE_SIZE_LIMIT, mmsFileSizeLimit).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt index 820f8452..355eac22 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -15,6 +15,7 @@ const val NOTIFICATION_CHANNEL = "simple_sms_messenger" const val SHOW_CHARACTER_COUNTER = "show_character_counter" const val LOCK_SCREEN_VISIBILITY = "lock_screen_visibility" const val ENABLE_DELIVERY_REPORTS = "enable_delivery_reports" +const val MMS_FILE_SIZE_LIMIT = "mms_file_size_limit" private const val PATH = "com.simplemobiletools.smsmessenger.action." const val MARK_AS_READ = PATH + "mark_as_read" @@ -33,7 +34,13 @@ const val LOCK_SCREEN_SENDER_MESSAGE = 1 const val LOCK_SCREEN_SENDER = 2 const val LOCK_SCREEN_NOTHING = 3 -const val IMAGE_COMPRESS_SIZE = 1_048_576L +const val FILE_SIZE_NONE = -1L +const val FILE_SIZE_100_KB = 102_400L +const val FILE_SIZE_200_KB = 204_800L +const val FILE_SIZE_300_KB = 307_200L +const val FILE_SIZE_600_KB = 614_400L +const val FILE_SIZE_1000_KB = 1_048_576L +const val FILE_SIZE_2000_KB = 2_097_152L fun refreshMessages() { EventBus.getDefault().post(Events.RefreshMessages()) diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 859fdf00..7e41cc22 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -250,5 +250,38 @@ tools:text="@string/sender_and_message" /> + + + + + + + + diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 37651ec0..9da1f106 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Proč aplikace vyžaduje přístup k internetu? diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index d9067fb0..f8dd2ace 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Hvorfor kræver appen adgang til internettet? diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d7e5e614..3151dca1 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -50,6 +50,7 @@ Sender only Enable delivery reports + Warum benötigt diese App Internetzugriff? Leider ist dies nötig, um MMS-Anhänge zu versenden. Es wäre ein großer Nachteil gegenüber anderen Apps, wenn keine MMS versendet werden könnten, also haben wir uns für diesen Weg entschieden. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 73901649..003bee2d 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -49,6 +49,14 @@ Αποστολέας και μήνυμα Αποστολέας μόνο Ενεργοποίηση αναφορών παράδοσης + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Γιατί η εφαρμογή απαιτεί πρόσβαση στο Internet; diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0f2ec0f6..eb36c284 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit ¿Por qué la aplicación requiere acceso a internet? diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 3f6b221f..97c8e7be 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Miksi sovellus vaatii Internet-yhteyden? diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index acf8de23..1dbba893 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Pourquoi cette application a besoin d\'un accès à internet ? diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 0db16d26..bb6352fc 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -49,6 +49,15 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit + Mengapa aplikasi membutuhkan akses ke internet? diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b6201852..6b927871 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -49,6 +49,14 @@ Mittente e messaggio Solo mittente Abilita conferma di consegna + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Perché l\'applicazione richiede l\'accesso ad internet? diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8c5071ec..8f7600d4 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit なぜアプリ使用にインターネットへのアクセスが必要なのですか? diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index ea039ad8..8c6fbb3a 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Why does the app require access to the internet? diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 366149ef..7b60f354 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit അപ്ലിക്കേഷന് ഇന്റർനെറ്റിലേക്ക് ആവശ്യമായി വരുന്നത് എന്തുകൊണ്ട്? diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 0f9e313a..854fd90e 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -49,6 +49,14 @@ Afzender en bericht Alleen afzender Bezorgingsrapporten inschakelen + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Waarom heeft deze app toegang nodig tot het internet? diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 7bc60f8a..8ecee655 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -51,6 +51,14 @@ Nadawca i treść Tylko nadawca Włącz raporty doręczeń + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Dlaczego aplikacja wymaga dostępu do Internetu? diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index f6cf255b..3df4f1cf 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Porque é que a aplicação necessita de aceder à Internet? diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f6944577..94533e34 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -51,6 +51,14 @@ Отправитель и сообщение Только отправитель Использовать отчёты о доставке + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Почему приложение требует доступ к интернету? diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index f1092bb8..fc755023 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -51,6 +51,14 @@ Odosielateľ a správa Iba odosielateľ Povoliť správy o doručení + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Prečo vyžaduje apka prístup na internet? diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index f7a3224e..96b87af9 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Uygulama neden internete erişim gerektiriyor? diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index b0a239d0..d092defa 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Чому додаток потрубує доступу до інтернету? diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b6542e07..43bfb5af 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit 为什么该应用需要访问互联网? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a85b6837..4508764b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,6 +49,14 @@ Sender and message Sender only Enable delivery reports + MMS image size limit + 100KB + 200KB + 300KB + 600KB + 1000KB + 2000KB + No limit Why does the app require access to the internet?