1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.healthconnect.controller.shared.preference 17 18 import android.content.Context 19 import android.view.View 20 import android.view.View.OnClickListener 21 import android.widget.Button 22 import android.widget.ImageView 23 import android.widget.TextView 24 import androidx.preference.Preference 25 import androidx.preference.PreferenceViewHolder 26 import com.android.healthconnect.controller.R 27 28 class BannerPreference constructor(context: Context) : Preference(context) { 29 private lateinit var bannerIcon: ImageView 30 private lateinit var bannerTitle: TextView 31 private lateinit var bannerMessage: TextView 32 private lateinit var bannerButton: Button 33 34 private var dismissButton: ImageView? = null 35 36 private var buttonText: String? = null 37 private var buttonAction: OnClickListener? = null 38 private var isDismissable = false 39 private var dismissAction: OnClickListener? = null 40 41 init { 42 layoutResource = R.layout.widget_banner_preference 43 isSelectable = false 44 } 45 setButtonnull46 fun setButton(buttonText: String) { 47 this.buttonText = buttonText 48 } 49 setButtonOnClickListenernull50 fun setButtonOnClickListener(onClickListener: OnClickListener?) { 51 this.buttonAction = onClickListener 52 } 53 setIsDismissablenull54 fun setIsDismissable(isDismissable: Boolean) { 55 this.isDismissable = isDismissable 56 } 57 setDismissActionnull58 fun setDismissAction(onClickListener: OnClickListener?) { 59 this.dismissAction = onClickListener 60 } 61 onBindViewHoldernull62 override fun onBindViewHolder(holder: PreferenceViewHolder) { 63 super.onBindViewHolder(holder) 64 bannerIcon = holder.findViewById(R.id.banner_icon) as ImageView 65 bannerTitle = holder.findViewById(R.id.banner_title) as TextView 66 bannerMessage = holder.findViewById(R.id.banner_message) as TextView 67 bannerButton = holder.findViewById(R.id.banner_button) as Button 68 69 bannerTitle.text = title 70 bannerMessage.text = summary 71 bannerIcon.background = icon 72 73 // set button text and visibility 74 buttonText?.let { 75 bannerButton.text = it 76 bannerButton.visibility = View.VISIBLE 77 bannerButton.setOnClickListener(buttonAction) 78 } 79 80 if (isDismissable) { 81 dismissButton = holder.findViewById(R.id.dismiss_button) as ImageView 82 dismissButton?.visibility = View.VISIBLE 83 dismissButton?.setOnClickListener(dismissAction) 84 } 85 } 86 } 87