mirror of
https://gitlab.com/ultrasonic/ultrasonic.git
synced 2025-05-03 17:11:33 +03:00
Merge branch 'pref' into 'develop'
Fix ListPreference lookups Closes #799 See merge request ultrasonic/ultrasonic!808
This commit is contained in:
commit
43891f72a2
@ -46,7 +46,6 @@ import org.moire.ultrasonic.util.FileUtil.ultrasonicDirectory
|
|||||||
import org.moire.ultrasonic.util.InfoDialog
|
import org.moire.ultrasonic.util.InfoDialog
|
||||||
import org.moire.ultrasonic.util.Settings
|
import org.moire.ultrasonic.util.Settings
|
||||||
import org.moire.ultrasonic.util.Settings.preferences
|
import org.moire.ultrasonic.util.Settings.preferences
|
||||||
import org.moire.ultrasonic.util.Settings.shareGreeting
|
|
||||||
import org.moire.ultrasonic.util.Settings.shouldUseId3Tags
|
import org.moire.ultrasonic.util.Settings.shouldUseId3Tags
|
||||||
import org.moire.ultrasonic.util.Storage
|
import org.moire.ultrasonic.util.Storage
|
||||||
import org.moire.ultrasonic.util.TimeSpanPreference
|
import org.moire.ultrasonic.util.TimeSpanPreference
|
||||||
@ -63,27 +62,9 @@ class SettingsFragment :
|
|||||||
OnSharedPreferenceChangeListener,
|
OnSharedPreferenceChangeListener,
|
||||||
KoinComponent {
|
KoinComponent {
|
||||||
private var theme: ListPreference? = null
|
private var theme: ListPreference? = null
|
||||||
private var maxBitrateWifi: ListPreference? = null
|
|
||||||
private var maxBitrateMobile: ListPreference? = null
|
|
||||||
private var cacheSize: ListPreference? = null
|
|
||||||
private var cacheLocation: Preference? = null
|
private var cacheLocation: Preference? = null
|
||||||
private var preloadCount: ListPreference? = null
|
|
||||||
private var incrementTime: ListPreference? = null
|
|
||||||
private var networkTimeout: ListPreference? = null
|
|
||||||
private var maxAlbums: ListPreference? = null
|
|
||||||
private var maxSongs: ListPreference? = null
|
|
||||||
private var maxArtists: ListPreference? = null
|
|
||||||
private var defaultAlbums: ListPreference? = null
|
|
||||||
private var defaultSongs: ListPreference? = null
|
|
||||||
private var defaultArtists: ListPreference? = null
|
|
||||||
private var chatRefreshInterval: ListPreference? = null
|
|
||||||
private var directoryCacheTime: ListPreference? = null
|
|
||||||
private var mediaButtonsEnabled: CheckBoxPreference? = null
|
|
||||||
private var showArtistPicture: CheckBoxPreference? = null
|
private var showArtistPicture: CheckBoxPreference? = null
|
||||||
private var useId3TagsOffline: CheckBoxPreference? = null
|
private var useId3TagsOffline: CheckBoxPreference? = null
|
||||||
private var sharingDefaultDescription: EditTextPreference? = null
|
|
||||||
private var sharingDefaultGreeting: EditTextPreference? = null
|
|
||||||
private var sharingDefaultExpiration: TimeSpanPreference? = null
|
|
||||||
private var resumeOnBluetoothDevice: Preference? = null
|
private var resumeOnBluetoothDevice: Preference? = null
|
||||||
private var pauseOnBluetoothDevice: Preference? = null
|
private var pauseOnBluetoothDevice: Preference? = null
|
||||||
private var debugLogToFile: CheckBoxPreference? = null
|
private var debugLogToFile: CheckBoxPreference? = null
|
||||||
@ -99,28 +80,6 @@ class SettingsFragment :
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setTitle(this, R.string.menu_settings)
|
setTitle(this, R.string.menu_settings)
|
||||||
theme = findPreference(getString(R.string.setting_key_theme))
|
theme = findPreference(getString(R.string.setting_key_theme))
|
||||||
maxBitrateWifi = findPreference(getString(R.string.setting_key_max_bitrate_wifi))
|
|
||||||
maxBitrateMobile = findPreference(getString(R.string.setting_key_max_bitrate_mobile))
|
|
||||||
cacheSize = findPreference(getString(R.string.setting_key_cache_size))
|
|
||||||
cacheLocation = findPreference(getString(R.string.setting_key_cache_location))
|
|
||||||
preloadCount = findPreference(getString(R.string.setting_key_preload_count))
|
|
||||||
incrementTime = findPreference(getString(R.string.setting_key_increment_time))
|
|
||||||
networkTimeout = findPreference(getString(R.string.setting_key_network_timeout))
|
|
||||||
maxAlbums = findPreference(getString(R.string.setting_key_max_albums))
|
|
||||||
maxSongs = findPreference(getString(R.string.setting_key_max_songs))
|
|
||||||
maxArtists = findPreference(getString(R.string.setting_key_max_artists))
|
|
||||||
defaultArtists = findPreference(getString(R.string.setting_key_default_artists))
|
|
||||||
defaultSongs = findPreference(getString(R.string.setting_key_default_songs))
|
|
||||||
defaultAlbums = findPreference(getString(R.string.setting_key_default_albums))
|
|
||||||
chatRefreshInterval = findPreference(getString(R.string.setting_key_chat_refresh_interval))
|
|
||||||
directoryCacheTime = findPreference(getString(R.string.setting_key_directory_cache_time))
|
|
||||||
mediaButtonsEnabled = findPreference(getString(R.string.setting_key_media_buttons))
|
|
||||||
sharingDefaultDescription =
|
|
||||||
findPreference(getString(R.string.setting_key_default_share_description))
|
|
||||||
sharingDefaultGreeting =
|
|
||||||
findPreference(getString(R.string.setting_key_default_share_greeting))
|
|
||||||
sharingDefaultExpiration =
|
|
||||||
findPreference(getString(R.string.setting_key_default_share_expiration))
|
|
||||||
resumeOnBluetoothDevice =
|
resumeOnBluetoothDevice =
|
||||||
findPreference(getString(R.string.setting_key_resume_on_bluetooth_device))
|
findPreference(getString(R.string.setting_key_resume_on_bluetooth_device))
|
||||||
pauseOnBluetoothDevice =
|
pauseOnBluetoothDevice =
|
||||||
@ -129,8 +88,7 @@ class SettingsFragment :
|
|||||||
showArtistPicture = findPreference(getString(R.string.setting_key_show_artist_picture))
|
showArtistPicture = findPreference(getString(R.string.setting_key_show_artist_picture))
|
||||||
useId3TagsOffline = findPreference(getString(R.string.setting_key_id3_tags_offline))
|
useId3TagsOffline = findPreference(getString(R.string.setting_key_id3_tags_offline))
|
||||||
customCacheLocation = findPreference(getString(R.string.setting_key_custom_cache_location))
|
customCacheLocation = findPreference(getString(R.string.setting_key_custom_cache_location))
|
||||||
|
cacheLocation = findPreference(getString(R.string.setting_key_cache_location))
|
||||||
sharingDefaultGreeting?.text = shareGreeting
|
|
||||||
|
|
||||||
setupTextColors()
|
setupTextColors()
|
||||||
setupClearSearchPreference()
|
setupClearSearchPreference()
|
||||||
@ -160,14 +118,29 @@ class SettingsFragment :
|
|||||||
useId3TagsOffline?.summary = warning
|
useId3TagsOffline?.summary = warning
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
update()
|
|
||||||
|
// Get all setting keys and populate the summaries
|
||||||
|
Settings.getAllKeys().forEach {
|
||||||
|
updatePreferenceSummaries(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
updateCustomPreferences()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will be called when we return from the file picker
|
* This function will be called when we return from the file picker
|
||||||
* with a new custom cache location
|
* with a new custom cache location
|
||||||
|
*
|
||||||
|
* TODO: This method has been deprecated in favor of using the Activity Result API
|
||||||
|
* which brings increased type safety via an ActivityResultContract and the prebuilt
|
||||||
|
* contracts for common intents available in
|
||||||
|
* androidx.activity.result.contract.ActivityResultContracts,
|
||||||
|
* provides hooks for testing, and allow receiving results in separate,
|
||||||
|
* testable classes independent from your fragment.
|
||||||
|
* Use registerForActivityResult(ActivityResultContract, ActivityResultCallback) with the
|
||||||
|
* appropriate ActivityResultContract and handling the result in the callback.
|
||||||
*/
|
*/
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||||
if (
|
if (
|
||||||
@ -218,7 +191,10 @@ class SettingsFragment :
|
|||||||
|
|
||||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
|
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
|
||||||
Timber.d("Preference changed: %s", key)
|
Timber.d("Preference changed: %s", key)
|
||||||
update()
|
updateCustomPreferences()
|
||||||
|
|
||||||
|
updatePreferenceSummaries(key)
|
||||||
|
|
||||||
when (key) {
|
when (key) {
|
||||||
getString(R.string.setting_key_hide_media) -> {
|
getString(R.string.setting_key_hide_media) -> {
|
||||||
setHideMedia(sharedPreferences.getBoolean(key, false))
|
setHideMedia(sharedPreferences.getBoolean(key, false))
|
||||||
@ -246,6 +222,30 @@ class SettingsFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update preference summaries to reflect the current select item (or entered text) in the UI
|
||||||
|
*
|
||||||
|
* @param key: The key of the preference to update
|
||||||
|
*/
|
||||||
|
private fun updatePreferenceSummaries(key: String) {
|
||||||
|
try {
|
||||||
|
when (val pref: Preference? = findPreference(key)) {
|
||||||
|
is ListPreference -> {
|
||||||
|
pref.summary = pref.entry
|
||||||
|
}
|
||||||
|
is EditTextPreference -> {
|
||||||
|
pref.summary = pref.text
|
||||||
|
}
|
||||||
|
is TimeSpanPreference -> {
|
||||||
|
pref.summary = pref.text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
// If we have updated a ListPreferences possible values, and the user has now an
|
||||||
|
// impossible value, getEntry() will throw an Exception.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDisplayPreferenceDialog(preference: Preference) {
|
override fun onDisplayPreferenceDialog(preference: Preference) {
|
||||||
var dialogFragment: DialogFragment? = null
|
var dialogFragment: DialogFragment? = null
|
||||||
if (preference is TimeSpanPreference) {
|
if (preference is TimeSpanPreference) {
|
||||||
@ -376,26 +376,7 @@ class SettingsFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun update() {
|
private fun updateCustomPreferences() {
|
||||||
theme!!.summary = theme!!.entry
|
|
||||||
maxBitrateWifi!!.summary = maxBitrateWifi!!.entry
|
|
||||||
maxBitrateMobile!!.summary = maxBitrateMobile!!.entry
|
|
||||||
cacheSize!!.summary = cacheSize!!.entry
|
|
||||||
preloadCount!!.summary = preloadCount!!.entry
|
|
||||||
incrementTime!!.summary = incrementTime!!.entry
|
|
||||||
networkTimeout!!.summary = networkTimeout!!.entry
|
|
||||||
maxAlbums!!.summary = maxAlbums!!.entry
|
|
||||||
maxArtists!!.summary = maxArtists!!.entry
|
|
||||||
maxSongs!!.summary = maxSongs!!.entry
|
|
||||||
defaultAlbums!!.summary = defaultAlbums!!.entry
|
|
||||||
defaultArtists!!.summary = defaultArtists!!.entry
|
|
||||||
defaultSongs!!.summary = defaultSongs!!.entry
|
|
||||||
chatRefreshInterval!!.summary = chatRefreshInterval!!.entry
|
|
||||||
directoryCacheTime!!.summary = directoryCacheTime!!.entry
|
|
||||||
sharingDefaultExpiration!!.summary = sharingDefaultExpiration!!.text
|
|
||||||
sharingDefaultDescription!!.summary = sharingDefaultDescription!!.text
|
|
||||||
sharingDefaultGreeting!!.summary = sharingDefaultGreeting!!.text
|
|
||||||
|
|
||||||
if (debugLogToFile?.isChecked == true) {
|
if (debugLogToFile?.isChecked == true) {
|
||||||
debugLogToFile?.summary = getString(
|
debugLogToFile?.summary = getString(
|
||||||
R.string.settings_debug_log_path,
|
R.string.settings_debug_log_path,
|
||||||
@ -404,6 +385,7 @@ class SettingsFragment :
|
|||||||
} else {
|
} else {
|
||||||
debugLogToFile?.summary = ""
|
debugLogToFile?.summary = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
showArtistPicture?.isEnabled = shouldUseId3Tags
|
showArtistPicture?.isEnabled = shouldUseId3Tags
|
||||||
useId3TagsOffline?.isEnabled = shouldUseId3Tags
|
useId3TagsOffline?.isEnabled = shouldUseId3Tags
|
||||||
}
|
}
|
||||||
|
@ -285,6 +285,11 @@ object Settings {
|
|||||||
return appContext.getString(key)
|
return appContext.getString(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getAllKeys(): List<String> {
|
||||||
|
val prefs = PreferenceManager.getDefaultSharedPreferences(UApp.applicationContext())
|
||||||
|
return prefs.all.keys.toList()
|
||||||
|
}
|
||||||
|
|
||||||
private val appContext: Context
|
private val appContext: Context
|
||||||
get() = UApp.applicationContext()
|
get() = UApp.applicationContext()
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,7 @@ object Storage {
|
|||||||
|
|
||||||
private fun getRoot(): AbstractFile? {
|
private fun getRoot(): AbstractFile? {
|
||||||
return if (Settings.customCacheLocation) {
|
return if (Settings.customCacheLocation) {
|
||||||
|
if (Settings.cacheLocationUri.isBlank()) return null
|
||||||
val documentFile = DocumentFile.fromTreeUri(
|
val documentFile = DocumentFile.fromTreeUri(
|
||||||
UApp.applicationContext(),
|
UApp.applicationContext(),
|
||||||
Uri.parse(Settings.cacheLocationUri)
|
Uri.parse(Settings.cacheLocationUri)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user