From 16abbe6b3acce39e0e4b63d3d6c3c62a4594c454 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Thu, 7 Dec 2023 05:20:16 +0530 Subject: [PATCH] refactor: Use TypedArray.use() extension --- .../github/libretube/ui/views/DropdownMenu.kt | 14 ++---- .../libretube/ui/views/SliderPreference.kt | 48 +++++++------------ 2 files changed, 21 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/views/DropdownMenu.kt b/app/src/main/java/com/github/libretube/ui/views/DropdownMenu.kt index a432b89dc..337039a10 100644 --- a/app/src/main/java/com/github/libretube/ui/views/DropdownMenu.kt +++ b/app/src/main/java/com/github/libretube/ui/views/DropdownMenu.kt @@ -5,6 +5,7 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.widget.ArrayAdapter import android.widget.FrameLayout +import androidx.core.content.res.use import com.github.libretube.R import com.github.libretube.databinding.DropdownMenuBinding @@ -30,15 +31,10 @@ class DropdownMenu( get() = adapter.getPosition(binding.autoCompleteTextView.text.toString()) init { - val ta = context.obtainStyledAttributes(attributeSet, R.styleable.DropdownMenu, 0, 0) - - try { - binding.textInputLayout.hint = ta.getString(R.styleable.DropdownMenu_hint) - binding.textInputLayout.startIconDrawable = ta.getDrawable( - R.styleable.DropdownMenu_icon - ) - } finally { - ta.recycle() + context.obtainStyledAttributes(attributeSet, R.styleable.DropdownMenu, 0, 0).use { + binding.textInputLayout.hint = it.getString(R.styleable.DropdownMenu_hint) + binding.textInputLayout.startIconDrawable = + it.getDrawable(R.styleable.DropdownMenu_icon) } } diff --git a/app/src/main/java/com/github/libretube/ui/views/SliderPreference.kt b/app/src/main/java/com/github/libretube/ui/views/SliderPreference.kt index 3225f4007..1486d9115 100644 --- a/app/src/main/java/com/github/libretube/ui/views/SliderPreference.kt +++ b/app/src/main/java/com/github/libretube/ui/views/SliderPreference.kt @@ -17,41 +17,25 @@ import kotlin.math.roundToInt class SliderPreference( context: Context, attributeSet: AttributeSet -) : Preference( - context, - attributeSet -) { +) : Preference(context, attributeSet) { private lateinit var sliderBinding: DialogSliderBinding - private var defValue = 0f - private var valueFrom = 1f - private var valueTo = 10f - private var stepSize = 1f + private val defValue: Float + private val valueFrom: Float + private val valueTo: Float + private val stepSize: Float + + init { + val ta = context.obtainStyledAttributes(attributeSet, R.styleable.SliderPreference) + defValue = ta.getFloat(R.styleable.SliderPreference_defValue, 0f) + valueFrom = ta.getFloat(R.styleable.SliderPreference_valueFrom, 1f) + valueTo = ta.getFloat(R.styleable.SliderPreference_valueTo, 10f) + stepSize = ta.getFloat(R.styleable.SliderPreference_stepSize, 1f) + ta.recycle() + } private var prefValue: Float - get() = PreferenceHelper.getString( - key, - defValue.toString() - ).toFloat() - set(value) { - PreferenceHelper.putString( - key, - value.toString() - ) - } - - private val typedArray = context.obtainStyledAttributes( - attributeSet, - R.styleable.SliderPreference - ) - - override fun onAttached() { - super.onAttached() - - defValue = typedArray.getFloat(R.styleable.SliderPreference_defValue, defValue) - valueFrom = typedArray.getFloat(R.styleable.SliderPreference_valueFrom, valueFrom) - valueTo = typedArray.getFloat(R.styleable.SliderPreference_valueTo, valueTo) - stepSize = typedArray.getFloat(R.styleable.SliderPreference_stepSize, stepSize) - } + get() = PreferenceHelper.getString(key, defValue.toString()).toFloat() + set(value) = PreferenceHelper.putString(key, value.toString()) override fun getSummary(): CharSequence = getDisplayedCurrentValue(prefValue)