mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-03-13 01:50:07 +01:00
Merge pull request #607 from ultrasonic/pref_delegate
Use delegate for Settings, reduces Boilerplate code
This commit is contained in:
commit
2197959507
@ -59,24 +59,13 @@ object Settings {
|
|||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_ALWAYS_SHOW_NOTIFICATION, false)
|
return preferences.getBoolean(Constants.PREFERENCES_KEY_ALWAYS_SHOW_NOTIFICATION, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
val isLockScreenEnabled: Boolean
|
var isLockScreenEnabled by BooleanSetting(Constants.PREFERENCES_KEY_SHOW_LOCK_SCREEN_CONTROLS)
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(
|
|
||||||
Constants.PREFERENCES_KEY_SHOW_LOCK_SCREEN_CONTROLS,
|
|
||||||
false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val theme: String?
|
var theme by StringSetting(
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(
|
|
||||||
Constants.PREFERENCES_KEY_THEME,
|
Constants.PREFERENCES_KEY_THEME,
|
||||||
Constants.PREFERENCES_KEY_THEME_DARK
|
Constants.PREFERENCES_KEY_THEME_DARK
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val maxBitRate: Int
|
val maxBitRate: Int
|
||||||
@ -102,23 +91,6 @@ object Settings {
|
|||||||
return if (preloadCount == -1) Int.MAX_VALUE else preloadCount
|
return if (preloadCount == -1) Int.MAX_VALUE else preloadCount
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
var cacheLocation: String
|
|
||||||
get() {
|
|
||||||
return preferences.getString(
|
|
||||||
Constants.PREFERENCES_KEY_CACHE_LOCATION,
|
|
||||||
FileUtil.defaultMusicDirectory.path
|
|
||||||
)!!
|
|
||||||
}
|
|
||||||
set(location) {
|
|
||||||
val editor = preferences.edit()
|
|
||||||
editor.putString(
|
|
||||||
Constants.PREFERENCES_KEY_CACHE_LOCATION,
|
|
||||||
location
|
|
||||||
)
|
|
||||||
editor.apply()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val cacheSizeMB: Int
|
val cacheSizeMB: Int
|
||||||
get() {
|
get() {
|
||||||
@ -130,138 +102,88 @@ object Settings {
|
|||||||
return if (cacheSize == -1) Int.MAX_VALUE else cacheSize
|
return if (cacheSize == -1) Int.MAX_VALUE else cacheSize
|
||||||
}
|
}
|
||||||
|
|
||||||
val isWifiRequiredForDownload: Boolean
|
@JvmStatic
|
||||||
get() {
|
var cacheLocation by StringSetting(
|
||||||
val preferences = preferences
|
Constants.PREFERENCES_KEY_CACHE_LOCATION,
|
||||||
return preferences.getBoolean(
|
FileUtil.defaultMusicDirectory.path
|
||||||
|
)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var isWifiRequiredForDownload by BooleanSetting(
|
||||||
Constants.PREFERENCES_KEY_WIFI_REQUIRED_FOR_DOWNLOAD,
|
Constants.PREFERENCES_KEY_WIFI_REQUIRED_FOR_DOWNLOAD,
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
val shouldDisplayBitrateWithArtist: Boolean
|
@JvmStatic
|
||||||
get() {
|
var shareOnServer by BooleanSetting(Constants.PREFERENCES_KEY_SHARE_ON_SERVER, true)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(
|
@JvmStatic
|
||||||
|
var shouldDisplayBitrateWithArtist by BooleanSetting(
|
||||||
Constants.PREFERENCES_KEY_DISPLAY_BITRATE_WITH_ARTIST,
|
Constants.PREFERENCES_KEY_DISPLAY_BITRATE_WITH_ARTIST,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val shouldUseFolderForArtistName: Boolean
|
var shouldUseFolderForArtistName
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_USE_FOLDER_FOR_ALBUM_ARTIST, false)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(
|
@JvmStatic
|
||||||
Constants.PREFERENCES_KEY_USE_FOLDER_FOR_ALBUM_ARTIST,
|
var shouldShowTrackNumber
|
||||||
false
|
by BooleanSetting(Constants.PREFERENCES_KEY_SHOW_TRACK_NUMBER, false)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var defaultAlbums
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_DEFAULT_ALBUMS, "5")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var maxAlbums
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_MAX_ALBUMS, "20")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var defaultSongs
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_DEFAULT_SONGS, "10")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var maxSongs
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_MAX_SONGS, "25")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var maxArtists
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_MAX_ARTISTS, "10")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var defaultArtists
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_DEFAULT_ARTISTS, "3")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var bufferLength
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_BUFFER_LENGTH, "5")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var incrementTime
|
||||||
|
by StringIntSetting(Constants.PREFERENCES_KEY_INCREMENT_TIME, "5")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var mediaButtonsEnabled
|
||||||
|
by BooleanSetting(Constants.PREFERENCES_KEY_MEDIA_BUTTONS, true)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var showNowPlaying
|
||||||
|
by BooleanSetting(Constants.PREFERENCES_KEY_SHOW_NOW_PLAYING, true)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var gaplessPlayback
|
||||||
|
by BooleanSetting(Constants.PREFERENCES_KEY_GAPLESS_PLAYBACK, false)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
var shouldTransitionOnPlayback by BooleanSetting(
|
||||||
|
Constants.PREFERENCES_KEY_DOWNLOAD_TRANSITION,
|
||||||
|
true
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
val shouldShowTrackNumber: Boolean
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SHOW_TRACK_NUMBER, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultAlbums: Int
|
var shouldUseId3Tags
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_ID3_TAGS, false)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_ALBUMS, "5")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val maxAlbums: Int
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_MAX_ALBUMS, "20")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val defaultSongs: Int
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_SONGS, "10")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val maxSongs: Int
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_MAX_SONGS, "25")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val maxArtists: Int
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_MAX_ARTISTS, "10")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val defaultArtists: Int
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_ARTISTS, "3")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val bufferLength: Int
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_BUFFER_LENGTH, "5")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val incrementTime: Int
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_INCREMENT_TIME, "5")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val mediaButtonsEnabled: Boolean
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_MEDIA_BUTTONS, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val showNowPlaying: Boolean
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SHOW_NOW_PLAYING, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val gaplessPlayback: Boolean
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_GAPLESS_PLAYBACK, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val shouldTransitionOnPlayback: Boolean
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_DOWNLOAD_TRANSITION, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
val shouldUseId3Tags: Boolean
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_ID3_TAGS, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
val shouldShowArtistPicture: Boolean
|
val shouldShowArtistPicture: Boolean
|
||||||
get() {
|
get() {
|
||||||
@ -274,109 +196,52 @@ object Settings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val chatRefreshInterval: Int
|
var chatRefreshInterval by StringIntSetting(
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(
|
|
||||||
Constants.PREFERENCES_KEY_CHAT_REFRESH_INTERVAL,
|
Constants.PREFERENCES_KEY_CHAT_REFRESH_INTERVAL,
|
||||||
"5000"
|
"5000"
|
||||||
)!!.toInt()
|
)
|
||||||
}
|
|
||||||
|
|
||||||
val directoryCacheTime: Int
|
var directoryCacheTime by StringIntSetting(
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(
|
|
||||||
Constants.PREFERENCES_KEY_DIRECTORY_CACHE_TIME,
|
Constants.PREFERENCES_KEY_DIRECTORY_CACHE_TIME,
|
||||||
"300"
|
"300"
|
||||||
)!!.toInt()
|
)
|
||||||
}
|
|
||||||
|
|
||||||
val shouldClearPlaylist: Boolean
|
var shouldClearPlaylist
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_CLEAR_PLAYLIST, false)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_CLEAR_PLAYLIST, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
val shouldSortByDisc: Boolean
|
var shouldSortByDisc
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_DISC_SORT, false)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_DISC_SORT, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
val shouldClearBookmark: Boolean
|
var shouldClearBookmark
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_CLEAR_BOOKMARK, false)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_CLEAR_BOOKMARK, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
val singleButtonPlayPause: Boolean
|
var singleButtonPlayPause
|
||||||
get() {
|
by BooleanSetting(
|
||||||
val preferences = preferences
|
Constants.PREFERENCES_KEY_SINGLE_BUTTON_PLAY_PAUSE,
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SINGLE_BUTTON_PLAY_PAUSE, false)
|
false
|
||||||
}
|
)
|
||||||
|
|
||||||
// Inverted for readability
|
// Inverted for readability
|
||||||
val shouldSendBluetoothNotifications: Boolean
|
var shouldSendBluetoothNotifications by BooleanSetting(
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(
|
|
||||||
Constants.PREFERENCES_KEY_SEND_BLUETOOTH_NOTIFICATIONS,
|
Constants.PREFERENCES_KEY_SEND_BLUETOOTH_NOTIFICATIONS,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
val shouldSendBluetoothAlbumArt: Boolean
|
var shouldSendBluetoothAlbumArt
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_SEND_BLUETOOTH_ALBUM_ART, true)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SEND_BLUETOOTH_ALBUM_ART, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
val shouldDisableNowPlayingListSending: Boolean
|
var shouldDisableNowPlayingListSending
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_DISABLE_SEND_NOW_PLAYING_LIST, false)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(
|
|
||||||
Constants.PREFERENCES_KEY_DISABLE_SEND_NOW_PLAYING_LIST, false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val viewRefreshInterval: Int
|
var viewRefreshInterval
|
||||||
get() {
|
by StringIntSetting(Constants.PREFERENCES_KEY_VIEW_REFRESH, "1000")
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_VIEW_REFRESH, "1000")!!
|
|
||||||
.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
var shouldAskForShareDetails: Boolean
|
var shouldAskForShareDetails
|
||||||
get() {
|
by BooleanSetting(Constants.PREFERENCES_KEY_ASK_FOR_SHARE_DETAILS, true)
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_ASK_FOR_SHARE_DETAILS, true)
|
|
||||||
}
|
|
||||||
set(shouldAskForShareDetails) {
|
|
||||||
val preferences = preferences
|
|
||||||
val editor = preferences.edit()
|
|
||||||
editor.putBoolean(
|
|
||||||
Constants.PREFERENCES_KEY_ASK_FOR_SHARE_DETAILS,
|
|
||||||
shouldAskForShareDetails
|
|
||||||
)
|
|
||||||
editor.apply()
|
|
||||||
}
|
|
||||||
|
|
||||||
var defaultShareDescription: String?
|
var defaultShareDescription
|
||||||
get() {
|
by StringSetting(Constants.PREFERENCES_KEY_DEFAULT_SHARE_DESCRIPTION, "")
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_SHARE_DESCRIPTION, "")
|
|
||||||
}
|
|
||||||
set(defaultShareDescription) {
|
|
||||||
val preferences = preferences
|
|
||||||
val editor = preferences.edit()
|
|
||||||
editor.putString(
|
|
||||||
Constants.PREFERENCES_KEY_DEFAULT_SHARE_DESCRIPTION,
|
|
||||||
defaultShareDescription
|
|
||||||
)
|
|
||||||
editor.apply()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val shareGreeting: String?
|
val shareGreeting: String?
|
||||||
@ -393,35 +258,10 @@ object Settings {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
var shareOnServer: Boolean
|
var defaultShareExpiration by StringSetting(
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SHARE_ON_SERVER, true)!!
|
|
||||||
}
|
|
||||||
set(shareOnServer) {
|
|
||||||
val preferences = preferences
|
|
||||||
val editor = preferences.edit()
|
|
||||||
editor.putBoolean(
|
|
||||||
Constants.PREFERENCES_KEY_SHARE_ON_SERVER,
|
|
||||||
shareOnServer
|
|
||||||
)
|
|
||||||
editor.apply()
|
|
||||||
}
|
|
||||||
|
|
||||||
var defaultShareExpiration: String
|
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getString(Constants.PREFERENCES_KEY_DEFAULT_SHARE_EXPIRATION, "0")!!
|
|
||||||
}
|
|
||||||
set(defaultShareExpiration) {
|
|
||||||
val preferences = preferences
|
|
||||||
val editor = preferences.edit()
|
|
||||||
editor.putString(
|
|
||||||
Constants.PREFERENCES_KEY_DEFAULT_SHARE_EXPIRATION,
|
Constants.PREFERENCES_KEY_DEFAULT_SHARE_EXPIRATION,
|
||||||
defaultShareExpiration
|
"0"
|
||||||
)
|
)
|
||||||
editor.apply()
|
|
||||||
}
|
|
||||||
|
|
||||||
val defaultShareExpirationInMillis: Long
|
val defaultShareExpirationInMillis: Long
|
||||||
get() {
|
get() {
|
||||||
@ -439,37 +279,24 @@ object Settings {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
val shouldShowAllSongsByArtist: Boolean
|
var shouldShowAllSongsByArtist by BooleanSetting(
|
||||||
get() {
|
Constants.PREFERENCES_KEY_SHOW_ALL_SONGS_BY_ARTIST,
|
||||||
val preferences = preferences
|
false
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SHOW_ALL_SONGS_BY_ARTIST, false)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val resumeOnBluetoothDevice: Int
|
var resumeOnBluetoothDevice by IntSetting(
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getInt(
|
|
||||||
Constants.PREFERENCES_KEY_RESUME_ON_BLUETOOTH_DEVICE,
|
Constants.PREFERENCES_KEY_RESUME_ON_BLUETOOTH_DEVICE,
|
||||||
Constants.PREFERENCE_VALUE_DISABLED
|
Constants.PREFERENCE_VALUE_DISABLED
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val pauseOnBluetoothDevice: Int
|
var pauseOnBluetoothDevice by IntSetting(
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getInt(
|
|
||||||
Constants.PREFERENCES_KEY_PAUSE_ON_BLUETOOTH_DEVICE,
|
Constants.PREFERENCES_KEY_PAUSE_ON_BLUETOOTH_DEVICE,
|
||||||
Constants.PREFERENCE_VALUE_A2DP
|
Constants.PREFERENCE_VALUE_A2DP
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
val debugLogToFile: Boolean
|
var debugLogToFile by BooleanSetting(Constants.PREFERENCES_KEY_DEBUG_LOG_TO_FILE, false)
|
||||||
get() {
|
|
||||||
val preferences = preferences
|
|
||||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_DEBUG_LOG_TO_FILE, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val preferences: SharedPreferences
|
val preferences: SharedPreferences
|
||||||
|
@ -0,0 +1,79 @@
|
|||||||
|
package org.moire.ultrasonic.util
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import androidx.core.content.edit
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
|
import kotlin.properties.ReadWriteProperty
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
import org.moire.ultrasonic.app.UApp
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Yet another implementation of Shared Preferences using Delegated Properties
|
||||||
|
*
|
||||||
|
* Check out https://medium.com/@FrostRocketInc/delegated-shared-preferences-in-kotlin-45b82d6e52d0
|
||||||
|
* for a detailed walkthrough.
|
||||||
|
*
|
||||||
|
* @author Matthew Groves
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class SettingsDelegate<T> : ReadWriteProperty<Any, T> {
|
||||||
|
protected val sharedPreferences: SharedPreferences by lazy {
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(UApp.applicationContext())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class StringSetting(private val key: String, private val defaultValue: String = "") :
|
||||||
|
SettingsDelegate<String>() {
|
||||||
|
override fun getValue(thisRef: Any, property: KProperty<*>) =
|
||||||
|
sharedPreferences.getString(key, defaultValue)!!
|
||||||
|
|
||||||
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: String) =
|
||||||
|
sharedPreferences.edit { putString(key, value) }
|
||||||
|
}
|
||||||
|
|
||||||
|
class IntSetting(private val key: String, private val defaultValue: Int = 0) :
|
||||||
|
SettingsDelegate<Int>() {
|
||||||
|
override fun getValue(thisRef: Any, property: KProperty<*>) =
|
||||||
|
sharedPreferences.getInt(key, defaultValue)
|
||||||
|
|
||||||
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Int) =
|
||||||
|
sharedPreferences.edit { putInt(key, value) }
|
||||||
|
}
|
||||||
|
|
||||||
|
class StringIntSetting(private val key: String, private val defaultValue: String = "0") :
|
||||||
|
SettingsDelegate<Int>() {
|
||||||
|
override fun getValue(thisRef: Any, property: KProperty<*>) =
|
||||||
|
sharedPreferences.getString(key, defaultValue)!!.toInt()
|
||||||
|
|
||||||
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Int) =
|
||||||
|
sharedPreferences.edit { putString(key, value.toString()) }
|
||||||
|
}
|
||||||
|
|
||||||
|
class LongSetting(private val key: String, private val defaultValue: Long = 0.toLong()) :
|
||||||
|
SettingsDelegate<Long>() {
|
||||||
|
override fun getValue(thisRef: Any, property: KProperty<*>) =
|
||||||
|
sharedPreferences.getLong(key, defaultValue)
|
||||||
|
|
||||||
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Long) =
|
||||||
|
sharedPreferences.edit { putLong(key, value) }
|
||||||
|
}
|
||||||
|
|
||||||
|
class FloatSetting(
|
||||||
|
private val key: String,
|
||||||
|
private val defaultValue: Float = 0.toFloat()
|
||||||
|
) : SettingsDelegate<Float>() {
|
||||||
|
override fun getValue(thisRef: Any, property: KProperty<*>) =
|
||||||
|
sharedPreferences.getFloat(key, defaultValue)
|
||||||
|
|
||||||
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Float) =
|
||||||
|
sharedPreferences.edit { putFloat(key, value) }
|
||||||
|
}
|
||||||
|
|
||||||
|
class BooleanSetting(private val key: String, private val defaultValue: Boolean = false) :
|
||||||
|
SettingsDelegate<Boolean>() {
|
||||||
|
override fun getValue(thisRef: Any, property: KProperty<*>) =
|
||||||
|
sharedPreferences.getBoolean(key, defaultValue)
|
||||||
|
|
||||||
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Boolean) =
|
||||||
|
sharedPreferences.edit { putBoolean(key, value) }
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user