@@ -9,25 +9,71 @@ import androidx.activity.result.contract.ActivityResultContracts
9
9
import kotlinx.serialization.encodeToString
10
10
import kotlinx.serialization.json.Json
11
11
import org.fossify.commons.activities.ManageBlockedNumbersActivity
12
- import org.fossify.commons.dialogs.*
13
- import org.fossify.commons.extensions.*
14
- import org.fossify.commons.helpers.*
12
+ import org.fossify.commons.dialogs.ChangeDateTimeFormatDialog
13
+ import org.fossify.commons.dialogs.ConfirmationDialog
14
+ import org.fossify.commons.dialogs.FeatureLockedDialog
15
+ import org.fossify.commons.dialogs.RadioGroupDialog
16
+ import org.fossify.commons.dialogs.SecurityDialog
17
+ import org.fossify.commons.extensions.addLockedLabelIfNeeded
18
+ import org.fossify.commons.extensions.beGoneIf
19
+ import org.fossify.commons.extensions.beVisibleIf
20
+ import org.fossify.commons.extensions.getBlockedNumbers
21
+ import org.fossify.commons.extensions.getCustomizeColorsString
22
+ import org.fossify.commons.extensions.getFontSizeText
23
+ import org.fossify.commons.extensions.getProperPrimaryColor
24
+ import org.fossify.commons.extensions.isOrWasThankYouInstalled
25
+ import org.fossify.commons.extensions.launchPurchaseThankYouIntent
26
+ import org.fossify.commons.extensions.showErrorToast
27
+ import org.fossify.commons.extensions.toast
28
+ import org.fossify.commons.extensions.updateTextColors
29
+ import org.fossify.commons.extensions.viewBinding
30
+ import org.fossify.commons.helpers.FONT_SIZE_EXTRA_LARGE
31
+ import org.fossify.commons.helpers.FONT_SIZE_LARGE
32
+ import org.fossify.commons.helpers.FONT_SIZE_MEDIUM
33
+ import org.fossify.commons.helpers.FONT_SIZE_SMALL
34
+ import org.fossify.commons.helpers.NavigationIcon
35
+ import org.fossify.commons.helpers.PROTECTION_FINGERPRINT
36
+ import org.fossify.commons.helpers.SHOW_ALL_TABS
37
+ import org.fossify.commons.helpers.ensureBackgroundThread
38
+ import org.fossify.commons.helpers.isNougatPlus
39
+ import org.fossify.commons.helpers.isOreoPlus
40
+ import org.fossify.commons.helpers.isPiePlus
41
+ import org.fossify.commons.helpers.isTiramisuPlus
15
42
import org.fossify.commons.models.RadioItem
16
43
import org.fossify.messages.R
17
44
import org.fossify.messages.databinding.ActivitySettingsBinding
18
45
import org.fossify.messages.dialogs.ExportMessagesDialog
19
46
import org.fossify.messages.extensions.config
20
47
import org.fossify.messages.extensions.emptyMessagesRecycleBin
21
48
import org.fossify.messages.extensions.messagesDB
22
- import org.fossify.messages.helpers.*
49
+ import org.fossify.messages.helpers.FILE_SIZE_100_KB
50
+ import org.fossify.messages.helpers.FILE_SIZE_1_MB
51
+ import org.fossify.messages.helpers.FILE_SIZE_200_KB
52
+ import org.fossify.messages.helpers.FILE_SIZE_2_MB
53
+ import org.fossify.messages.helpers.FILE_SIZE_300_KB
54
+ import org.fossify.messages.helpers.FILE_SIZE_600_KB
55
+ import org.fossify.messages.helpers.FILE_SIZE_NONE
56
+ import org.fossify.messages.helpers.LOCK_SCREEN_NOTHING
57
+ import org.fossify.messages.helpers.LOCK_SCREEN_SENDER
58
+ import org.fossify.messages.helpers.LOCK_SCREEN_SENDER_MESSAGE
59
+ import org.fossify.messages.helpers.MessagesImporter
60
+ import org.fossify.messages.helpers.MessagesReader
61
+ import org.fossify.messages.helpers.refreshMessages
23
62
import java.util.Locale
24
63
import kotlin.system.exitProcess
25
64
26
65
class SettingsActivity : SimpleActivity () {
27
66
private var blockedNumbersAtPause = - 1
28
67
private var recycleBinMessages = 0
29
68
private val messagesFileType = " application/json"
30
- private val messageImportFileTypes = listOf (" application/json" , " application/xml" , " text/xml" )
69
+ private val messageImportFileTypes = buildList {
70
+ add(" application/json" )
71
+ add(" application/xml" )
72
+ add(" text/xml" )
73
+ if (! isPiePlus()) {
74
+ add(" application/octet-stream" )
75
+ }
76
+ }
31
77
32
78
private val binding by viewBinding(ActivitySettingsBinding ::inflate)
33
79
@@ -42,7 +88,10 @@ class SettingsActivity : SimpleActivity() {
42
88
useTransparentNavigation = true ,
43
89
useTopSearchMenu = false
44
90
)
45
- setupMaterialScrollListener(scrollingView = binding.settingsNestedScrollview, toolbar = binding.settingsToolbar)
91
+ setupMaterialScrollListener(
92
+ scrollingView = binding.settingsNestedScrollview,
93
+ toolbar = binding.settingsToolbar
94
+ )
46
95
}
47
96
48
97
override fun onResume () {
@@ -73,7 +122,9 @@ class SettingsActivity : SimpleActivity() {
73
122
setupMessagesImport()
74
123
updateTextColors(binding.settingsNestedScrollview)
75
124
76
- if (blockedNumbersAtPause != - 1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()) {
125
+ if (
126
+ blockedNumbersAtPause != - 1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()
127
+ ) {
77
128
refreshMessages()
78
129
}
79
130
@@ -90,18 +141,20 @@ class SettingsActivity : SimpleActivity() {
90
141
}
91
142
}
92
143
93
- private val getContent = registerForActivityResult(ActivityResultContracts .OpenDocument ()) { uri ->
94
- if (uri != null ) {
95
- MessagesImporter (this ).importMessages(uri)
144
+ private val getContent =
145
+ registerForActivityResult(ActivityResultContracts .OpenDocument ()) { uri ->
146
+ if (uri != null ) {
147
+ MessagesImporter (this ).importMessages(uri)
148
+ }
96
149
}
97
- }
98
150
99
- private val saveDocument = registerForActivityResult(ActivityResultContracts .CreateDocument (messagesFileType)) { uri ->
100
- if (uri != null ) {
101
- toast(org.fossify.commons.R .string.exporting)
102
- exportMessages(uri)
151
+ private val saveDocument =
152
+ registerForActivityResult(ActivityResultContracts .CreateDocument (messagesFileType)) { uri ->
153
+ if (uri != null ) {
154
+ toast(org.fossify.commons.R .string.exporting)
155
+ exportMessages(uri)
156
+ }
103
157
}
104
- }
105
158
106
159
private fun setupMessagesExport () {
107
160
binding.settingsExportMessagesHolder.setOnClickListener {
@@ -120,7 +173,10 @@ class SettingsActivity : SimpleActivity() {
120
173
private fun exportMessages (uri : Uri ) {
121
174
ensureBackgroundThread {
122
175
try {
123
- MessagesReader (this ).getMessagesToExport(config.exportSms, config.exportMms) { messagesToExport ->
176
+ MessagesReader (this ).getMessagesToExport(
177
+ config.exportSms,
178
+ config.exportMms
179
+ ) { messagesToExport ->
124
180
if (messagesToExport.isEmpty()) {
125
181
toast(org.fossify.commons.R .string.no_entries_for_exporting)
126
182
return @getMessagesToExport
@@ -167,7 +223,10 @@ class SettingsActivity : SimpleActivity() {
167
223
}
168
224
169
225
private fun setupUseEnglish () = binding.apply {
170
- settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale .getDefault().language != " en" ) && ! isTiramisuPlus())
226
+ settingsUseEnglishHolder.beVisibleIf(
227
+ (config.wasUseEnglishToggled || Locale .getDefault().language != " en" )
228
+ && ! isTiramisuPlus()
229
+ )
171
230
settingsUseEnglish.isChecked = config.useEnglish
172
231
settingsUseEnglishHolder.setOnClickListener {
173
232
settingsUseEnglish.toggle()
@@ -187,7 +246,8 @@ class SettingsActivity : SimpleActivity() {
187
246
// support for device-wise blocking came on Android 7, rely only on that
188
247
@TargetApi(Build .VERSION_CODES .N )
189
248
private fun setupManageBlockedNumbers () = binding.apply {
190
- settingsManageBlockedNumbers.text = addLockedLabelIfNeeded(org.fossify.commons.R .string.manage_blocked_numbers)
249
+ settingsManageBlockedNumbers.text =
250
+ addLockedLabelIfNeeded(org.fossify.commons.R .string.manage_blocked_numbers)
191
251
settingsManageBlockedNumbersHolder.beVisibleIf(isNougatPlus())
192
252
193
253
settingsManageBlockedNumbersHolder.setOnClickListener {
@@ -202,7 +262,8 @@ class SettingsActivity : SimpleActivity() {
202
262
}
203
263
204
264
private fun setupManageBlockedKeywords () = binding.apply {
205
- settingsManageBlockedKeywords.text = addLockedLabelIfNeeded(R .string.manage_blocked_keywords)
265
+ settingsManageBlockedKeywords.text =
266
+ addLockedLabelIfNeeded(R .string.manage_blocked_keywords)
206
267
207
268
settingsManageBlockedKeywordsHolder.setOnClickListener {
208
269
if (isOrWasThankYouInstalled()) {
@@ -230,7 +291,10 @@ class SettingsActivity : SimpleActivity() {
230
291
RadioItem (FONT_SIZE_SMALL , getString(org.fossify.commons.R .string.small)),
231
292
RadioItem (FONT_SIZE_MEDIUM , getString(org.fossify.commons.R .string.medium)),
232
293
RadioItem (FONT_SIZE_LARGE , getString(org.fossify.commons.R .string.large)),
233
- RadioItem (FONT_SIZE_EXTRA_LARGE , getString(org.fossify.commons.R .string.extra_large))
294
+ RadioItem (
295
+ FONT_SIZE_EXTRA_LARGE ,
296
+ getString(org.fossify.commons.R .string.extra_large)
297
+ )
234
298
)
235
299
236
300
RadioGroupDialog (this @SettingsActivity, items, config.fontSize) {
@@ -352,7 +416,11 @@ class SettingsActivity : SimpleActivity() {
352
416
recycleBinMessages = messagesDB.getArchivedCount()
353
417
runOnUiThread {
354
418
settingsEmptyRecycleBinSize.text =
355
- resources.getQuantityString(R .plurals.delete_messages, recycleBinMessages, recycleBinMessages)
419
+ resources.getQuantityString(
420
+ R .plurals.delete_messages,
421
+ recycleBinMessages,
422
+ recycleBinMessages
423
+ )
356
424
}
357
425
}
358
426
@@ -372,7 +440,11 @@ class SettingsActivity : SimpleActivity() {
372
440
}
373
441
recycleBinMessages = 0
374
442
settingsEmptyRecycleBinSize.text =
375
- resources.getQuantityString(R .plurals.delete_messages, recycleBinMessages, recycleBinMessages)
443
+ resources.getQuantityString(
444
+ R .plurals.delete_messages,
445
+ recycleBinMessages,
446
+ recycleBinMessages
447
+ )
376
448
}
377
449
}
378
450
}
@@ -381,8 +453,17 @@ class SettingsActivity : SimpleActivity() {
381
453
private fun setupAppPasswordProtection () = binding.apply {
382
454
settingsAppPasswordProtection.isChecked = config.isAppPasswordProtectionOn
383
455
settingsAppPasswordProtectionHolder.setOnClickListener {
384
- val tabToShow = if (config.isAppPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS
385
- SecurityDialog (this @SettingsActivity, config.appPasswordHash, tabToShow) { hash, type, success ->
456
+ val tabToShow = if (config.isAppPasswordProtectionOn) {
457
+ config.appProtectionType
458
+ } else {
459
+ SHOW_ALL_TABS
460
+ }
461
+
462
+ SecurityDialog (
463
+ activity = this @SettingsActivity,
464
+ requiredHash = config.appPasswordHash,
465
+ showTabIndex = tabToShow
466
+ ) { hash, type, success ->
386
467
if (success) {
387
468
val hasPasswordProtection = config.isAppPasswordProtectionOn
388
469
settingsAppPasswordProtection.isChecked = ! hasPasswordProtection
@@ -391,13 +472,20 @@ class SettingsActivity : SimpleActivity() {
391
472
config.appProtectionType = type
392
473
393
474
if (config.isAppPasswordProtectionOn) {
394
- val confirmationTextId = if (config.appProtectionType == PROTECTION_FINGERPRINT ) {
395
- org.fossify.commons.R .string.fingerprint_setup_successfully
396
- } else {
397
- org.fossify.commons.R .string.protection_setup_successfully
398
- }
399
-
400
- ConfirmationDialog (this @SettingsActivity, " " , confirmationTextId, org.fossify.commons.R .string.ok, 0 ) { }
475
+ val confirmationTextId =
476
+ if (config.appProtectionType == PROTECTION_FINGERPRINT ) {
477
+ org.fossify.commons.R .string.fingerprint_setup_successfully
478
+ } else {
479
+ org.fossify.commons.R .string.protection_setup_successfully
480
+ }
481
+
482
+ ConfirmationDialog (
483
+ activity = this @SettingsActivity,
484
+ message = " " ,
485
+ messageId = confirmationTextId,
486
+ positive = org.fossify.commons.R .string.ok,
487
+ negative = 0
488
+ ) { }
401
489
}
402
490
}
403
491
}
0 commit comments