mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 09:53:33 +00:00
fix: Allow only integer values in equalizer seek bars, show positive dB values with plus symbol
This commit is contained in:
parent
b89086c5be
commit
60fee3c77c
1 changed files with 23 additions and 16 deletions
|
|
@ -116,14 +116,16 @@ class EqualizerFragment : Fragment() {
|
||||||
bandSeekBars.forEach { it.isEnabled = isEnabled }
|
bandSeekBars.forEach { it.isEnabled = isEnabled }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun formatDb(value: Int): String = if (value > 0) "+$value dB" else "$value dB"
|
||||||
|
|
||||||
private fun createBandSliders() {
|
private fun createBandSliders() {
|
||||||
val manager = equalizerManager ?: return
|
val manager = equalizerManager ?: return
|
||||||
eqBandsContainer.removeAllViews()
|
eqBandsContainer.removeAllViews()
|
||||||
bandSeekBars.clear()
|
bandSeekBars.clear()
|
||||||
val bands = manager.getNumberOfBands()
|
val bands = manager.getNumberOfBands()
|
||||||
val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500)
|
val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500)
|
||||||
val minLevel = bandLevelRange[0].toInt()
|
val minLevelDb = bandLevelRange[0] / 100
|
||||||
val maxLevel = bandLevelRange[1].toInt()
|
val maxLevelDb = bandLevelRange[1] / 100
|
||||||
|
|
||||||
val savedLevels = Preferences.getEqualizerBandLevels(bands)
|
val savedLevels = Preferences.getEqualizerBandLevels(bands)
|
||||||
for (i in 0 until bands) {
|
for (i in 0 until bands) {
|
||||||
|
|
@ -158,26 +160,26 @@ class EqualizerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
row.addView(freqLabel)
|
row.addView(freqLabel)
|
||||||
|
|
||||||
val initialLevel = savedLevels.getOrNull(i) ?: (manager.getBandLevel(band)?.toInt() ?: 0)
|
val initialLevelDb = (savedLevels.getOrNull(i) ?: (manager.getBandLevel(band) ?: 0)) / 100
|
||||||
val dbLabel = TextView(requireContext(), null, 0, R.style.LabelSmall).apply {
|
val dbLabel = TextView(requireContext(), null, 0, R.style.LabelSmall).apply {
|
||||||
text = "${(initialLevel.toInt() / 100)} dB"
|
text = formatDb(initialLevelDb)
|
||||||
setPadding(12, 0, 0, 0)
|
setPadding(12, 0, 0, 0)
|
||||||
gravity = Gravity.END
|
gravity = Gravity.END
|
||||||
layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 2f)
|
layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 2f)
|
||||||
}
|
}
|
||||||
|
|
||||||
val seekBar = SeekBar(requireContext()).apply {
|
val seekBar = SeekBar(requireContext()).apply {
|
||||||
max = maxLevel - minLevel
|
max = maxLevelDb - minLevelDb
|
||||||
progress = initialLevel.toInt() - minLevel
|
progress = initialLevelDb - minLevelDb
|
||||||
layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 6f)
|
layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 6f)
|
||||||
setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
|
setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||||
val thisLevel = (progress + minLevel).toShort()
|
val thisLevelDb = progress + minLevelDb
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
manager.setBandLevel(band, thisLevel)
|
manager.setBandLevel(band, (thisLevelDb * 100).toShort())
|
||||||
saveBandLevelsToPreferences()
|
saveBandLevelsToPreferences()
|
||||||
}
|
}
|
||||||
dbLabel.text = "${((progress + minLevel) / 100)} dB"
|
dbLabel.text = formatDb(thisLevelDb)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStartTrackingTouch(seekBar: SeekBar) {}
|
override fun onStartTrackingTouch(seekBar: SeekBar) {}
|
||||||
|
|
@ -195,11 +197,12 @@ class EqualizerFragment : Fragment() {
|
||||||
val manager = equalizerManager ?: return
|
val manager = equalizerManager ?: return
|
||||||
val bands = manager.getNumberOfBands()
|
val bands = manager.getNumberOfBands()
|
||||||
val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500)
|
val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500)
|
||||||
val minLevel = bandLevelRange[0].toInt()
|
val minLevelDb = bandLevelRange[0] / 100
|
||||||
val midLevel = 0
|
val midLevelDb = 0
|
||||||
|
|
||||||
for (i in 0 until bands) {
|
for (i in 0 until bands) {
|
||||||
manager.setBandLevel(i.toShort(), midLevel.toShort())
|
manager.setBandLevel(i.toShort(), (0).toShort())
|
||||||
bandSeekBars.getOrNull(i)?.progress = midLevel - minLevel
|
bandSeekBars.getOrNull(i)?.progress = midLevelDb - minLevelDb
|
||||||
}
|
}
|
||||||
Preferences.setEqualizerBandLevels(ShortArray(bands.toInt()))
|
Preferences.setEqualizerBandLevels(ShortArray(bands.toInt()))
|
||||||
}
|
}
|
||||||
|
|
@ -215,15 +218,19 @@ class EqualizerFragment : Fragment() {
|
||||||
val manager = equalizerManager ?: return
|
val manager = equalizerManager ?: return
|
||||||
eqSwitch.isChecked = Preferences.isEqualizerEnabled()
|
eqSwitch.isChecked = Preferences.isEqualizerEnabled()
|
||||||
updateUiEnabledState(eqSwitch.isChecked)
|
updateUiEnabledState(eqSwitch.isChecked)
|
||||||
|
|
||||||
val bands = manager.getNumberOfBands()
|
val bands = manager.getNumberOfBands()
|
||||||
val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500)
|
val bandLevelRange = manager.getBandLevelRange() ?: shortArrayOf(-1500, 1500)
|
||||||
val minLevel = bandLevelRange[0].toInt()
|
val minLevelDb = bandLevelRange[0] / 100
|
||||||
|
|
||||||
val savedLevels = Preferences.getEqualizerBandLevels(bands)
|
val savedLevels = Preferences.getEqualizerBandLevels(bands)
|
||||||
for (i in 0 until bands) {
|
for (i in 0 until bands) {
|
||||||
manager.setBandLevel(i.toShort(), savedLevels[i])
|
val savedDb = savedLevels[i] / 100
|
||||||
bandSeekBars.getOrNull(i)?.progress = savedLevels[i] - minLevel
|
manager.setBandLevel(i.toShort(), (savedDb * 100).toShort())
|
||||||
|
bandSeekBars.getOrNull(i)?.progress = savedDb - minLevelDb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Int.dpToPx(context: Context): Int =
|
private fun Int.dpToPx(context: Context): Int =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue