pref: 迁移至 DataStore
This commit is contained in:
parent
bb0ba2bc8b
commit
e33de47d34
|
|
@ -255,6 +255,7 @@ class BaseApplication : Application(), IApp {
|
|||
|
||||
//禁止app字体大小跟随系统字体大小调节
|
||||
override fun getResources(): Resources {
|
||||
INSTANCE = this
|
||||
val fontScale = appPreferences.fontScale
|
||||
val resources = super.getResources()
|
||||
if (resources.configuration.fontScale != fontScale) {
|
||||
|
|
|
|||
|
|
@ -2,11 +2,102 @@ package com.huanchengfly.tieba.post
|
|||
|
||||
import android.content.Context
|
||||
import androidx.datastore.core.DataStore
|
||||
import androidx.datastore.preferences.core.Preferences
|
||||
import androidx.datastore.preferences.SharedPreferencesMigration
|
||||
import androidx.datastore.preferences.core.*
|
||||
import androidx.datastore.preferences.preferencesDataStore
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
object DataStoreConst {
|
||||
const val DATA_STORE_NAME = "app_data"
|
||||
const val DATA_STORE_NAME = "app_preferences"
|
||||
|
||||
val KEY_THEME = stringPreferencesKey("theme")
|
||||
}
|
||||
|
||||
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = DataStoreConst.DATA_STORE_NAME)
|
||||
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(
|
||||
name = DataStoreConst.DATA_STORE_NAME,
|
||||
produceMigrations = { context ->
|
||||
listOf(SharedPreferencesMigration(context, "settings"))
|
||||
}
|
||||
)
|
||||
|
||||
fun DataStore<Preferences>.getInt(key: String, defaultValue: Int): Int {
|
||||
var resultValue = defaultValue
|
||||
|
||||
runBlocking {
|
||||
BaseApplication.INSTANCE.dataStore.data.first {
|
||||
resultValue = it[intPreferencesKey(key)] ?: resultValue
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
return resultValue
|
||||
}
|
||||
|
||||
fun DataStore<Preferences>.getString(key: String, defaultValue: String? = null): String? {
|
||||
var resultValue = defaultValue
|
||||
|
||||
runBlocking {
|
||||
BaseApplication.INSTANCE.dataStore.data.first {
|
||||
resultValue = it[stringPreferencesKey(key)] ?: resultValue
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
return resultValue
|
||||
}
|
||||
|
||||
fun DataStore<Preferences>.getStringSet(
|
||||
key: String,
|
||||
defaultValues: MutableSet<String>? = null
|
||||
): MutableSet<String>? {
|
||||
var resultValue = defaultValues
|
||||
|
||||
runBlocking {
|
||||
BaseApplication.INSTANCE.dataStore.data.first {
|
||||
resultValue = it[stringSetPreferencesKey(key)]?.toMutableSet() ?: resultValue
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
return resultValue
|
||||
}
|
||||
|
||||
fun DataStore<Preferences>.getBoolean(key: String, defaultValue: Boolean): Boolean {
|
||||
var resultValue = defaultValue
|
||||
|
||||
runBlocking {
|
||||
BaseApplication.INSTANCE.dataStore.data.first {
|
||||
resultValue = it[booleanPreferencesKey(key)] ?: resultValue
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
return resultValue
|
||||
}
|
||||
|
||||
fun DataStore<Preferences>.getFloat(key: String, defaultValue: Float): Float {
|
||||
var resultValue = defaultValue
|
||||
|
||||
runBlocking {
|
||||
BaseApplication.INSTANCE.dataStore.data.first {
|
||||
resultValue = it[floatPreferencesKey(key)] ?: resultValue
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
return resultValue
|
||||
}
|
||||
|
||||
fun DataStore<Preferences>.getLong(key: String, defaultValue: Long): Long {
|
||||
var resultValue = defaultValue
|
||||
|
||||
runBlocking {
|
||||
BaseApplication.INSTANCE.dataStore.data.first {
|
||||
resultValue = it[longPreferencesKey(key)] ?: resultValue
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
return resultValue
|
||||
}
|
||||
|
|
@ -7,10 +7,10 @@ import androidx.appcompat.widget.Toolbar;
|
|||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.huanchengfly.tieba.post.R;
|
||||
import com.huanchengfly.tieba.post.fragments.SettingsFragment;
|
||||
import com.huanchengfly.tieba.post.fragments.PreferencesFragment;
|
||||
import com.huanchengfly.tieba.post.utils.ThemeUtil;
|
||||
|
||||
public class SettingsActivity extends BaseActivity {
|
||||
public class PreferencesActivity extends BaseActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
@ -27,12 +27,12 @@ public class SettingsActivity extends BaseActivity {
|
|||
}
|
||||
String scrollToPreference = getIntent().getStringExtra("scroll_to_preference");
|
||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
SettingsFragment settingsFragment = new SettingsFragment();
|
||||
PreferencesFragment preferencesFragment = new PreferencesFragment();
|
||||
fragmentManager.beginTransaction()
|
||||
.add(R.id.main, settingsFragment)
|
||||
.add(R.id.main, preferencesFragment)
|
||||
.commit();
|
||||
if (scrollToPreference != null) {
|
||||
settingsFragment.scrollToPreference(scrollToPreference);
|
||||
preferencesFragment.scrollToPreference(scrollToPreference);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -259,7 +259,7 @@ class UserActivity : BaseActivity() {
|
|||
@OnClick(R.id.user_center_action_btn)
|
||||
fun onActionBtnClick(view: View?) {
|
||||
if (TextUtils.equals(profileBean!!.user!!.id, AccountUtil.getUid(this))) {
|
||||
startActivity(WebViewActivity.newIntent(this, getString(R.string.url_edit_info)))
|
||||
goToActivity<EditProfileActivity>()
|
||||
return
|
||||
}
|
||||
if ("1" == profileBean!!.user!!.hasConcerned) {
|
||||
|
|
|
|||
|
|
@ -12,11 +12,10 @@ import android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
|
|||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.preference.EditTextPreference
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.SwitchPreference
|
||||
import androidx.datastore.preferences.core.*
|
||||
import androidx.preference.*
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.huanchengfly.tieba.post.*
|
||||
import com.huanchengfly.tieba.post.R
|
||||
import com.huanchengfly.tieba.post.activities.BlockListActivity
|
||||
import com.huanchengfly.tieba.post.activities.LoginActivity
|
||||
|
|
@ -24,11 +23,13 @@ import com.huanchengfly.tieba.post.components.prefs.TimePickerPreference
|
|||
import com.huanchengfly.tieba.post.fragments.preference.PreferencesFragment
|
||||
import com.huanchengfly.tieba.post.models.database.Account
|
||||
import com.huanchengfly.tieba.post.models.database.Block
|
||||
import com.huanchengfly.tieba.post.toastShort
|
||||
import com.huanchengfly.tieba.post.ui.theme.utils.ThemeUtils
|
||||
import com.huanchengfly.tieba.post.utils.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class SettingsFragment : PreferencesFragment() {
|
||||
class PreferencesFragment : PreferencesFragment() {
|
||||
private var loginInfo: Account? = null
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
|
@ -69,7 +70,8 @@ class SettingsFragment : PreferencesFragment() {
|
|||
|
||||
@SuppressLint("ApplySharedPref")
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
preferenceManager.sharedPreferencesName = "settings"
|
||||
//preferenceManager.sharedPreferencesName = "settings"
|
||||
preferenceManager.preferenceDataStore = DataStorePreference()
|
||||
addPreferencesFromResource(R.xml.preferences)
|
||||
val accountsPreference = findPreference<ListPreference>("switch_account")
|
||||
accountsPreference!!.onPreferenceChangeListener =
|
||||
|
|
@ -197,7 +199,7 @@ class SettingsFragment : PreferencesFragment() {
|
|||
}
|
||||
timePickerPreference.summary = attachContext.getString(
|
||||
R.string.summary_auto_sign_time,
|
||||
preferenceManager.sharedPreferences!!.getString("auto_sign_time", "09:00")
|
||||
preferenceManager.preferenceDataStore!!.getString("auto_sign_time", "09:00")
|
||||
)
|
||||
val clearCache = findPreference<Preference>("clear_cache")
|
||||
clearCache!!.summary = attachContext.getString(
|
||||
|
|
@ -216,7 +218,7 @@ class SettingsFragment : PreferencesFragment() {
|
|||
true
|
||||
}
|
||||
val littleTaliPreference = findPreference<EditTextPreference>("little_tail")
|
||||
val littleTali = preferenceManager.sharedPreferences!!.getString("little_tail", "")
|
||||
val littleTali = preferenceManager.preferenceDataStore!!.getString("little_tail", "")
|
||||
if (littleTali!!.isEmpty()) {
|
||||
littleTaliPreference!!.setSummary(R.string.tip_no_little_tail)
|
||||
} else {
|
||||
|
|
@ -238,7 +240,7 @@ class SettingsFragment : PreferencesFragment() {
|
|||
val aboutPreference = findPreference<Preference>("about")
|
||||
val useCustomTabs = findPreference<SwitchPreference>("use_custom_tabs")
|
||||
useCustomTabs!!.isEnabled =
|
||||
!preferenceManager.sharedPreferences!!.getBoolean("use_webview", true)
|
||||
!preferenceManager.preferenceDataStore!!.getBoolean("use_webview", true)
|
||||
findPreference<Preference>("use_webview")!!.onPreferenceChangeListener =
|
||||
Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any? ->
|
||||
useCustomTabs.isEnabled = !(newValue as Boolean)
|
||||
|
|
@ -282,17 +284,102 @@ class SettingsFragment : PreferencesFragment() {
|
|||
defValue: Boolean = false
|
||||
) {
|
||||
val value =
|
||||
preferenceManager.sharedPreferences!!.getBoolean(switchPreference!!.key, defValue)
|
||||
preferenceManager.preferenceDataStore!!.getBoolean(switchPreference!!.key, defValue)
|
||||
switchPreference.isChecked = value
|
||||
}
|
||||
|
||||
private fun initListPreference(key: String, defValue: String) {
|
||||
val listPreference = findPreference<ListPreference>(key)
|
||||
val value = preferenceManager.sharedPreferences!!.getString(key, defValue)
|
||||
val value = preferenceManager.preferenceDataStore!!.getString(key, defValue)
|
||||
listPreference!!.value = value
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "SettingsFragment"
|
||||
const val TAG = "PreferencesFragment"
|
||||
}
|
||||
|
||||
class DataStorePreference : PreferenceDataStore() {
|
||||
override fun putString(key: String, value: String?) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
BaseApplication.INSTANCE.dataStore.edit {
|
||||
if (value == null) {
|
||||
it.remove(stringPreferencesKey(key))
|
||||
} else {
|
||||
it[stringPreferencesKey(key)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun putStringSet(key: String, values: MutableSet<String>?) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
BaseApplication.INSTANCE.dataStore.edit {
|
||||
if (values == null) {
|
||||
it.remove(stringSetPreferencesKey(key))
|
||||
} else {
|
||||
it[stringSetPreferencesKey(key)] = values
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun putInt(key: String, value: Int) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
BaseApplication.INSTANCE.dataStore.edit {
|
||||
it[intPreferencesKey(key)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun putLong(key: String, value: Long) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
BaseApplication.INSTANCE.dataStore.edit {
|
||||
it[longPreferencesKey(key)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun putFloat(key: String, value: Float) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
BaseApplication.INSTANCE.dataStore.edit {
|
||||
it[floatPreferencesKey(key)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun putBoolean(key: String, value: Boolean) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
BaseApplication.INSTANCE.dataStore.edit {
|
||||
it[booleanPreferencesKey(key)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getString(key: String, defValue: String?): String? {
|
||||
return BaseApplication.INSTANCE.dataStore.getString(key, defValue)
|
||||
}
|
||||
|
||||
override fun getStringSet(
|
||||
key: String,
|
||||
defValues: MutableSet<String>?
|
||||
): MutableSet<String>? {
|
||||
return BaseApplication.INSTANCE.dataStore.getStringSet(key, defValues)
|
||||
}
|
||||
|
||||
override fun getInt(key: String, defValue: Int): Int {
|
||||
return BaseApplication.INSTANCE.dataStore.getInt(key, defValue)
|
||||
}
|
||||
|
||||
override fun getLong(key: String, defValue: Long): Long {
|
||||
return BaseApplication.INSTANCE.dataStore.getLong(key, defValue)
|
||||
}
|
||||
|
||||
override fun getFloat(key: String, defValue: Float): Float {
|
||||
return BaseApplication.INSTANCE.dataStore.getFloat(key, defValue)
|
||||
}
|
||||
|
||||
override fun getBoolean(key: String, defValue: Boolean): Boolean {
|
||||
return BaseApplication.INSTANCE.dataStore.getBoolean(key, defValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ import android.view.ViewGroup;
|
|||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.huanchengfly.tieba.post.R;
|
||||
import com.huanchengfly.tieba.post.activities.SettingsActivity;
|
||||
import com.huanchengfly.tieba.post.activities.PreferencesActivity;
|
||||
import com.huanchengfly.tieba.post.ui.intro.fragments.BaseIntroFragment;
|
||||
import com.huanchengfly.tieba.post.ui.theme.utils.ThemeUtils;
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ public class ExploreFragment extends BaseIntroFragment implements View.OnClickLi
|
|||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.explore_auto_sign:
|
||||
startActivity(new Intent(getAttachContext(), SettingsActivity.class).putExtra("scroll_to_preference", "auto_sign"));
|
||||
startActivity(new Intent(getAttachContext(), PreferencesActivity.class).putExtra("scroll_to_preference", "auto_sign"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,13 @@ package com.huanchengfly.tieba.post.utils
|
|||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import androidx.datastore.core.DataStore
|
||||
import androidx.datastore.preferences.core.*
|
||||
import com.huanchengfly.tieba.post.*
|
||||
import com.huanchengfly.tieba.post.utils.ThemeUtil.TRANSLUCENT_THEME_LIGHT
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.properties.ReadWriteProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
|
|
@ -11,123 +17,216 @@ open class AppPreferencesUtils(context: Context) {
|
|||
private val preferences: SharedPreferences =
|
||||
context.getSharedPreferences("settings", Context.MODE_PRIVATE)
|
||||
|
||||
var autoSign by SharedPreferenceDelegates.boolean(defaultValue = false, key = "auto_sign")
|
||||
private val preferencesDataStore: DataStore<Preferences> = context.dataStore
|
||||
|
||||
var autoSignTime by SharedPreferenceDelegates.string(
|
||||
var autoSign by DataStoreDelegates.boolean(defaultValue = false, key = "auto_sign")
|
||||
|
||||
var autoSignTime by DataStoreDelegates.string(
|
||||
defaultValue = "09:00",
|
||||
key = "auto_sign_time"
|
||||
)
|
||||
|
||||
var checkCIUpdate by SharedPreferenceDelegates.boolean(
|
||||
var checkCIUpdate by DataStoreDelegates.boolean(
|
||||
defaultValue = false
|
||||
)
|
||||
|
||||
var collectThreadSeeLz by SharedPreferenceDelegates.boolean(
|
||||
var collectThreadSeeLz by DataStoreDelegates.boolean(
|
||||
defaultValue = true,
|
||||
key = "collect_thread_see_lz"
|
||||
)
|
||||
|
||||
var customPrimaryColor by SharedPreferenceDelegates.string(key = "custom_primary_color")
|
||||
var customPrimaryColor by DataStoreDelegates.string(key = "custom_primary_color")
|
||||
|
||||
var customStatusBarFontDark by SharedPreferenceDelegates.boolean(
|
||||
var customStatusBarFontDark by DataStoreDelegates.boolean(
|
||||
defaultValue = false,
|
||||
key = "custom_status_bar_font_dark"
|
||||
)
|
||||
|
||||
var customToolbarPrimaryColor by SharedPreferenceDelegates.boolean(
|
||||
var customToolbarPrimaryColor by DataStoreDelegates.boolean(
|
||||
defaultValue = true,
|
||||
key = "custom_toolbar_primary_color"
|
||||
)
|
||||
|
||||
var defaultSortType by SharedPreferenceDelegates.string(
|
||||
var defaultSortType by DataStoreDelegates.string(
|
||||
key = "default_sort_type",
|
||||
defaultValue = "0"
|
||||
)
|
||||
|
||||
var darkTheme by SharedPreferenceDelegates.string(key = "dark_theme", defaultValue = "dark")
|
||||
var darkTheme by DataStoreDelegates.string(key = "dark_theme", defaultValue = "dark")
|
||||
|
||||
var followSystemNight by SharedPreferenceDelegates.boolean(
|
||||
var followSystemNight by DataStoreDelegates.boolean(
|
||||
defaultValue = true,
|
||||
key = "follow_system_night"
|
||||
)
|
||||
|
||||
var fontScale by SharedPreferenceDelegates.float(defaultValue = 1.0f)
|
||||
var fontScale by DataStoreDelegates.float(defaultValue = 1.0f)
|
||||
|
||||
var forumFabFunction by SharedPreferenceDelegates.string(defaultValue = "post")
|
||||
var forumFabFunction by DataStoreDelegates.string(defaultValue = "post")
|
||||
|
||||
var hideExplore by SharedPreferenceDelegates.boolean(defaultValue = false)
|
||||
var hideExplore by DataStoreDelegates.boolean(defaultValue = false)
|
||||
|
||||
var hideForumIntroAndStat by SharedPreferenceDelegates.boolean(defaultValue = false)
|
||||
var hideForumIntroAndStat by DataStoreDelegates.boolean(defaultValue = false)
|
||||
|
||||
var homePageScroll by SharedPreferenceDelegates.boolean(defaultValue = false)
|
||||
var homePageScroll by DataStoreDelegates.boolean(defaultValue = false)
|
||||
|
||||
var imageLoadType by SharedPreferenceDelegates.string(
|
||||
var imageLoadType by DataStoreDelegates.string(
|
||||
key = "image_load_type",
|
||||
defaultValue = "0"
|
||||
)
|
||||
|
||||
var listItemsBackgroundIntermixed by SharedPreferenceDelegates.boolean(defaultValue = true)
|
||||
var listItemsBackgroundIntermixed by DataStoreDelegates.boolean(defaultValue = true)
|
||||
|
||||
var listSingle by SharedPreferenceDelegates.boolean(defaultValue = false)
|
||||
var listSingle by DataStoreDelegates.boolean(defaultValue = false)
|
||||
|
||||
var littleTail by SharedPreferenceDelegates.string(key = "little_tail")
|
||||
var littleTail by DataStoreDelegates.string(key = "little_tail")
|
||||
|
||||
var loadPictureWhenScroll by SharedPreferenceDelegates.boolean(defaultValue = true)
|
||||
var loadPictureWhenScroll by DataStoreDelegates.boolean(defaultValue = true)
|
||||
|
||||
var oldTheme by SharedPreferenceDelegates.string(key = "old_theme")
|
||||
var oldTheme by DataStoreDelegates.string(key = "old_theme")
|
||||
|
||||
var oksignSlowMode by SharedPreferenceDelegates.boolean(
|
||||
var oksignSlowMode by DataStoreDelegates.boolean(
|
||||
defaultValue = true,
|
||||
key = "oksign_slow_mode"
|
||||
)
|
||||
|
||||
var postOrReplyWarning by SharedPreferenceDelegates.boolean(defaultValue = true)
|
||||
var postOrReplyWarning by DataStoreDelegates.boolean(defaultValue = true)
|
||||
|
||||
var radius by SharedPreferenceDelegates.int(defaultValue = 8)
|
||||
var radius by DataStoreDelegates.int(defaultValue = 8)
|
||||
|
||||
var signDay by SharedPreferenceDelegates.int(defaultValue = -1, key = "sign_day")
|
||||
var signDay by DataStoreDelegates.int(defaultValue = -1, key = "sign_day")
|
||||
|
||||
var showBothUsernameAndNickname by SharedPreferenceDelegates.boolean(
|
||||
var showBothUsernameAndNickname by DataStoreDelegates.boolean(
|
||||
defaultValue = false,
|
||||
key = "show_both_username_and_nickname"
|
||||
)
|
||||
|
||||
var showShortcutInThread by SharedPreferenceDelegates.boolean(defaultValue = true)
|
||||
var showShortcutInThread by DataStoreDelegates.boolean(defaultValue = true)
|
||||
|
||||
var showTopForumInNormalList by SharedPreferenceDelegates.boolean(
|
||||
var showTopForumInNormalList by DataStoreDelegates.boolean(
|
||||
defaultValue = true,
|
||||
key = "show_top_forum_in_normal_list"
|
||||
)
|
||||
|
||||
var statusBarDarker by SharedPreferenceDelegates.boolean(
|
||||
var statusBarDarker by DataStoreDelegates.boolean(
|
||||
defaultValue = true,
|
||||
key = "status_bar_darker"
|
||||
)
|
||||
|
||||
var theme by SharedPreferenceDelegates.string(defaultValue = ThemeUtil.THEME_WHITE)
|
||||
var theme by DataStoreDelegates.string(defaultValue = ThemeUtil.THEME_WHITE)
|
||||
|
||||
var translucentBackgroundAlpha by SharedPreferenceDelegates.int(
|
||||
var translucentBackgroundAlpha by DataStoreDelegates.int(
|
||||
defaultValue = 255,
|
||||
key = "translucent_background_alpha"
|
||||
)
|
||||
|
||||
var translucentBackgroundBlur by SharedPreferenceDelegates.int(key = "translucent_background_blur")
|
||||
var translucentBackgroundBlur by DataStoreDelegates.int(key = "translucent_background_blur")
|
||||
|
||||
var translucentBackgroundTheme by SharedPreferenceDelegates.int(
|
||||
var translucentBackgroundTheme by DataStoreDelegates.int(
|
||||
defaultValue = TRANSLUCENT_THEME_LIGHT,
|
||||
key = "translucent_background_theme"
|
||||
)
|
||||
|
||||
var translucentThemeBackgroundPath by SharedPreferenceDelegates.string(key = "translucent_theme_background_path")
|
||||
var translucentThemeBackgroundPath by DataStoreDelegates.string(key = "translucent_theme_background_path")
|
||||
|
||||
var translucentPrimaryColor by SharedPreferenceDelegates.string(key = "translucent_primary_color")
|
||||
var translucentPrimaryColor by DataStoreDelegates.string(key = "translucent_primary_color")
|
||||
|
||||
var useCustomTabs by SharedPreferenceDelegates.boolean(
|
||||
var useCustomTabs by DataStoreDelegates.boolean(
|
||||
defaultValue = true,
|
||||
key = "use_custom_tabs"
|
||||
)
|
||||
|
||||
var useWebView by SharedPreferenceDelegates.boolean(defaultValue = true, key = "use_webview")
|
||||
var useWebView by DataStoreDelegates.boolean(defaultValue = true, key = "use_webview")
|
||||
|
||||
private object DataStoreDelegates {
|
||||
fun int(
|
||||
defaultValue: Int = 0,
|
||||
key: String? = null
|
||||
) = object : ReadWriteProperty<AppPreferencesUtils, Int> {
|
||||
override fun getValue(thisRef: AppPreferencesUtils, property: KProperty<*>): Int {
|
||||
return thisRef.preferencesDataStore.getInt(key ?: property.name, defaultValue)
|
||||
}
|
||||
|
||||
override fun setValue(
|
||||
thisRef: AppPreferencesUtils,
|
||||
property: KProperty<*>,
|
||||
value: Int
|
||||
) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
thisRef.preferencesDataStore.edit {
|
||||
it[intPreferencesKey(key ?: property.name)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun string(
|
||||
defaultValue: String? = null,
|
||||
key: String? = null
|
||||
) = object : ReadWriteProperty<AppPreferencesUtils, String?> {
|
||||
override fun getValue(thisRef: AppPreferencesUtils, property: KProperty<*>): String? {
|
||||
return thisRef.preferencesDataStore.getString(key ?: property.name, defaultValue)
|
||||
?: defaultValue
|
||||
}
|
||||
|
||||
override fun setValue(
|
||||
thisRef: AppPreferencesUtils,
|
||||
property: KProperty<*>,
|
||||
value: String?
|
||||
) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
thisRef.preferencesDataStore.edit {
|
||||
if (value == null) {
|
||||
it.remove(stringPreferencesKey(key ?: property.name))
|
||||
} else {
|
||||
it[stringPreferencesKey(key ?: property.name)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun float(
|
||||
defaultValue: Float = 0F,
|
||||
key: String? = null
|
||||
) = object : ReadWriteProperty<AppPreferencesUtils, Float> {
|
||||
override fun getValue(thisRef: AppPreferencesUtils, property: KProperty<*>): Float {
|
||||
return thisRef.preferencesDataStore.getFloat(key ?: property.name, defaultValue)
|
||||
}
|
||||
|
||||
override fun setValue(
|
||||
thisRef: AppPreferencesUtils,
|
||||
property: KProperty<*>,
|
||||
value: Float
|
||||
) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
thisRef.preferencesDataStore.edit {
|
||||
it[floatPreferencesKey(key ?: property.name)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun boolean(
|
||||
defaultValue: Boolean = false,
|
||||
key: String? = null
|
||||
) = object : ReadWriteProperty<AppPreferencesUtils, Boolean> {
|
||||
override fun getValue(thisRef: AppPreferencesUtils, property: KProperty<*>): Boolean {
|
||||
return thisRef.preferencesDataStore.getBoolean(key ?: property.name, defaultValue)
|
||||
}
|
||||
|
||||
override fun setValue(
|
||||
thisRef: AppPreferencesUtils,
|
||||
property: KProperty<*>,
|
||||
value: Boolean
|
||||
) {
|
||||
MainScope().launch(Dispatchers.IO) {
|
||||
thisRef.preferencesDataStore.edit {
|
||||
it[booleanPreferencesKey(key ?: property.name)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private object SharedPreferenceDelegates {
|
||||
fun int(
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:backgroundTint="@color/default_color_window_background"
|
||||
tools:context=".activities.SettingsActivity">
|
||||
tools:context=".activities.PreferencesActivity">
|
||||
|
||||
<include layout="@layout/layout_appbar" />
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue