• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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