Construct import mime type based on API level
Format code.
This commit is contained in:
parent
8d306941a0
commit
29520d5a2d
1 changed files with 119 additions and 31 deletions
|
|
@ -9,9 +9,36 @@ import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import org.fossify.commons.activities.ManageBlockedNumbersActivity
|
import org.fossify.commons.activities.ManageBlockedNumbersActivity
|
||||||
import org.fossify.commons.dialogs.*
|
import org.fossify.commons.dialogs.ChangeDateTimeFormatDialog
|
||||||
import org.fossify.commons.extensions.*
|
import org.fossify.commons.dialogs.ConfirmationDialog
|
||||||
import org.fossify.commons.helpers.*
|
import org.fossify.commons.dialogs.FeatureLockedDialog
|
||||||
|
import org.fossify.commons.dialogs.RadioGroupDialog
|
||||||
|
import org.fossify.commons.dialogs.SecurityDialog
|
||||||
|
import org.fossify.commons.extensions.addLockedLabelIfNeeded
|
||||||
|
import org.fossify.commons.extensions.beGoneIf
|
||||||
|
import org.fossify.commons.extensions.beVisibleIf
|
||||||
|
import org.fossify.commons.extensions.getBlockedNumbers
|
||||||
|
import org.fossify.commons.extensions.getCustomizeColorsString
|
||||||
|
import org.fossify.commons.extensions.getFontSizeText
|
||||||
|
import org.fossify.commons.extensions.getProperPrimaryColor
|
||||||
|
import org.fossify.commons.extensions.isOrWasThankYouInstalled
|
||||||
|
import org.fossify.commons.extensions.launchPurchaseThankYouIntent
|
||||||
|
import org.fossify.commons.extensions.showErrorToast
|
||||||
|
import org.fossify.commons.extensions.toast
|
||||||
|
import org.fossify.commons.extensions.updateTextColors
|
||||||
|
import org.fossify.commons.extensions.viewBinding
|
||||||
|
import org.fossify.commons.helpers.FONT_SIZE_EXTRA_LARGE
|
||||||
|
import org.fossify.commons.helpers.FONT_SIZE_LARGE
|
||||||
|
import org.fossify.commons.helpers.FONT_SIZE_MEDIUM
|
||||||
|
import org.fossify.commons.helpers.FONT_SIZE_SMALL
|
||||||
|
import org.fossify.commons.helpers.NavigationIcon
|
||||||
|
import org.fossify.commons.helpers.PROTECTION_FINGERPRINT
|
||||||
|
import org.fossify.commons.helpers.SHOW_ALL_TABS
|
||||||
|
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||||
|
import org.fossify.commons.helpers.isNougatPlus
|
||||||
|
import org.fossify.commons.helpers.isOreoPlus
|
||||||
|
import org.fossify.commons.helpers.isPiePlus
|
||||||
|
import org.fossify.commons.helpers.isTiramisuPlus
|
||||||
import org.fossify.commons.models.RadioItem
|
import org.fossify.commons.models.RadioItem
|
||||||
import org.fossify.messages.R
|
import org.fossify.messages.R
|
||||||
import org.fossify.messages.databinding.ActivitySettingsBinding
|
import org.fossify.messages.databinding.ActivitySettingsBinding
|
||||||
|
|
@ -19,7 +46,19 @@ import org.fossify.messages.dialogs.ExportMessagesDialog
|
||||||
import org.fossify.messages.extensions.config
|
import org.fossify.messages.extensions.config
|
||||||
import org.fossify.messages.extensions.emptyMessagesRecycleBin
|
import org.fossify.messages.extensions.emptyMessagesRecycleBin
|
||||||
import org.fossify.messages.extensions.messagesDB
|
import org.fossify.messages.extensions.messagesDB
|
||||||
import org.fossify.messages.helpers.*
|
import org.fossify.messages.helpers.FILE_SIZE_100_KB
|
||||||
|
import org.fossify.messages.helpers.FILE_SIZE_1_MB
|
||||||
|
import org.fossify.messages.helpers.FILE_SIZE_200_KB
|
||||||
|
import org.fossify.messages.helpers.FILE_SIZE_2_MB
|
||||||
|
import org.fossify.messages.helpers.FILE_SIZE_300_KB
|
||||||
|
import org.fossify.messages.helpers.FILE_SIZE_600_KB
|
||||||
|
import org.fossify.messages.helpers.FILE_SIZE_NONE
|
||||||
|
import org.fossify.messages.helpers.LOCK_SCREEN_NOTHING
|
||||||
|
import org.fossify.messages.helpers.LOCK_SCREEN_SENDER
|
||||||
|
import org.fossify.messages.helpers.LOCK_SCREEN_SENDER_MESSAGE
|
||||||
|
import org.fossify.messages.helpers.MessagesImporter
|
||||||
|
import org.fossify.messages.helpers.MessagesReader
|
||||||
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
|
|
@ -27,7 +66,14 @@ class SettingsActivity : SimpleActivity() {
|
||||||
private var blockedNumbersAtPause = -1
|
private var blockedNumbersAtPause = -1
|
||||||
private var recycleBinMessages = 0
|
private var recycleBinMessages = 0
|
||||||
private val messagesFileType = "application/json"
|
private val messagesFileType = "application/json"
|
||||||
private val messageImportFileTypes = listOf("application/json", "application/xml", "text/xml", "application/octet-stream")
|
private val messageImportFileTypes = buildList {
|
||||||
|
add("application/json")
|
||||||
|
add("application/xml")
|
||||||
|
add("text/xml")
|
||||||
|
if (!isPiePlus()) {
|
||||||
|
add("application/octet-stream")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private val binding by viewBinding(ActivitySettingsBinding::inflate)
|
private val binding by viewBinding(ActivitySettingsBinding::inflate)
|
||||||
|
|
||||||
|
|
@ -42,7 +88,10 @@ class SettingsActivity : SimpleActivity() {
|
||||||
useTransparentNavigation = true,
|
useTransparentNavigation = true,
|
||||||
useTopSearchMenu = false
|
useTopSearchMenu = false
|
||||||
)
|
)
|
||||||
setupMaterialScrollListener(scrollingView = binding.settingsNestedScrollview, toolbar = binding.settingsToolbar)
|
setupMaterialScrollListener(
|
||||||
|
scrollingView = binding.settingsNestedScrollview,
|
||||||
|
toolbar = binding.settingsToolbar
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
@ -73,7 +122,9 @@ class SettingsActivity : SimpleActivity() {
|
||||||
setupMessagesImport()
|
setupMessagesImport()
|
||||||
updateTextColors(binding.settingsNestedScrollview)
|
updateTextColors(binding.settingsNestedScrollview)
|
||||||
|
|
||||||
if (blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()) {
|
if (
|
||||||
|
blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()
|
||||||
|
) {
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -90,13 +141,15 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val getContent = registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri ->
|
private val getContent =
|
||||||
|
registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri ->
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
MessagesImporter(this).importMessages(uri)
|
MessagesImporter(this).importMessages(uri)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val saveDocument = registerForActivityResult(ActivityResultContracts.CreateDocument(messagesFileType)) { uri ->
|
private val saveDocument =
|
||||||
|
registerForActivityResult(ActivityResultContracts.CreateDocument(messagesFileType)) { uri ->
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
toast(org.fossify.commons.R.string.exporting)
|
toast(org.fossify.commons.R.string.exporting)
|
||||||
exportMessages(uri)
|
exportMessages(uri)
|
||||||
|
|
@ -120,7 +173,10 @@ class SettingsActivity : SimpleActivity() {
|
||||||
private fun exportMessages(uri: Uri) {
|
private fun exportMessages(uri: Uri) {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
try {
|
try {
|
||||||
MessagesReader(this).getMessagesToExport(config.exportSms, config.exportMms) { messagesToExport ->
|
MessagesReader(this).getMessagesToExport(
|
||||||
|
config.exportSms,
|
||||||
|
config.exportMms
|
||||||
|
) { messagesToExport ->
|
||||||
if (messagesToExport.isEmpty()) {
|
if (messagesToExport.isEmpty()) {
|
||||||
toast(org.fossify.commons.R.string.no_entries_for_exporting)
|
toast(org.fossify.commons.R.string.no_entries_for_exporting)
|
||||||
return@getMessagesToExport
|
return@getMessagesToExport
|
||||||
|
|
@ -167,7 +223,10 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupUseEnglish() = binding.apply {
|
private fun setupUseEnglish() = binding.apply {
|
||||||
settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
|
settingsUseEnglishHolder.beVisibleIf(
|
||||||
|
(config.wasUseEnglishToggled || Locale.getDefault().language != "en")
|
||||||
|
&& !isTiramisuPlus()
|
||||||
|
)
|
||||||
settingsUseEnglish.isChecked = config.useEnglish
|
settingsUseEnglish.isChecked = config.useEnglish
|
||||||
settingsUseEnglishHolder.setOnClickListener {
|
settingsUseEnglishHolder.setOnClickListener {
|
||||||
settingsUseEnglish.toggle()
|
settingsUseEnglish.toggle()
|
||||||
|
|
@ -187,7 +246,8 @@ class SettingsActivity : SimpleActivity() {
|
||||||
// support for device-wise blocking came on Android 7, rely only on that
|
// support for device-wise blocking came on Android 7, rely only on that
|
||||||
@TargetApi(Build.VERSION_CODES.N)
|
@TargetApi(Build.VERSION_CODES.N)
|
||||||
private fun setupManageBlockedNumbers() = binding.apply {
|
private fun setupManageBlockedNumbers() = binding.apply {
|
||||||
settingsManageBlockedNumbers.text = addLockedLabelIfNeeded(org.fossify.commons.R.string.manage_blocked_numbers)
|
settingsManageBlockedNumbers.text =
|
||||||
|
addLockedLabelIfNeeded(org.fossify.commons.R.string.manage_blocked_numbers)
|
||||||
settingsManageBlockedNumbersHolder.beVisibleIf(isNougatPlus())
|
settingsManageBlockedNumbersHolder.beVisibleIf(isNougatPlus())
|
||||||
|
|
||||||
settingsManageBlockedNumbersHolder.setOnClickListener {
|
settingsManageBlockedNumbersHolder.setOnClickListener {
|
||||||
|
|
@ -202,7 +262,8 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupManageBlockedKeywords() = binding.apply {
|
private fun setupManageBlockedKeywords() = binding.apply {
|
||||||
settingsManageBlockedKeywords.text = addLockedLabelIfNeeded(R.string.manage_blocked_keywords)
|
settingsManageBlockedKeywords.text =
|
||||||
|
addLockedLabelIfNeeded(R.string.manage_blocked_keywords)
|
||||||
|
|
||||||
settingsManageBlockedKeywordsHolder.setOnClickListener {
|
settingsManageBlockedKeywordsHolder.setOnClickListener {
|
||||||
if (isOrWasThankYouInstalled()) {
|
if (isOrWasThankYouInstalled()) {
|
||||||
|
|
@ -230,7 +291,10 @@ class SettingsActivity : SimpleActivity() {
|
||||||
RadioItem(FONT_SIZE_SMALL, getString(org.fossify.commons.R.string.small)),
|
RadioItem(FONT_SIZE_SMALL, getString(org.fossify.commons.R.string.small)),
|
||||||
RadioItem(FONT_SIZE_MEDIUM, getString(org.fossify.commons.R.string.medium)),
|
RadioItem(FONT_SIZE_MEDIUM, getString(org.fossify.commons.R.string.medium)),
|
||||||
RadioItem(FONT_SIZE_LARGE, getString(org.fossify.commons.R.string.large)),
|
RadioItem(FONT_SIZE_LARGE, getString(org.fossify.commons.R.string.large)),
|
||||||
RadioItem(FONT_SIZE_EXTRA_LARGE, getString(org.fossify.commons.R.string.extra_large))
|
RadioItem(
|
||||||
|
FONT_SIZE_EXTRA_LARGE,
|
||||||
|
getString(org.fossify.commons.R.string.extra_large)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
RadioGroupDialog(this@SettingsActivity, items, config.fontSize) {
|
RadioGroupDialog(this@SettingsActivity, items, config.fontSize) {
|
||||||
|
|
@ -352,7 +416,11 @@ class SettingsActivity : SimpleActivity() {
|
||||||
recycleBinMessages = messagesDB.getArchivedCount()
|
recycleBinMessages = messagesDB.getArchivedCount()
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
settingsEmptyRecycleBinSize.text =
|
settingsEmptyRecycleBinSize.text =
|
||||||
resources.getQuantityString(R.plurals.delete_messages, recycleBinMessages, recycleBinMessages)
|
resources.getQuantityString(
|
||||||
|
R.plurals.delete_messages,
|
||||||
|
recycleBinMessages,
|
||||||
|
recycleBinMessages
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -372,7 +440,11 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
recycleBinMessages = 0
|
recycleBinMessages = 0
|
||||||
settingsEmptyRecycleBinSize.text =
|
settingsEmptyRecycleBinSize.text =
|
||||||
resources.getQuantityString(R.plurals.delete_messages, recycleBinMessages, recycleBinMessages)
|
resources.getQuantityString(
|
||||||
|
R.plurals.delete_messages,
|
||||||
|
recycleBinMessages,
|
||||||
|
recycleBinMessages
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -381,8 +453,17 @@ class SettingsActivity : SimpleActivity() {
|
||||||
private fun setupAppPasswordProtection() = binding.apply {
|
private fun setupAppPasswordProtection() = binding.apply {
|
||||||
settingsAppPasswordProtection.isChecked = config.isAppPasswordProtectionOn
|
settingsAppPasswordProtection.isChecked = config.isAppPasswordProtectionOn
|
||||||
settingsAppPasswordProtectionHolder.setOnClickListener {
|
settingsAppPasswordProtectionHolder.setOnClickListener {
|
||||||
val tabToShow = if (config.isAppPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS
|
val tabToShow = if (config.isAppPasswordProtectionOn) {
|
||||||
SecurityDialog(this@SettingsActivity, config.appPasswordHash, tabToShow) { hash, type, success ->
|
config.appProtectionType
|
||||||
|
} else {
|
||||||
|
SHOW_ALL_TABS
|
||||||
|
}
|
||||||
|
|
||||||
|
SecurityDialog(
|
||||||
|
activity = this@SettingsActivity,
|
||||||
|
requiredHash = config.appPasswordHash,
|
||||||
|
showTabIndex = tabToShow
|
||||||
|
) { hash, type, success ->
|
||||||
if (success) {
|
if (success) {
|
||||||
val hasPasswordProtection = config.isAppPasswordProtectionOn
|
val hasPasswordProtection = config.isAppPasswordProtectionOn
|
||||||
settingsAppPasswordProtection.isChecked = !hasPasswordProtection
|
settingsAppPasswordProtection.isChecked = !hasPasswordProtection
|
||||||
|
|
@ -391,13 +472,20 @@ class SettingsActivity : SimpleActivity() {
|
||||||
config.appProtectionType = type
|
config.appProtectionType = type
|
||||||
|
|
||||||
if (config.isAppPasswordProtectionOn) {
|
if (config.isAppPasswordProtectionOn) {
|
||||||
val confirmationTextId = if (config.appProtectionType == PROTECTION_FINGERPRINT) {
|
val confirmationTextId =
|
||||||
|
if (config.appProtectionType == PROTECTION_FINGERPRINT) {
|
||||||
org.fossify.commons.R.string.fingerprint_setup_successfully
|
org.fossify.commons.R.string.fingerprint_setup_successfully
|
||||||
} else {
|
} else {
|
||||||
org.fossify.commons.R.string.protection_setup_successfully
|
org.fossify.commons.R.string.protection_setup_successfully
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfirmationDialog(this@SettingsActivity, "", confirmationTextId, org.fossify.commons.R.string.ok, 0) { }
|
ConfirmationDialog(
|
||||||
|
activity = this@SettingsActivity,
|
||||||
|
message = "",
|
||||||
|
messageId = confirmationTextId,
|
||||||
|
positive = org.fossify.commons.R.string.ok,
|
||||||
|
negative = 0
|
||||||
|
) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue