@@ -303,6 +303,16 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr
303303 }
304304 }
305305
306+ private fun initializeArchiveFolderPreference () {
307+ findPreference<Preference >(PREFERENCE_ARCHIVE_FOLDER )?.apply {
308+ setOnPreferenceChangeListener { pref, newValue ->
309+ val granularity = findPreference<Preference >(PREFERENCE_ARCHIVE_GRANULARITY )
310+ granularity?.isEnabled = (pref as ? FolderListPreference )?.isNoneSelected(newValue?.toString()) == false
311+ true
312+ }
313+ }
314+ }
315+
306316 private fun maybeUpdateNotificationPreferences (account : LegacyAccountDto ) {
307317 if (notificationSoundPreference != null ||
308318 notificationLightPreference != null ||
@@ -422,10 +432,13 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr
422432
423433 if (! messagingController.isMoveCapable(account)) {
424434 findPreference<Preference >(PREFERENCE_ARCHIVE_FOLDER ).remove()
435+ findPreference<Preference >(PREFERENCE_ARCHIVE_GRANULARITY ).remove()
425436 findPreference<Preference >(PREFERENCE_DRAFTS_FOLDER ).remove()
426437 findPreference<Preference >(PREFERENCE_SENT_FOLDER ).remove()
427438 findPreference<Preference >(PREFERENCE_SPAM_FOLDER ).remove()
428439 findPreference<Preference >(PREFERENCE_TRASH_FOLDER ).remove()
440+ } else {
441+ initializeArchiveFolderPreference()
429442 }
430443
431444 loadFolders(account)
@@ -455,6 +468,15 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr
455468
456469 val automaticFolder = remoteFolderInfo.automaticSpecialFolders[type]
457470 folderListPreference.setFolders(remoteFolderInfo.folders, automaticFolder)
471+ when (type) {
472+ FolderType .ARCHIVE if folderListPreference.selected == null ->
473+ findPreference<Preference >(PREFERENCE_ARCHIVE_GRANULARITY )?.isEnabled = false
474+
475+ FolderType .ARCHIVE ->
476+ findPreference<Preference >(PREFERENCE_ARCHIVE_GRANULARITY )?.isEnabled = true
477+
478+ else -> Unit
479+ }
458480 }
459481
460482 override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
@@ -529,6 +551,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr
529551 private const val PREFERENCE_AUTO_SELECT_FOLDER = " auto_select_folder"
530552 private const val PREFERENCE_SUBSCRIBED_FOLDERS_ONLY = " subscribed_folders_only"
531553 private const val PREFERENCE_ARCHIVE_FOLDER = " archive_folder"
554+ private const val PREFERENCE_ARCHIVE_GRANULARITY = " archive_granularity"
532555 private const val PREFERENCE_DRAFTS_FOLDER = " drafts_folder"
533556 private const val PREFERENCE_SENT_FOLDER = " sent_folder"
534557 private const val PREFERENCE_SPAM_FOLDER = " spam_folder"
0 commit comments