1 /* <lambda>null2 * Copyright (C) 2020 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 17 package com.android.systemui.statusbar.notification.collection.render 18 19 import android.annotation.StringRes 20 import android.content.Intent 21 import android.view.LayoutInflater 22 import android.view.View 23 import android.view.ViewGroup 24 import com.android.systemui.R 25 import com.android.systemui.plugins.ActivityStarter 26 import com.android.systemui.statusbar.notification.dagger.HeaderClickAction 27 import com.android.systemui.statusbar.notification.dagger.HeaderText 28 import com.android.systemui.statusbar.notification.dagger.NodeLabel 29 import com.android.systemui.statusbar.notification.dagger.SectionHeaderScope 30 import com.android.systemui.statusbar.notification.stack.SectionHeaderView 31 import javax.inject.Inject 32 33 interface SectionHeaderController { 34 fun reinflateView(parent: ViewGroup) 35 val headerView: SectionHeaderView? 36 fun setOnClearAllClickListener(listener: View.OnClickListener) 37 } 38 39 @SectionHeaderScope 40 internal class SectionHeaderNodeControllerImpl @Inject constructor( 41 @NodeLabel override val nodeLabel: String, 42 private val layoutInflater: LayoutInflater, 43 @HeaderText @StringRes private val headerTextResId: Int, 44 private val activityStarter: ActivityStarter, 45 @HeaderClickAction private val clickIntentAction: String 46 ) : NodeController, SectionHeaderController { 47 48 private var _view: SectionHeaderView? = null 49 private var clearAllClickListener: View.OnClickListener? = null <lambda>null50 private val onHeaderClickListener = View.OnClickListener { 51 activityStarter.startActivity( 52 Intent(clickIntentAction), 53 true /* onlyProvisioned */, 54 true /* dismissShade */, 55 Intent.FLAG_ACTIVITY_SINGLE_TOP) 56 } 57 reinflateViewnull58 override fun reinflateView(parent: ViewGroup) { 59 var oldPos = -1 60 _view?.let { _view -> 61 _view.transientContainer?.removeView(_view) 62 if (_view.parent === parent) { 63 oldPos = parent.indexOfChild(_view) 64 parent.removeView(_view) 65 } 66 } 67 val inflated = layoutInflater.inflate( 68 R.layout.status_bar_notification_section_header, 69 parent, 70 false /* attachToRoot */) 71 as SectionHeaderView 72 inflated.setHeaderText(headerTextResId) 73 inflated.setOnHeaderClickListener(onHeaderClickListener) 74 clearAllClickListener?.let { inflated.setOnClearAllClickListener(it) } 75 if (oldPos != -1) { 76 parent.addView(inflated, oldPos) 77 } 78 _view = inflated 79 } 80 81 override val headerView: SectionHeaderView? 82 get() = _view 83 setOnClearAllClickListenernull84 override fun setOnClearAllClickListener(listener: View.OnClickListener) { 85 clearAllClickListener = listener 86 _view?.setOnClearAllClickListener(listener) 87 } 88 89 override val view: View 90 get() = _view!! 91 }