/* * Copyright © 2017-2021 WireGuard LLC. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ package com.wireguard.android.widget import android.content.Context import android.util.AttributeSet import android.view.View import android.widget.RelativeLayout import com.wireguard.android.R class MultiselectableRelativeLayout @JvmOverloads constructor( context: Context? = null, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0 ) : RelativeLayout(context, attrs, defStyleAttr, defStyleRes) { private var multiselected = false override fun onCreateDrawableState(extraSpace: Int): IntArray { if (multiselected) { val drawableState = super.onCreateDrawableState(extraSpace + 1) View.mergeDrawableStates(drawableState, STATE_MULTISELECTED) return drawableState } return super.onCreateDrawableState(extraSpace) } fun setMultiSelected(on: Boolean) { if (!multiselected) { multiselected = true refreshDrawableState() } isActivated = on } fun setSingleSelected(on: Boolean) { if (multiselected) { multiselected = false refreshDrawableState() } isActivated = on } companion object { private val STATE_MULTISELECTED = intArrayOf(R.attr.state_multiselected) } }