/* 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.view.View
import android.widget.ImageView
import androidx.preference.PreferenceViewHolder
import org.mozilla.fenix.R

class RadioButtonInfoPreference @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
) : RadioButtonPreference(context, attrs) {
    private var infoClickListener: (() -> Unit)? = null
    private var infoView: ImageView? = null
    var contentDescription: String? = null

    fun onInfoClickListener(listener: (() -> Unit)) {
        infoClickListener = listener
    }

    override fun setEnabled(enabled: Boolean) {
        super.setEnabled(enabled)
        infoView?.alpha = if (enabled) FULL_ALPHA else HALF_ALPHA
        infoView?.isEnabled = enabled
    }

    init {
        layoutResource = R.layout.preference_widget_radiobutton_with_info
    }

    override fun onBindViewHolder(holder: PreferenceViewHolder) {
        super.onBindViewHolder(holder)
        val infoView = holder.findViewById(R.id.info_button_container) as View
        infoView.setOnClickListener {
            infoClickListener?.invoke()
        }
        infoView.alpha = if (isEnabled) FULL_ALPHA else HALF_ALPHA
        contentDescription?.let { infoView.contentDescription = it }
    }
}
