Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07d516a7 authored by shamim-emon's avatar shamim-emon
Browse files

refactor: refactor DisplaySettings to introduce...

refactor: refactor DisplaySettings to introduce DefaultDisplayInboxSettingsPreferenceManager for inbox related display preferences
parent dcff8c45
Loading
Loading
Loading
Loading
+4 −19
Original line number Diff line number Diff line
package net.thunderbird.core.preference.display

import net.thunderbird.core.preference.AppTheme
import net.thunderbird.core.preference.SplitViewMode
import net.thunderbird.core.preference.SubTheme
import net.thunderbird.core.preference.display.coreSettings.DisplayCoreSetting
import net.thunderbird.core.preference.display.coreSettings.DisplayCoreSettings
import net.thunderbird.core.preference.display.inboxSettings.DisplayInboxSettings

const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_UNIFIED_INBOX = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_STAR_COUNT = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_MESSAGE_LIST_STAR = true
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_ANIMATION = true
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CORRESPONDENT_NAMES = true
const val DISPLAY_SETTINGS_DEFAULT_SHOW_RECENT_CHANGES = true
const val DISPLAY_SETTINGS_DEFAULT_SHOULD_SHOW_SETUP_ARCHIVE_FOLDER_DIALOG = true
const val DISPLAY_SETTINGS_DEFAULT_IS_MESSAGE_LIST_SENDER_ABOVE_SUBJECT = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CONTACT_NAME = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CONTACT_PICTURE = true
const val DISPLAY_SETTINGS_DEFAULT_IS_CHANGE_CONTACT_NAME_COLOR = true
const val DISPLAY_SETTINGS_DEFAULT_IS_COLORIZE_MISSING_CONTACT_PICTURE = false
const val DISPLAY_SETTINGS_DEFAULT_IS_USE_BACKGROUND_AS_INDICATOR = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST = true
const val DISPLAY_SETTINGS_DEFAULT_IS_THREAD_VIEW_ENABLED = true
const val DISPLAY_SETTINGS_DEFAULT_IS_USE_MESSAGE_VIEW_FIXED_WIDTH_FONT = false
const val DISPLAY_SETTINGS_DEFAULT_IS_AUTO_FIT_WIDTH = true



data class DisplaySettings(
    val coreSetting: DisplayCoreSetting = DisplayCoreSetting(),
    val isShowUnifiedInbox: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_UNIFIED_INBOX,
    val isShowStarredCount: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_STAR_COUNT,
    val isShowMessageListStars: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_MESSAGE_LIST_STAR,
    val coreSettings: DisplayCoreSettings = DisplayCoreSettings(),
    val inboxSettings: DisplayInboxSettings = DisplayInboxSettings(),
    val isShowAnimations: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_ANIMATION,
    val isShowCorrespondentNames: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CORRESPONDENT_NAMES,
    val showRecentChanges: Boolean = DISPLAY_SETTINGS_DEFAULT_SHOW_RECENT_CHANGES,
    val shouldShowSetupArchiveFolderDialog: Boolean = DISPLAY_SETTINGS_DEFAULT_SHOULD_SHOW_SETUP_ARCHIVE_FOLDER_DIALOG,
    val isMessageListSenderAboveSubject: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_MESSAGE_LIST_SENDER_ABOVE_SUBJECT,
    val isShowContactName: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CONTACT_NAME,
    val isShowContactPicture: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CONTACT_PICTURE,
    val isChangeContactNameColor: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_CHANGE_CONTACT_NAME_COLOR,
    val isColorizeMissingContactPictures: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_COLORIZE_MISSING_CONTACT_PICTURE,
    val isUseBackgroundAsUnreadIndicator: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_USE_BACKGROUND_AS_INDICATOR,
    val isShowComposeButtonOnMessageList: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST,
    val isThreadedViewEnabled: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_THREAD_VIEW_ENABLED,
    val isUseMessageViewFixedWidthFont: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_USE_MESSAGE_VIEW_FIXED_WIDTH_FONT,
    val isAutoFitWidth: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_AUTO_FIT_WIDTH,
)
+0 −6
Original line number Diff line number Diff line
@@ -2,11 +2,8 @@ package net.thunderbird.core.preference.display

import net.thunderbird.core.preference.PreferenceManager

const val KEY_SHOW_UNIFIED_INBOX = "showUnifiedInbox"
const val KEY_SHOW_STAR_COUNT = "showStarredCount"
const val KEY_SHOW_CONTACT_NAME = "showContactName"
const val KEY_SHOW_CORRESPONDENT_NAMES = "showCorrespondentNames"
const val KEY_SHOW_MESSAGE_LIST_STARS = "messageListStars"
const val KEY_SHOW_RECENT_CHANGES = "showRecentChanges"
const val KEY_THEME = "theme"
const val KEY_ANIMATION = "animations"
@@ -14,11 +11,8 @@ const val KEY_SHOULD_SHOW_SETUP_ARCHIVE_FOLDER_DIALOG = "shouldShowSetupArchiveF
const val KEY_CHANGE_REGISTERED_NAME_COLOR = "changeRegisteredNameColor"
const val KEY_COLORIZE_MISSING_CONTACT_PICTURE = "colorizeMissingContactPictures"
const val KEY_USE_BACKGROUND_AS_UNREAD_INDICATOR = "isUseBackgroundAsUnreadIndicator"
const val KEY_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST = "showComposeButtonOnMessageList"
const val KEY_THREAD_VIEW_ENABLED = "isThreadedViewEnabled"
const val KEY_MESSAGE_VIEW_FIXED_WIDTH_FONT = "messageViewFixedWidthFont"
const val KEY_AUTO_FIT_WIDTH = "autofitWidth"
const val KEY_MESSAGE_LIST_SENDER_ABOVE_SUBJECT = "messageListSenderAboveSubject"
const val KEY_SHOW_CONTACT_PICTURE = "showContactPicture"

interface DisplaySettingsPreferenceManager : PreferenceManager<DisplaySettings>
+17 −0
Original line number Diff line number Diff line
package net.thunderbird.core.preference.display.inboxSettings

const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_UNIFIED_INBOX = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_STAR_COUNT = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_MESSAGE_LIST_STAR = true
const val DISPLAY_SETTINGS_DEFAULT_IS_MESSAGE_LIST_SENDER_ABOVE_SUBJECT = false
const val DISPLAY_SETTINGS_DEFAULT_IS_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST = true
const val DISPLAY_SETTINGS_DEFAULT_IS_THREAD_VIEW_ENABLED = true

data class DisplayInboxSettings(
    val isShowUnifiedInbox: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_UNIFIED_INBOX,
    val isShowStarredCount: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_STAR_COUNT,
    val isShowMessageListStars: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_MESSAGE_LIST_STAR,
    val isMessageListSenderAboveSubject: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_MESSAGE_LIST_SENDER_ABOVE_SUBJECT,
    val isShowComposeButtonOnMessageList: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST,
    val isThreadedViewEnabled: Boolean = DISPLAY_SETTINGS_DEFAULT_IS_THREAD_VIEW_ENABLED,
)
+12 −0
Original line number Diff line number Diff line
package net.thunderbird.core.preference.display.inboxSettings

import net.thunderbird.core.preference.PreferenceManager

const val KEY_MESSAGE_LIST_SENDER_ABOVE_SUBJECT = "messageListSenderAboveSubject"
const val KEY_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST = "showComposeButtonOnMessageList"
const val KEY_SHOW_MESSAGE_LIST_STARS = "messageListStars"
const val KEY_SHOW_STAR_COUNT = "showStarredCount"
const val KEY_SHOW_UNIFIED_INBOX = "showUnifiedInbox"
const val KEY_THREAD_VIEW_ENABLED = "isThreadedViewEnabled"

interface DisplayInboxSettingsPreferenceManager : PreferenceManager<DisplayInboxSettings>
+3 −48
Original line number Diff line number Diff line
@@ -11,12 +11,9 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import net.thunderbird.core.logging.Logger
import net.thunderbird.core.preference.display.coreSettings.DefaultDisplayCoreSettingsPreferenceManager
import net.thunderbird.core.preference.display.coreSettings.DisplayCoreSettingsPreferenceManager
import net.thunderbird.core.preference.storage.Storage
import net.thunderbird.core.preference.storage.StorageEditor
import net.thunderbird.core.preference.storage.getEnumOrDefault
import net.thunderbird.core.preference.storage.putEnum

private const val TAG = "DefaultDisplaySettingsPreferenceManager"

@@ -26,7 +23,7 @@ class DefaultDisplaySettingsPreferenceManager(
    private val storageEditor: StorageEditor,
    private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
    private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
    private val coreSettingsPreferenceManager: DisplayCoreSettingsPreferenceManager
    private val coreSettingsPreferenceManager: DisplayCoreSettingsPreferenceManager,
) : DisplaySettingsPreferenceManager {
    private val configState: MutableStateFlow<DisplaySettings> = MutableStateFlow(value = loadConfig())
    private val mutex = Mutex()
@@ -36,17 +33,13 @@ class DefaultDisplaySettingsPreferenceManager(

    override fun save(config: DisplaySettings) {
        logger.debug(TAG) { "save() called with: config = $config" }
        coreSettingsPreferenceManager.save(config.coreSetting)
        coreSettingsPreferenceManager.save(config.coreSettings)
        writeConfig(config)
        configState.update { config }
    }

    private fun loadConfig(): DisplaySettings = DisplaySettings(
        coreSetting = coreSettingsPreferenceManager.getConfig(),
        isShowUnifiedInbox = storage.getBoolean(
            KEY_SHOW_UNIFIED_INBOX,
            DISPLAY_SETTINGS_DEFAULT_IS_SHOW_UNIFIED_INBOX,
        ),
        coreSettings = coreSettingsPreferenceManager.getConfig(),
        showRecentChanges = storage.getBoolean(
            KEY_SHOW_RECENT_CHANGES,
            DISPLAY_SETTINGS_DEFAULT_SHOW_RECENT_CHANGES,
@@ -67,14 +60,6 @@ class DefaultDisplaySettingsPreferenceManager(
            KEY_USE_BACKGROUND_AS_UNREAD_INDICATOR,
            DISPLAY_SETTINGS_DEFAULT_IS_USE_BACKGROUND_AS_INDICATOR,
        ),
        isShowComposeButtonOnMessageList = storage.getBoolean(
            KEY_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST,
            DISPLAY_SETTINGS_DEFAULT_IS_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST,
        ),
        isThreadedViewEnabled = storage.getBoolean(
            KEY_THREAD_VIEW_ENABLED,
            DISPLAY_SETTINGS_DEFAULT_IS_THREAD_VIEW_ENABLED,
        ),
        isUseMessageViewFixedWidthFont = storage.getBoolean(
            KEY_MESSAGE_VIEW_FIXED_WIDTH_FONT,
            DISPLAY_SETTINGS_DEFAULT_IS_USE_MESSAGE_VIEW_FIXED_WIDTH_FONT,
@@ -83,14 +68,6 @@ class DefaultDisplaySettingsPreferenceManager(
            KEY_AUTO_FIT_WIDTH,
            DISPLAY_SETTINGS_DEFAULT_IS_AUTO_FIT_WIDTH,
        ),
        isShowStarredCount = storage.getBoolean(
            KEY_SHOW_STAR_COUNT,
            DISPLAY_SETTINGS_DEFAULT_IS_SHOW_STAR_COUNT,
        ),
        isShowMessageListStars = storage.getBoolean(
            KEY_SHOW_MESSAGE_LIST_STARS,
            DISPLAY_SETTINGS_DEFAULT_IS_SHOW_MESSAGE_LIST_STAR,
        ),
        isShowAnimations = storage.getBoolean(
            KEY_ANIMATION,
            DISPLAY_SETTINGS_DEFAULT_IS_SHOW_ANIMATION,
@@ -99,10 +76,6 @@ class DefaultDisplaySettingsPreferenceManager(
            KEY_SHOW_CORRESPONDENT_NAMES,
            DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CORRESPONDENT_NAMES,
        ),
        isMessageListSenderAboveSubject = storage.getBoolean(
            KEY_MESSAGE_LIST_SENDER_ABOVE_SUBJECT,
            DISPLAY_SETTINGS_DEFAULT_IS_MESSAGE_LIST_SENDER_ABOVE_SUBJECT,
        ),
        isShowContactName = storage.getBoolean(
            KEY_SHOW_CONTACT_NAME,
            DISPLAY_SETTINGS_DEFAULT_IS_SHOW_CONTACT_NAME,
@@ -117,7 +90,6 @@ class DefaultDisplaySettingsPreferenceManager(
        logger.debug(TAG) { "writeConfig() called with: config = $config" }
        scope.launch(ioDispatcher) {
            mutex.withLock {
                storageEditor.putBoolean(KEY_SHOW_UNIFIED_INBOX, config.isShowUnifiedInbox)
                storageEditor.putBoolean(
                    KEY_CHANGE_REGISTERED_NAME_COLOR,
                    config.isChangeContactNameColor,
@@ -130,20 +102,11 @@ class DefaultDisplaySettingsPreferenceManager(
                    KEY_SHOULD_SHOW_SETUP_ARCHIVE_FOLDER_DIALOG,
                    config.shouldShowSetupArchiveFolderDialog,
                )
                storageEditor.putBoolean(KEY_SHOW_STAR_COUNT, config.isShowStarredCount)
                storageEditor.putBoolean(KEY_SHOW_CONTACT_NAME, config.isShowContactName)
                storageEditor.putBoolean(
                    KEY_MESSAGE_LIST_SENDER_ABOVE_SUBJECT,
                    config.isMessageListSenderAboveSubject,
                )
                storageEditor.putBoolean(
                    KEY_SHOW_CORRESPONDENT_NAMES,
                    config.isShowCorrespondentNames,
                )
                storageEditor.putBoolean(
                    KEY_SHOW_MESSAGE_LIST_STARS,
                    config.isShowMessageListStars,
                )
                storageEditor.putBoolean(KEY_SHOW_RECENT_CHANGES, config.showRecentChanges)
                storageEditor.putBoolean(KEY_ANIMATION, config.isShowAnimations)
                storageEditor.putBoolean(
@@ -154,14 +117,6 @@ class DefaultDisplaySettingsPreferenceManager(
                    KEY_USE_BACKGROUND_AS_UNREAD_INDICATOR,
                    config.isUseBackgroundAsUnreadIndicator,
                )
                storageEditor.putBoolean(
                    KEY_SHOW_COMPOSE_BUTTON_ON_MESSAGE_LIST,
                    config.isShowComposeButtonOnMessageList,
                )
                storageEditor.putBoolean(
                    KEY_THREAD_VIEW_ENABLED,
                    config.isThreadedViewEnabled,
                )
                storageEditor.putBoolean(
                    KEY_MESSAGE_VIEW_FIXED_WIDTH_FONT,
                    config.isUseMessageViewFixedWidthFont,
Loading