Merge pull request #2592 from vector-im/feature/bma/fix_viwe_bindings

Fix crash after migration to view bindings
This commit is contained in:
Benoit Marty 2020-12-29 09:49:49 +01:00 committed by GitHub
commit 68dd206140
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 166 additions and 74 deletions

View file

@ -28,7 +28,7 @@ import androidx.core.view.isInvisible
import androidx.core.view.isVisible import androidx.core.view.isVisible
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.extensions.setTextOrHide import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.databinding.ItemVerificationActionBinding import im.vector.app.databinding.ViewBottomSheetActionButtonBinding
import im.vector.app.features.themes.ThemeUtils import im.vector.app.features.themes.ThemeUtils
class BottomSheetActionButton @JvmOverloads constructor( class BottomSheetActionButton @JvmOverloads constructor(
@ -36,7 +36,7 @@ class BottomSheetActionButton @JvmOverloads constructor(
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleAttr: Int = 0 defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) { ) : FrameLayout(context, attrs, defStyleAttr) {
val views : ItemVerificationActionBinding val views: ViewBottomSheetActionButtonBinding
var title: String? = null var title: String? = null
set(value) { set(value) {
@ -97,8 +97,8 @@ class BottomSheetActionButton @JvmOverloads constructor(
} }
init { init {
inflate(context, R.layout.item_verification_action, this) inflate(context, R.layout.view_bottom_sheet_action_button, this)
views = ItemVerificationActionBinding.bind(this) views = ViewBottomSheetActionButtonBinding.bind(this)
context.withStyledAttributes(attrs, R.styleable.BottomSheetActionButton) { context.withStyledAttributes(attrs, R.styleable.BottomSheetActionButton) {
title = getString(R.styleable.BottomSheetActionButton_actionTitle) ?: "" title = getString(R.styleable.BottomSheetActionButton_actionTitle) ?: ""

View file

@ -18,7 +18,7 @@ package im.vector.app.features.call
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.widget.LinearLayout import android.widget.FrameLayout
import androidx.core.view.isVisible import androidx.core.view.isVisible
import im.vector.app.R import im.vector.app.R
import im.vector.app.databinding.ViewCallControlsBinding import im.vector.app.databinding.ViewCallControlsBinding
@ -28,7 +28,7 @@ import org.webrtc.PeerConnection
class CallControlsView @JvmOverloads constructor( class CallControlsView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) { ) : FrameLayout(context, attrs, defStyleAttr) {
private val views: ViewCallControlsBinding private val views: ViewCallControlsBinding

View file

@ -23,7 +23,7 @@ import android.widget.LinearLayout
import androidx.core.content.withStyledAttributes import androidx.core.content.withStyledAttributes
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.extensions.setTextOrHide import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.databinding.ItemTimelineEventPollResultItemBinding import im.vector.app.databinding.ViewPollResultLineBinding
class PollResultLineView @JvmOverloads constructor( class PollResultLineView @JvmOverloads constructor(
context: Context, context: Context,
@ -31,7 +31,7 @@ class PollResultLineView @JvmOverloads constructor(
defStyleAttr: Int = 0 defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) { ) : LinearLayout(context, attrs, defStyleAttr) {
private val views: ItemTimelineEventPollResultItemBinding private val views: ViewPollResultLineBinding
var label: String? = null var label: String? = null
set(value) { set(value) {
@ -60,8 +60,8 @@ class PollResultLineView @JvmOverloads constructor(
} }
init { init {
inflate(context, R.layout.item_timeline_event_poll_result_item, this) inflate(context, R.layout.view_poll_result_line, this)
views = ItemTimelineEventPollResultItemBinding.bind(this) views = ViewPollResultLineBinding.bind(this)
orientation = HORIZONTAL orientation = HORIZONTAL
context.withStyledAttributes(attrs, R.styleable.PollResultLineView) { context.withStyledAttributes(attrs, R.styleable.PollResultLineView) {

View file

@ -20,19 +20,19 @@ import android.content.Context
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.util.AttributeSet import android.util.AttributeSet
import android.widget.LinearLayout import android.widget.FrameLayout
import androidx.core.content.withStyledAttributes import androidx.core.content.withStyledAttributes
import androidx.core.view.isVisible import androidx.core.view.isVisible
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.extensions.setTextOrHide import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.databinding.ItemSignoutActionBinding import im.vector.app.databinding.ViewSignOutBottomSheetActionButtonBinding
import im.vector.app.features.themes.ThemeUtils import im.vector.app.features.themes.ThemeUtils
class SignOutBottomSheetActionButton @JvmOverloads constructor( class SignOutBottomSheetActionButton @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) { ) : FrameLayout(context, attrs, defStyleAttr) {
private val views: ItemSignoutActionBinding private val views: ViewSignOutBottomSheetActionButtonBinding
var action: (() -> Unit)? = null var action: (() -> Unit)? = null
@ -67,8 +67,8 @@ class SignOutBottomSheetActionButton @JvmOverloads constructor(
} }
init { init {
inflate(context, R.layout.item_signout_action, this) inflate(context, R.layout.view_sign_out_bottom_sheet_action_button, this)
views = ItemSignoutActionBinding.bind(this) views = ViewSignOutBottomSheetActionButtonBinding.bind(this)
context.withStyledAttributes(attrs, R.styleable.SignOutBottomSheetActionButton) { context.withStyledAttributes(attrs, R.styleable.SignOutBottomSheetActionButton) {
title = getString(R.styleable.SignOutBottomSheetActionButton_actionTitle) ?: "" title = getString(R.styleable.SignOutBottomSheetActionButton_actionTitle) ?: ""

View file

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/signedOutActionClickable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?attr/selectableItemBackground"
android:minHeight="50dp"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_horizontal_margin"
android:paddingTop="8dp"
android:paddingEnd="@dimen/layout_horizontal_margin"
android:paddingBottom="8dp">
<ImageView
android:id="@+id/actionIconImageView"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_marginEnd="16dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_secure_backup"
app:tint="?riotx_text_primary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/actionTitleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/secure_backup_setup"
android:textColor="?riotx_text_secondary"
android:textSize="17sp" />
</LinearLayout>

View file

@ -24,10 +24,10 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_share"
tools:visibility="visible"
app:tint="?riotx_text_primary" app:tint="?riotx_text_primary"
tools:ignore="MissingPrefix" /> tools:ignore="MissingPrefix"
tools:src="@drawable/ic_share"
tools:visibility="visible" />
<TextView <TextView
@ -70,8 +70,8 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_arrow_right"
app:tint="?riotx_text_primary" app:tint="?riotx_text_primary"
tools:ignore="MissingPrefix" /> tools:ignore="MissingPrefix"
tools:src="@drawable/ic_arrow_right" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:parentTag="android.widget.FrameLayout">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/itemVerificationClickableZone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?riotx_bottom_sheet_background"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:minHeight="64dp"
android:paddingStart="@dimen/layout_horizontal_margin"
android:paddingTop="8dp"
android:paddingEnd="@dimen/layout_horizontal_margin"
android:paddingBottom="8dp">
<ImageView
android:id="@+id/itemVerificationLeftIcon"
android:layout_width="48dp"
android:layout_height="48dp"
android:scaleType="center"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?riotx_text_primary"
tools:ignore="MissingPrefix"
tools:src="@drawable/ic_share"
tools:visibility="visible" />
<TextView
android:id="@+id/itemVerificationActionTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:textColor="@color/riotx_accent"
android:textSize="16sp"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toTopOf="@+id/itemVerificationActionSubTitle"
app:layout_constraintEnd_toStartOf="@+id/itemVerificationActionIcon"
app:layout_constraintStart_toEndOf="@+id/itemVerificationLeftIcon"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
app:layout_goneMarginStart="0dp"
tools:text="@string/start_verification" />
<TextView
android:id="@+id/itemVerificationActionSubTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textColor="?riotx_text_secondary"
android:textSize="12sp"
android:visibility="gone"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/itemVerificationActionIcon"
app:layout_constraintStart_toStartOf="@+id/itemVerificationActionTitle"
app:layout_constraintTop_toBottomOf="@+id/itemVerificationActionTitle"
tools:text="For maximum security, do this in person"
tools:visibility="visible" />
<ImageView
android:id="@+id/itemVerificationActionIcon"
android:layout_width="48dp"
android:layout_height="48dp"
android:scaleType="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?riotx_text_primary"
tools:ignore="MissingPrefix"
tools:src="@drawable/ic_arrow_right" />
</androidx.constraintlayout.widget.ConstraintLayout>
</merge>

View file

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
tools:parentTag="android.widget.FrameLayout">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ringingControls" android:id="@+id/ringingControls"
@ -23,8 +24,8 @@
android:focusable="true" android:focusable="true"
android:padding="16dp" android:padding="16dp"
android:src="@drawable/ic_call" android:src="@drawable/ic_call"
tools:ignore="MissingConstraints,MissingPrefix" app:tint="@color/white"
app:tint="@color/white" /> tools:ignore="MissingConstraints,MissingPrefix" />
<ImageView <ImageView
android:id="@+id/ringingControlDecline" android:id="@+id/ringingControlDecline"
@ -36,8 +37,8 @@
android:focusable="true" android:focusable="true"
android:padding="16dp" android:padding="16dp"
android:src="@drawable/ic_call_end" android:src="@drawable/ic_call_end"
tools:ignore="MissingConstraints,MissingPrefix" app:tint="@color/white"
app:tint="@color/white" /> tools:ignore="MissingConstraints,MissingPrefix" />
<androidx.constraintlayout.helper.widget.Flow <androidx.constraintlayout.helper.widget.Flow
android:layout_width="match_parent" android:layout_width="match_parent"
@ -69,8 +70,8 @@
android:padding="10dp" android:padding="10dp"
android:src="@drawable/ic_home_bottom_chat" android:src="@drawable/ic_home_bottom_chat"
app:backgroundTint="?attr/riotx_background" app:backgroundTint="?attr/riotx_background"
tools:ignore="MissingConstraints,MissingPrefix" app:tint="?attr/riotx_text_primary"
app:tint="?attr/riotx_text_primary" /> tools:ignore="MissingConstraints,MissingPrefix" />
<ImageView <ImageView
android:id="@+id/muteIcon" android:id="@+id/muteIcon"
@ -82,10 +83,10 @@
android:padding="16dp" android:padding="16dp"
android:src="@drawable/ic_microphone_off" android:src="@drawable/ic_microphone_off"
app:backgroundTint="?attr/riotx_background" app:backgroundTint="?attr/riotx_background"
app:tint="?attr/riotx_text_primary"
tools:contentDescription="@string/a11y_mute_microphone" tools:contentDescription="@string/a11y_mute_microphone"
tools:ignore="MissingConstraints,MissingPrefix" tools:ignore="MissingConstraints,MissingPrefix"
tools:src="@drawable/ic_microphone_on" tools:src="@drawable/ic_microphone_on" />
app:tint="?attr/riotx_text_primary" />
<ImageView <ImageView
android:id="@+id/iv_end_call" android:id="@+id/iv_end_call"
@ -97,8 +98,8 @@
android:focusable="true" android:focusable="true"
android:padding="16dp" android:padding="16dp"
android:src="@drawable/ic_call_end" android:src="@drawable/ic_call_end"
tools:ignore="MissingConstraints,MissingPrefix" app:tint="@color/white"
app:tint="@color/white" /> tools:ignore="MissingConstraints,MissingPrefix" />
<ImageView <ImageView
android:id="@+id/videoToggleIcon" android:id="@+id/videoToggleIcon"
@ -110,9 +111,9 @@
android:padding="16dp" android:padding="16dp"
android:src="@drawable/ic_call_videocam_off_default" android:src="@drawable/ic_call_videocam_off_default"
app:backgroundTint="?attr/riotx_background" app:backgroundTint="?attr/riotx_background"
app:tint="?attr/riotx_text_primary"
tools:contentDescription="@string/a11y_stop_camera" tools:contentDescription="@string/a11y_stop_camera"
tools:ignore="MissingConstraints,MissingPrefix" tools:ignore="MissingConstraints,MissingPrefix" />
app:tint="?attr/riotx_text_primary" />
<ImageView <ImageView
android:id="@+id/iv_more" android:id="@+id/iv_more"
@ -125,8 +126,8 @@
android:padding="8dp" android:padding="8dp"
android:src="@drawable/ic_more_vertical" android:src="@drawable/ic_more_vertical"
app:backgroundTint="?attr/riotx_background" app:backgroundTint="?attr/riotx_background"
tools:ignore="MissingConstraints,MissingPrefix" app:tint="?attr/riotx_text_primary"
app:tint="?attr/riotx_text_primary" /> tools:ignore="MissingConstraints,MissingPrefix" />
<androidx.constraintlayout.helper.widget.Flow <androidx.constraintlayout.helper.widget.Flow
android:layout_width="match_parent" android:layout_width="match_parent"
@ -202,4 +203,4 @@
<!-- app:layout_constraintEnd_toEndOf="parent"--> <!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent" />--> <!-- app:layout_constraintTop_toTopOf="parent" />-->
</FrameLayout> </merge>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:parentTag="android.widget.FrameLayout">
<LinearLayout
android:id="@+id/signedOutActionClickable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?attr/selectableItemBackground"
android:minHeight="50dp"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_horizontal_margin"
android:paddingTop="8dp"
android:paddingEnd="@dimen/layout_horizontal_margin"
android:paddingBottom="8dp">
<ImageView
android:id="@+id/actionIconImageView"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_marginEnd="16dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_secure_backup"
app:tint="?riotx_text_primary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/actionTitleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/secure_backup_setup"
android:textColor="?riotx_text_secondary"
android:textSize="17sp" />
</LinearLayout>
</merge>