@@ -15,16 +15,58 @@ import org.fossify.commons.dialogs.ConfirmationDialog
1515import org.fossify.commons.dialogs.PermissionRequiredDialog
1616import org.fossify.commons.dialogs.RadioGroupDialog
1717import org.fossify.commons.dialogs.SecurityDialog
18- import org.fossify.commons.extensions.*
19- import org.fossify.commons.helpers.*
18+ import org.fossify.commons.extensions.beGone
19+ import org.fossify.commons.extensions.beVisible
20+ import org.fossify.commons.extensions.beVisibleIf
21+ import org.fossify.commons.extensions.getProperPrimaryColor
22+ import org.fossify.commons.extensions.openRequestExactAlarmSettings
23+ import org.fossify.commons.extensions.showErrorToast
24+ import org.fossify.commons.extensions.toast
25+ import org.fossify.commons.extensions.updateTextColors
26+ import org.fossify.commons.extensions.viewBinding
27+ import org.fossify.commons.helpers.IS_CUSTOMIZING_COLORS
28+ import org.fossify.commons.helpers.NavigationIcon
29+ import org.fossify.commons.helpers.PROTECTION_FINGERPRINT
30+ import org.fossify.commons.helpers.SHOW_ALL_TABS
31+ import org.fossify.commons.helpers.ensureBackgroundThread
32+ import org.fossify.commons.helpers.isOreoPlus
33+ import org.fossify.commons.helpers.isQPlus
34+ import org.fossify.commons.helpers.isRPlus
35+ import org.fossify.commons.helpers.isSPlus
36+ import org.fossify.commons.helpers.isTiramisuPlus
2037import org.fossify.commons.models.RadioItem
2138import org.fossify.notes.BuildConfig
2239import org.fossify.notes.R
2340import org.fossify.notes.databinding.ActivitySettingsBinding
2441import org.fossify.notes.dialogs.ExportNotesDialog
2542import org.fossify.notes.dialogs.ManageAutoBackupsDialog
26- import org.fossify.notes.extensions.*
27- import org.fossify.notes.helpers.*
43+ import org.fossify.notes.extensions.cancelScheduledAutomaticBackup
44+ import org.fossify.notes.extensions.config
45+ import org.fossify.notes.extensions.requestUnlockNotes
46+ import org.fossify.notes.extensions.scheduleNextAutomaticBackup
47+ import org.fossify.notes.extensions.updateWidgets
48+ import org.fossify.notes.extensions.widgetsDB
49+ import org.fossify.notes.helpers.CUSTOMIZED_WIDGET_BG_COLOR
50+ import org.fossify.notes.helpers.CUSTOMIZED_WIDGET_ID
51+ import org.fossify.notes.helpers.CUSTOMIZED_WIDGET_KEY_ID
52+ import org.fossify.notes.helpers.CUSTOMIZED_WIDGET_NOTE_ID
53+ import org.fossify.notes.helpers.CUSTOMIZED_WIDGET_SHOW_TITLE
54+ import org.fossify.notes.helpers.CUSTOMIZED_WIDGET_TEXT_COLOR
55+ import org.fossify.notes.helpers.FONT_SIZE_100_PERCENT
56+ import org.fossify.notes.helpers.FONT_SIZE_125_PERCENT
57+ import org.fossify.notes.helpers.FONT_SIZE_150_PERCENT
58+ import org.fossify.notes.helpers.FONT_SIZE_175_PERCENT
59+ import org.fossify.notes.helpers.FONT_SIZE_200_PERCENT
60+ import org.fossify.notes.helpers.FONT_SIZE_250_PERCENT
61+ import org.fossify.notes.helpers.FONT_SIZE_300_PERCENT
62+ import org.fossify.notes.helpers.FONT_SIZE_50_PERCENT
63+ import org.fossify.notes.helpers.FONT_SIZE_60_PERCENT
64+ import org.fossify.notes.helpers.FONT_SIZE_75_PERCENT
65+ import org.fossify.notes.helpers.FONT_SIZE_90_PERCENT
66+ import org.fossify.notes.helpers.GRAVITY_CENTER
67+ import org.fossify.notes.helpers.GRAVITY_END
68+ import org.fossify.notes.helpers.GRAVITY_START
69+ import org.fossify.notes.helpers.NotesHelper
2870import org.fossify.notes.models.Note
2971import org.fossify.notes.models.Widget
3072import java.util.Locale
@@ -47,7 +89,12 @@ class SettingsActivity : SimpleActivity() {
4789 super .onCreate(savedInstanceState)
4890 setContentView(binding.root)
4991
50- updateMaterialActivityViews(binding.settingsCoordinator, binding.settingsHolder, useTransparentNavigation = true , useTopSearchMenu = false )
92+ updateMaterialActivityViews(
93+ mainCoordinatorLayout = binding.settingsCoordinator,
94+ nestedView = binding.settingsHolder,
95+ useTransparentNavigation = true ,
96+ useTopSearchMenu = false
97+ )
5198 setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsToolbar)
5299 }
53100
@@ -105,18 +152,19 @@ class SettingsActivity : SimpleActivity() {
105152 }
106153 }
107154
108- private val saveDocument = registerForActivityResult(ActivityResultContracts .CreateDocument (notesFileType)) { uri ->
109- if (uri != null ) {
110- toast(org.fossify.commons.R .string.exporting)
111- NotesHelper (this ).getNotes { notes ->
112- requestUnlockNotes(notes) { unlockedNotes ->
113- val notLockedNotes = notes.filterNot { it.isLocked() }
114- val notesToExport = unlockedNotes + notLockedNotes
115- exportNotes(notesToExport, uri)
155+ private val saveDocument =
156+ registerForActivityResult(ActivityResultContracts .CreateDocument (notesFileType)) { uri ->
157+ if (uri != null ) {
158+ toast(org.fossify.commons.R .string.exporting)
159+ NotesHelper (this ).getNotes { notes ->
160+ requestUnlockNotes(notes) { unlockedNotes ->
161+ val notLockedNotes = notes.filterNot { it.isLocked() }
162+ val notesToExport = unlockedNotes + notLockedNotes
163+ exportNotes(notesToExport, uri)
164+ }
116165 }
117166 }
118167 }
119- }
120168
121169 private fun setupCustomizeColors () {
122170 binding.settingsColorCustomizationHolder.setOnClickListener {
@@ -136,9 +184,13 @@ class SettingsActivity : SimpleActivity() {
136184
137185 private fun setupLanguage () {
138186 binding.settingsLanguage.text = Locale .getDefault().displayLanguage
139- binding.settingsLanguageHolder.beVisibleIf(isTiramisuPlus())
140- binding.settingsLanguageHolder.setOnClickListener {
141- launchChangeAppLanguageIntent()
187+ if (isTiramisuPlus()) {
188+ binding.settingsLanguageHolder.beVisible()
189+ binding.settingsLanguageHolder.setOnClickListener {
190+ launchChangeAppLanguageIntent()
191+ }
192+ } else {
193+ binding.settingsLanguageHolder.beGone()
142194 }
143195 }
144196
@@ -241,7 +293,9 @@ class SettingsActivity : SimpleActivity() {
241293 private fun setupGravity () {
242294 binding.settingsGravity.text = getGravityText()
243295 binding.settingsGravityHolder.setOnClickListener {
244- val items = listOf (GRAVITY_START , GRAVITY_CENTER , GRAVITY_END ).map { RadioItem (it, getGravityOptionLabel(it)) }
296+ val items = listOf (GRAVITY_START , GRAVITY_CENTER , GRAVITY_END ).map {
297+ RadioItem (it, getGravityOptionLabel(it))
298+ }
245299 RadioGroupDialog (this @SettingsActivity, ArrayList (items), config.gravity) {
246300 config.gravity = it as Int
247301 binding.settingsGravity.text = getGravityText()
@@ -251,13 +305,15 @@ class SettingsActivity : SimpleActivity() {
251305 }
252306
253307 private fun getGravityOptionLabel (gravity : Int ): String {
254- val leftToRightDirection = TextUtilsCompat .getLayoutDirectionFromLocale(Locale .getDefault()) == ViewCompat .LAYOUT_DIRECTION_LTR
308+ val leftToRightDirection = TextUtilsCompat
309+ .getLayoutDirectionFromLocale(Locale .getDefault()) == ViewCompat .LAYOUT_DIRECTION_LTR
255310 val leftRightLabels = listOf (R .string.left, R .string.right)
256311 val startEndLabels = if (leftToRightDirection) {
257312 leftRightLabels
258313 } else {
259314 leftRightLabels.reversed()
260315 }
316+
261317 return getString(
262318 when (gravity) {
263319 GRAVITY_START -> startEndLabels.first()
@@ -436,8 +492,17 @@ class SettingsActivity : SimpleActivity() {
436492 private fun setupAppPasswordProtection () {
437493 binding.settingsAppPasswordProtection.isChecked = config.isAppPasswordProtectionOn
438494 binding.settingsAppPasswordProtectionHolder.setOnClickListener {
439- val tabToShow = if (config.isAppPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS
440- SecurityDialog (this , config.appPasswordHash, tabToShow) { hash, type, success ->
495+ val tabToShow = if (config.isAppPasswordProtectionOn) {
496+ config.appProtectionType
497+ } else {
498+ SHOW_ALL_TABS
499+ }
500+
501+ SecurityDialog (
502+ activity = this ,
503+ requiredHash = config.appPasswordHash,
504+ showTabIndex = tabToShow
505+ ) { hash, type, success ->
441506 if (success) {
442507 val hasPasswordProtection = config.isAppPasswordProtectionOn
443508 binding.settingsAppPasswordProtection.isChecked = ! hasPasswordProtection
@@ -446,31 +511,65 @@ class SettingsActivity : SimpleActivity() {
446511 config.appProtectionType = type
447512
448513 if (config.isAppPasswordProtectionOn) {
449- val confirmationTextId = if (config.appProtectionType == PROTECTION_FINGERPRINT )
450- org.fossify.commons.R .string.fingerprint_setup_successfully else org.fossify.commons.R .string.protection_setup_successfully
451- ConfirmationDialog (this , " " , confirmationTextId, org.fossify.commons.R .string.ok, 0 ) { }
514+ val confirmationTextId =
515+ if (config.appProtectionType == PROTECTION_FINGERPRINT ) {
516+ org.fossify.commons.R .string.fingerprint_setup_successfully
517+ } else {
518+ org.fossify.commons.R .string.protection_setup_successfully
519+ }
520+
521+ ConfirmationDialog (
522+ activity = this ,
523+ message = " " ,
524+ messageId = confirmationTextId,
525+ positive = org.fossify.commons.R .string.ok,
526+ negative = 0
527+ ) { }
452528 }
453529 }
454530 }
455531 }
456532 }
457533
458534 private fun setupNoteDeletionPasswordProtection () {
459- binding.settingsNoteDeletionPasswordProtection.isChecked = config.isDeletePasswordProtectionOn
535+ binding.settingsNoteDeletionPasswordProtection.isChecked =
536+ config.isDeletePasswordProtectionOn
537+
460538 binding.settingsNoteDeletionPasswordProtectionHolder.setOnClickListener {
461- val tabToShow = if (config.isDeletePasswordProtectionOn) config.deleteProtectionType else SHOW_ALL_TABS
462- SecurityDialog (this , config.deletePasswordHash, tabToShow) { hash, type, success ->
539+ val tabToShow = if (config.isDeletePasswordProtectionOn) {
540+ config.deleteProtectionType
541+ } else {
542+ SHOW_ALL_TABS
543+ }
544+
545+ SecurityDialog (
546+ activity = this ,
547+ requiredHash = config.deletePasswordHash,
548+ showTabIndex = tabToShow
549+ ) { hash, type, success ->
463550 if (success) {
464551 val hasPasswordProtection = config.isDeletePasswordProtectionOn
465- binding.settingsNoteDeletionPasswordProtection.isChecked = ! hasPasswordProtection
552+ binding.settingsNoteDeletionPasswordProtection.isChecked =
553+ ! hasPasswordProtection
466554 config.isDeletePasswordProtectionOn = ! hasPasswordProtection
467555 config.deletePasswordHash = if (hasPasswordProtection) " " else hash
468556 config.deleteProtectionType = type
469557
470558 if (config.isDeletePasswordProtectionOn) {
471- val confirmationTextId = if (config.deleteProtectionType == PROTECTION_FINGERPRINT )
472- org.fossify.commons.R .string.fingerprint_setup_successfully else org.fossify.commons.R .string.protection_setup_successfully
473- ConfirmationDialog (this , " " , confirmationTextId, org.fossify.commons.R .string.ok, 0 ) { }
559+ val confirmationTextId =
560+ if (config.deleteProtectionType == PROTECTION_FINGERPRINT ) {
561+ org.fossify.commons.R .string.fingerprint_setup_successfully
562+ } else {
563+ org.fossify.commons.R .string.protection_setup_successfully
564+ }
565+
566+ ConfirmationDialog (
567+ activity = this ,
568+ message = " " ,
569+ messageId = confirmationTextId,
570+ positive = org.fossify.commons.R .string.ok,
571+ negative = 0
572+ ) { }
474573 }
475574 }
476575 }
0 commit comments