blob: 1e2571b5c80157aeba3f7e10eeff72ea881c21e4 [file] [log] [blame]
/*
* Copyright (C) 2020 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.systemui.statusbar.notification.row.wrapper
import android.content.Context
import android.view.View
import com.android.internal.widget.ConversationLayout
import com.android.internal.widget.MessagingLinearLayout
import com.android.systemui.R
import com.android.systemui.statusbar.notification.NotificationUtils
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
/**
* Wraps a notification containing a converation template
*/
class NotificationConversationTemplateViewWrapper constructor(
ctx: Context,
view: View,
row: ExpandableNotificationRow
)
: NotificationTemplateViewWrapper(ctx, view, row) {
private val minHeightWithActions: Int
private val conversationLayout: ConversationLayout
private var conversationIcon: View? = null
private var conversationBadge: View? = null
private var expandButton: View? = null
private var messagingLinearLayout: MessagingLinearLayout? = null
init {
conversationLayout = view as ConversationLayout
minHeightWithActions = NotificationUtils.getFontScaledHeight(ctx,
R.dimen.notification_messaging_actions_min_height)
}
private fun resolveViews() {
messagingLinearLayout = conversationLayout.messagingLinearLayout
conversationIcon = conversationLayout.requireViewById(
com.android.internal.R.id.conversation_icon)
conversationBadge = conversationLayout.requireViewById(
com.android.internal.R.id.conversation_icon_badge)
expandButton = conversationLayout.requireViewById(
com.android.internal.R.id.expand_button)
}
override fun onContentUpdated(row: ExpandableNotificationRow) {
// Reinspect the notification. Before the super call, because the super call also updates
// the transformation types and we need to have our values set by then.
resolveViews()
super.onContentUpdated(row)
}
override fun updateTransformedTypes() {
// This also clears the existing types
super.updateTransformedTypes()
messagingLinearLayout?.let {
mTransformationHelper.addTransformedView(it.id, it)
}
conversationIcon?.let {
mTransformationHelper.addViewTransformingToSimilar(it.id, it)
}
conversationBadge?.let {
mTransformationHelper.addViewTransformingToSimilar(it.id, it)
}
expandButton?.let {
mTransformationHelper.addViewTransformingToSimilar(it.id, it)
}
}
override fun setRemoteInputVisible(visible: Boolean) {
conversationLayout.showHistoricMessages(visible)
}
override fun updateExpandability(expandable: Boolean, onClickListener: View.OnClickListener?) {
conversationLayout.updateExpandability(expandable, onClickListener)
}
override fun getMinLayoutHeight(): Int {
if (mActionsContainer != null && mActionsContainer.visibility != View.GONE) {
return minHeightWithActions
} else {
return super.getMinLayoutHeight()
}
}
}