feat: add settings option to customise the MMS file size limit
This commit is contained in:
parent
b317507370
commit
c3c2ce4ee3
27 changed files with 246 additions and 8 deletions
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue