1
0
Fork 0
fenix/app/src/main/java/org/mozilla/fenix/settings/RadioSearchEngineListPrefer...

51 lines
1.8 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.settings
import android.content.Context
import android.util.AttributeSet
import android.widget.CompoundButton
import android.widget.RadioGroup
import androidx.preference.PreferenceViewHolder
import org.mozilla.fenix.R
import org.mozilla.fenix.utils.Settings
class RadioSearchEngineListPreference : SearchEngineListPreference,
RadioGroup.OnCheckedChangeListener {
override val itemResId: Int
get() = R.layout.search_engine_radio_button
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
override fun onBindViewHolder(holder: PreferenceViewHolder?) {
super.onBindViewHolder(holder)
searchEngineGroup!!.setOnCheckedChangeListener(this)
}
override fun updateDefaultItem(defaultButton: CompoundButton) {
defaultButton.isChecked = true
}
override fun onCheckedChanged(group: RadioGroup, checkedId: Int) {
/* onCheckedChanged is called intermittently before the search engine table is full, so we
must check these conditions to prevent crashes and inconsistent states. */
if (group.childCount != searchEngines.count() || group.getChildAt(checkedId) == null ||
!group.getChildAt(checkedId).isPressed
) {
return
}
val newDefaultEngine = searchEngines[checkedId]
Settings.getInstance(group.context).setDefaultSearchEngineByName(newDefaultEngine.name)
}
}