mirror of
https://github.com/clangen/musikcube.git
synced 2025-02-06 03:39:50 +00:00
Additional bug fixes and index validation around output device/driver
selection in RemoteSettingsActivity on android.
This commit is contained in:
parent
765ba61ac2
commit
2fd6b36030
@ -85,8 +85,10 @@ class RemoteSettingsActivity: BaseActivity() {
|
|||||||
private fun drawNormal() {
|
private fun drawNormal() {
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
preampSeekbar.progress = ((viewModel.preampGain + 20.0f) * 100).toInt()
|
preampSeekbar.progress = ((viewModel.preampGain + 20.0f) * 100).toInt()
|
||||||
|
driverSpinner.onItemSelectedListener = null
|
||||||
driverSpinner.adapter = DriverAdapter(viewModel.outputDrivers)
|
driverSpinner.adapter = DriverAdapter(viewModel.outputDrivers)
|
||||||
driverSpinner.setSelection(viewModel.selectedDriverIndex)
|
driverSpinner.setSelection(viewModel.selectedDriverIndex)
|
||||||
|
driverSpinner.onItemSelectedListener = driverChangeListener
|
||||||
deviceSpinner.adapter = DevicesAdapter(viewModel.devicesAt(viewModel.selectedDriverIndex))
|
deviceSpinner.adapter = DevicesAdapter(viewModel.devicesAt(viewModel.selectedDriverIndex))
|
||||||
deviceSpinner.setSelection(viewModel.selectedDeviceIndex)
|
deviceSpinner.setSelection(viewModel.selectedDeviceIndex)
|
||||||
replayGainSpinner.setSelection(REPLAYGAIN_MODE_TO_INDEX[viewModel.replayGainMode]!!)
|
replayGainSpinner.setSelection(REPLAYGAIN_MODE_TO_INDEX[viewModel.replayGainMode]!!)
|
||||||
@ -107,13 +109,12 @@ class RemoteSettingsActivity: BaseActivity() {
|
|||||||
var driverName = ""
|
var driverName = ""
|
||||||
var deviceId = ""
|
var deviceId = ""
|
||||||
|
|
||||||
if (driverSpinner.adapter.count > 0) {
|
val selectedDriver = driverSpinner.selectedItemPosition
|
||||||
val selectedDriver = driverSpinner.selectedItemPosition
|
val selectedDevice = deviceSpinner.selectedItemPosition
|
||||||
val selectedDevice = deviceSpinner.selectedItemPosition
|
if (selectedDriver >= 0 && driverSpinner.adapter.count > selectedDriver) {
|
||||||
|
|
||||||
driverName = viewModel.outputDrivers[selectedDriver].name
|
driverName = viewModel.outputDrivers[selectedDriver].name
|
||||||
|
|
||||||
if (deviceSpinner.adapter.count > 0) {
|
if (selectedDevice >= 0 && deviceSpinner.adapter.count > selectedDevice) {
|
||||||
deviceId = viewModel.devicesAt(selectedDriver)[selectedDevice].id
|
deviceId = viewModel.devicesAt(selectedDriver)[selectedDevice].id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,6 +140,9 @@ class RemoteSettingsActivity: BaseActivity() {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/* devices */
|
||||||
|
driverSpinner.onItemSelectedListener = driverChangeListener
|
||||||
|
|
||||||
/* replaygain / preamp */
|
/* replaygain / preamp */
|
||||||
val replayGainModes = ArrayAdapter.createFromResource(
|
val replayGainModes = ArrayAdapter.createFromResource(
|
||||||
this, R.array.replaygain_mode_array, android.R.layout.simple_spinner_dropdown_item)
|
this, R.array.replaygain_mode_array, android.R.layout.simple_spinner_dropdown_item)
|
||||||
@ -185,6 +189,21 @@ class RemoteSettingsActivity: BaseActivity() {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val driverChangeListener = object:AdapterView.OnItemSelectedListener {
|
||||||
|
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onItemSelected(parent: AdapterView<*>?, view: View?, pos: Int, id: Long) {
|
||||||
|
deviceSpinner.adapter = DevicesAdapter(viewModel.devicesAt(driverSpinner.selectedItemPosition))
|
||||||
|
if (pos == viewModel.selectedDriverIndex) {
|
||||||
|
deviceSpinner.setSelection(viewModel.selectedDeviceIndex)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deviceSpinner.setSelection(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class DriverAdapter(private val outputs: List<IOutput>): BaseAdapter() {
|
private class DriverAdapter(private val outputs: List<IOutput>): BaseAdapter() {
|
||||||
override fun getView(pos: Int, view: View?, parent: ViewGroup?): View {
|
override fun getView(pos: Int, view: View?, parent: ViewGroup?): View {
|
||||||
var bind = view
|
var bind = view
|
||||||
@ -206,7 +225,7 @@ class RemoteSettingsActivity: BaseActivity() {
|
|||||||
var bind = view
|
var bind = view
|
||||||
if (view == null) {
|
if (view == null) {
|
||||||
bind = LayoutInflater.from(parent?.context).inflate(
|
bind = LayoutInflater.from(parent?.context).inflate(
|
||||||
android.R.layout.simple_spinner_dropdown_item, parent, false)
|
android.R.layout.simple_spinner_dropdown_item, parent, false)
|
||||||
}
|
}
|
||||||
(bind as TextView).text = devices[pos].name
|
(bind as TextView).text = devices[pos].name
|
||||||
return bind
|
return bind
|
||||||
|
Loading…
x
Reference in New Issue
Block a user