Set the "System Design" as the default theme. This ensures that the app's initial behaviour respect's the user's system-wide theme choice, while still allowing the user to adjust it later. This is only done for new installs of Tusky. If the user is upgrading from a previous release and they did not have an explicit theme set then the dark theme is used, and the UX does not change.
114 lines
5.3 KiB
Kotlin
114 lines
5.3 KiB
Kotlin
package com.keylesspalace.tusky.settings
|
|
|
|
enum class AppTheme(val value: String) {
|
|
NIGHT("night"),
|
|
DAY("day"),
|
|
BLACK("black"),
|
|
AUTO("auto"),
|
|
AUTO_SYSTEM("auto_system");
|
|
|
|
companion object {
|
|
fun stringValues() = values().map { it.value }.toTypedArray()
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Current preferences schema version. Format is 4-digit year + 2 digit month (zero padded) + 2
|
|
* digit day (zero padded) + 2 digit counter (zero padded).
|
|
*
|
|
* If you make an incompatible change to the preferences schema you must:
|
|
*
|
|
* - Update this value
|
|
* - Update the code in
|
|
* [TuskyApplication.upgradeSharedPreferences][com.keylesspalace.tusky.TuskyApplication.upgradeSharedPreferences]
|
|
* to migrate from the old schema version to the new schema version.
|
|
*
|
|
* An incompatible change is:
|
|
*
|
|
* - Deleting a preference. The migration should delete the old preference.
|
|
* - Changing a preference's default value (e.g., from true to false, or from one enum value to
|
|
* another). The migration should check to see if the user had set an explicit value for
|
|
* that preference ([SharedPreferences.contains][android.content.SharedPreferences.contains]);
|
|
* if they hadn't then the migration should set the *old* default value as the preference's
|
|
* value, so the app behaviour does not unexpectedly change.
|
|
* - Changing a preference's type (e.g,. from a boolean to an enum). If you do this you may want
|
|
* to give the preference a different name, but you still need to migrate the user's previous
|
|
* preference value to the new preference.
|
|
* - Renaming a preference key. The migration should copy the user's previous value for the
|
|
* preference under the old key to the value for the new, and delete the old preference.
|
|
*
|
|
* A compatible change is:
|
|
*
|
|
* - Adding a new preference that does not change the interpretation of an existing preference
|
|
*/
|
|
const val SCHEMA_VERSION = 2023082301
|
|
|
|
/** The schema version for fresh installs */
|
|
const val NEW_INSTALL_SCHEMA_VERSION = 0
|
|
|
|
object PrefKeys {
|
|
// Note: not all of these keys are actually used as SharedPreferences keys but we must give
|
|
// each preference a key for it to work.
|
|
|
|
const val SCHEMA_VERSION: String = "schema_version"
|
|
const val APP_THEME = "appTheme"
|
|
const val EMOJI = "selected_emoji_font"
|
|
const val FAB_HIDE = "fabHide"
|
|
const val LANGUAGE = "language"
|
|
const val STATUS_TEXT_SIZE = "statusTextSize"
|
|
const val READING_ORDER = "readingOrder"
|
|
const val MAIN_NAV_POSITION = "mainNavPosition"
|
|
const val HIDE_TOP_TOOLBAR = "hideTopToolbar"
|
|
const val ABSOLUTE_TIME_VIEW = "absoluteTimeView"
|
|
const val SHOW_BOT_OVERLAY = "showBotOverlay"
|
|
const val ANIMATE_GIF_AVATARS = "animateGifAvatars"
|
|
const val USE_BLURHASH = "useBlurhash"
|
|
const val SHOW_SELF_USERNAME = "showSelfUsername"
|
|
const val SHOW_CARDS_IN_TIMELINES = "showCardsInTimelines"
|
|
const val CONFIRM_REBLOGS = "confirmReblogs"
|
|
const val CONFIRM_FAVOURITES = "confirmFavourites"
|
|
const val ENABLE_SWIPE_FOR_TABS = "enableSwipeForTabs"
|
|
const val ANIMATE_CUSTOM_EMOJIS = "animateCustomEmojis"
|
|
const val SHOW_STATS_INLINE = "showStatsInline"
|
|
|
|
const val CUSTOM_TABS = "customTabs"
|
|
const val WELLBEING_LIMITED_NOTIFICATIONS = "wellbeingModeLimitedNotifications"
|
|
const val WELLBEING_HIDE_STATS_POSTS = "wellbeingHideStatsPosts"
|
|
const val WELLBEING_HIDE_STATS_PROFILE = "wellbeingHideStatsProfile"
|
|
|
|
const val HTTP_PROXY_ENABLED = "httpProxyEnabled"
|
|
const val HTTP_PROXY_SERVER = "httpProxyServer"
|
|
const val HTTP_PROXY_PORT = "httpProxyPort"
|
|
|
|
const val DEFAULT_POST_PRIVACY = "defaultPostPrivacy"
|
|
const val DEFAULT_POST_LANGUAGE = "defaultPostLanguage"
|
|
const val DEFAULT_MEDIA_SENSITIVITY = "defaultMediaSensitivity"
|
|
const val MEDIA_PREVIEW_ENABLED = "mediaPreviewEnabled"
|
|
const val ALWAYS_SHOW_SENSITIVE_MEDIA = "alwaysShowSensitiveMedia"
|
|
const val ALWAYS_OPEN_SPOILER = "alwaysOpenSpoiler"
|
|
|
|
const val NOTIFICATIONS_ENABLED = "notificationsEnabled"
|
|
const val NOTIFICATION_ALERT_LIGHT = "notificationAlertLight"
|
|
const val NOTIFICATION_ALERT_VIBRATE = "notificationAlertVibrate"
|
|
const val NOTIFICATION_ALERT_SOUND = "notificationAlertSound"
|
|
const val NOTIFICATION_FILTER_POLLS = "notificationFilterPolls"
|
|
const val NOTIFICATION_FILTER_FAVS = "notificationFilterFavourites"
|
|
const val NOTIFICATION_FILTER_REBLOGS = "notificationFilterReblogs"
|
|
const val NOTIFICATION_FILTER_FOLLOW_REQUESTS = "notificationFilterFollowRequests"
|
|
const val NOTIFICATIONS_FILTER_FOLLOWS = "notificationFilterFollows"
|
|
const val NOTIFICATION_FILTER_SUBSCRIPTIONS = "notificationFilterSubscriptions"
|
|
const val NOTIFICATION_FILTER_SIGN_UPS = "notificationFilterSignUps"
|
|
const val NOTIFICATION_FILTER_UPDATES = "notificationFilterUpdates"
|
|
const val NOTIFICATION_FILTER_REPORTS = "notificationFilterReports"
|
|
|
|
const val TAB_FILTER_HOME_REPLIES = "tabFilterHomeReplies_v2" // This was changed once to reset an unintentionally set default.
|
|
const val TAB_FILTER_HOME_BOOSTS = "tabFilterHomeBoosts"
|
|
|
|
/** UI text scaling factor, stored as float, 100 = 100% = no scaling */
|
|
const val UI_TEXT_SCALE_RATIO = "uiTextScaleRatio"
|
|
|
|
/** Keys that are no longer used (e.g., the preference has been removed */
|
|
object Deprecated {
|
|
const val SHOW_NOTIFICATIONS_FILTER = "showNotificationsFilter"
|
|
}
|
|
}
|