| /* |
| * Copyright (C) 2022 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.healthconnect.controller.shared.inactiveapp |
| |
| import android.content.Context |
| import android.view.View.OnClickListener |
| import android.view.ViewGroup |
| import androidx.preference.PreferenceViewHolder |
| import com.android.healthconnect.controller.R |
| import com.android.healthconnect.controller.utils.logging.ElementName |
| import com.android.healthconnect.controller.utils.logging.ErrorPageElement |
| import com.android.healthconnect.controller.utils.logging.HealthConnectLogger |
| import com.android.healthconnect.controller.utils.logging.HealthConnectLoggerEntryPoint |
| import com.android.settingslib.widget.AppPreference |
| import dagger.hilt.android.EntryPointAccessors |
| |
| /** Custom preference for displaying an inactive app. */ |
| class InactiveAppPreference constructor(context: Context) : AppPreference(context) { |
| private var deleteButtonListener: OnClickListener? = null |
| |
| private var logger: HealthConnectLogger |
| var logName : ElementName = ErrorPageElement.UNKNOWN_ELEMENT |
| |
| init { |
| widgetLayoutResource = R.layout.widget_delete_inactive_app |
| isSelectable = false |
| val hiltEntryPoint = |
| EntryPointAccessors.fromApplication( |
| context.applicationContext, HealthConnectLoggerEntryPoint::class.java) |
| logger = hiltEntryPoint.logger() |
| } |
| |
| override fun onAttached() { |
| super.onAttached() |
| logger.logImpression(logName) |
| } |
| |
| override fun onBindViewHolder(holder: PreferenceViewHolder) { |
| super.onBindViewHolder(holder) |
| |
| val widgetFrame: ViewGroup? = holder.findViewById(android.R.id.widget_frame) as ViewGroup? |
| widgetFrame?.setOnClickListener(deleteButtonListener) |
| |
| val widgetFrameParent: ViewGroup? = widgetFrame?.parent as ViewGroup? |
| widgetFrameParent?.setPaddingRelative( |
| widgetFrameParent.paddingStart, |
| widgetFrameParent.paddingTop, |
| /* end = */ 0, |
| widgetFrameParent.paddingBottom) |
| } |
| |
| /** Sets the listener for delete button click. */ |
| fun setOnDeleteButtonClickListener(listener: OnClickListener) { |
| val loggingClickListener = OnClickListener { |
| logger.logInteraction(logName) |
| listener.onClick(it) |
| } |
| deleteButtonListener = loggingClickListener |
| notifyChanged() |
| } |
| } |