Loading presentation/src/main/java/com/moez/QKSMS/common/widget/GroupAvatarView.kt +16 −18 Original line number Diff line number Diff line Loading @@ -19,11 +19,15 @@ package com.moez.QKSMS.common.widget import android.content.Context import android.os.Build import android.util.AttributeSet import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import com.moez.QKSMS.R import com.moez.QKSMS.common.util.extensions.getColorCompat import com.moez.QKSMS.common.util.extensions.resolveThemeColor import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.model.Recipient import kotlinx.android.synthetic.main.group_avatar_view.view.* Loading @@ -37,36 +41,30 @@ class GroupAvatarView @JvmOverloads constructor( updateView() } private val avatars by lazy { listOf(avatar1, avatar2, avatar3) } init { View.inflate(context, R.layout.group_avatar_view, this) setBackgroundResource(R.drawable.circle) clipToOutline = true } override fun onFinishInflate() { super.onFinishInflate() avatars.forEach { avatar -> avatar.setBackgroundResource(R.drawable.rectangle) // If we're on API 21 we need to reapply the tint after changing the background if (Build.VERSION.SDK_INT < 22) { avatar.applyTheme(0) } } if (!isInEditMode) { updateView() } } private fun updateView() { avatars.forEachIndexed { index, avatar -> avatar.visibility = if (contacts.size > index) View.VISIBLE else View.GONE avatar.setContact(contacts.getOrNull(index)) avatar1Frame.setBackgroundTint(when (contacts.size > 1) { true -> context.resolveThemeColor(android.R.attr.windowBackground) false -> context.getColorCompat(android.R.color.transparent) }) avatar1Frame.updateLayoutParams<LayoutParams> { matchConstraintPercentWidth = if (contacts.size > 1) 0.75f else 1.0f } avatar2.isVisible = contacts.size > 1 avatar1.setContact(contacts.getOrNull(0)) avatar2.setContact(contacts.getOrNull(1)) } } presentation/src/main/res/layout/blocked_list_item.xml +8 −8 Original line number Diff line number Diff line Loading @@ -23,15 +23,15 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" android:paddingTop="8dp" android:paddingBottom="8dp" android:paddingTop="4dp" android:paddingBottom="4dp" app:layout_constraintVertical_chainStyle="packed"> <com.moez.QKSMS.common.widget.GroupAvatarView android:id="@+id/avatars" android:layout_width="48dp" android:layout_height="48dp" android:layout_marginStart="16dp" android:layout_width="56dp" android:layout_height="56dp" android:layout_marginStart="12dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@id/title" app:layout_constraintStart_toStartOf="parent" Loading @@ -42,13 +42,14 @@ style="@style/TextPrimary" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginStart="12dp" android:layout_marginEnd="16dp" app:layout_constraintBottom_toTopOf="@id/blocker" app:layout_constraintEnd_toStartOf="@id/date" app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toEndOf="@id/avatars" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_chainStyle="packed" app:textSize="primary" tools:text="@tools:sample/full_names" /> Loading @@ -69,12 +70,11 @@ android:id="@+id/blocker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="2dp" android:textColor="?android:attr/textColorTertiary" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/avatars" app:layout_constraintStart_toStartOf="@id/title" app:layout_constraintTop_toBottomOf="@id/title" app:textSize="secondary" tools:text="Call Control" /> Loading presentation/src/main/res/layout/contact_list_item.xml +4 −4 Original line number Diff line number Diff line Loading @@ -55,9 +55,9 @@ <com.moez.QKSMS.common.widget.GroupAvatarView android:id="@+id/avatar" android:layout_width="40dp" android:layout_height="40dp" android:layout_marginStart="72dp" android:layout_width="48dp" android:layout_height="48dp" android:layout_marginStart="68dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" Loading @@ -68,7 +68,7 @@ style="@style/TextPrimary" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginStart="12dp" android:layout_marginEnd="16dp" android:textStyle="bold" app:layout_constraintBottom_toTopOf="@id/subtitle" Loading presentation/src/main/res/layout/conversation_list_item.xml +6 −6 Original line number Diff line number Diff line Loading @@ -25,15 +25,15 @@ android:background="?attr/selectableItemBackground" android:gravity="center_vertical" android:orientation="horizontal" android:paddingStart="16dp" android:paddingTop="12dp" android:paddingStart="12dp" android:paddingTop="8dp" android:paddingEnd="16dp" android:paddingBottom="12dp"> android:paddingBottom="8dp"> <com.moez.QKSMS.common.widget.GroupAvatarView android:id="@+id/avatars" android:layout_width="48dp" android:layout_height="48dp" android:layout_width="56dp" android:layout_height="56dp" android:layout_gravity="top" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" Loading @@ -45,7 +45,7 @@ style="@style/TextPrimary" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginStart="12dp" android:layout_marginEnd="16dp" android:ellipsize="end" android:lines="1" Loading presentation/src/main/res/layout/group_avatar_view.xml +33 −17 Original line number Diff line number Diff line Loading @@ -22,34 +22,50 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:parentTag="com.moez.QKSMS.common.widget.GroupAvatarView"> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar1" <FrameLayout android:id="@+id/avatar2Frame" android:layout_width="0dp" android:layout_height="0dp" android:padding="4dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/avatar2" app:layout_constraintDimensionRatio="1:1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0" app:layout_constraintWidth_percent=".75"> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar2" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toTopOf="@+id/avatar3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/avatar1" app:layout_constraintTop_toTopOf="parent" /> android:layout_width="match_parent" android:layout_height="match_parent" /> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar3" </FrameLayout> <FrameLayout android:id="@+id/avatar1Frame" android:layout_width="0dp" android:layout_height="0dp" android:background="@drawable/circle" android:backgroundTint="?android:attr/windowBackground" android:padding="4dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="1:1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@+id/avatar2" app:layout_constraintTop_toBottomOf="@+id/avatar2" /> app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="1" app:layout_constraintWidth_percent=".75"> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar1" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </merge> No newline at end of file Loading
presentation/src/main/java/com/moez/QKSMS/common/widget/GroupAvatarView.kt +16 −18 Original line number Diff line number Diff line Loading @@ -19,11 +19,15 @@ package com.moez.QKSMS.common.widget import android.content.Context import android.os.Build import android.util.AttributeSet import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import com.moez.QKSMS.R import com.moez.QKSMS.common.util.extensions.getColorCompat import com.moez.QKSMS.common.util.extensions.resolveThemeColor import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.model.Recipient import kotlinx.android.synthetic.main.group_avatar_view.view.* Loading @@ -37,36 +41,30 @@ class GroupAvatarView @JvmOverloads constructor( updateView() } private val avatars by lazy { listOf(avatar1, avatar2, avatar3) } init { View.inflate(context, R.layout.group_avatar_view, this) setBackgroundResource(R.drawable.circle) clipToOutline = true } override fun onFinishInflate() { super.onFinishInflate() avatars.forEach { avatar -> avatar.setBackgroundResource(R.drawable.rectangle) // If we're on API 21 we need to reapply the tint after changing the background if (Build.VERSION.SDK_INT < 22) { avatar.applyTheme(0) } } if (!isInEditMode) { updateView() } } private fun updateView() { avatars.forEachIndexed { index, avatar -> avatar.visibility = if (contacts.size > index) View.VISIBLE else View.GONE avatar.setContact(contacts.getOrNull(index)) avatar1Frame.setBackgroundTint(when (contacts.size > 1) { true -> context.resolveThemeColor(android.R.attr.windowBackground) false -> context.getColorCompat(android.R.color.transparent) }) avatar1Frame.updateLayoutParams<LayoutParams> { matchConstraintPercentWidth = if (contacts.size > 1) 0.75f else 1.0f } avatar2.isVisible = contacts.size > 1 avatar1.setContact(contacts.getOrNull(0)) avatar2.setContact(contacts.getOrNull(1)) } }
presentation/src/main/res/layout/blocked_list_item.xml +8 −8 Original line number Diff line number Diff line Loading @@ -23,15 +23,15 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" android:paddingTop="8dp" android:paddingBottom="8dp" android:paddingTop="4dp" android:paddingBottom="4dp" app:layout_constraintVertical_chainStyle="packed"> <com.moez.QKSMS.common.widget.GroupAvatarView android:id="@+id/avatars" android:layout_width="48dp" android:layout_height="48dp" android:layout_marginStart="16dp" android:layout_width="56dp" android:layout_height="56dp" android:layout_marginStart="12dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@id/title" app:layout_constraintStart_toStartOf="parent" Loading @@ -42,13 +42,14 @@ style="@style/TextPrimary" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginStart="12dp" android:layout_marginEnd="16dp" app:layout_constraintBottom_toTopOf="@id/blocker" app:layout_constraintEnd_toStartOf="@id/date" app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toEndOf="@id/avatars" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_chainStyle="packed" app:textSize="primary" tools:text="@tools:sample/full_names" /> Loading @@ -69,12 +70,11 @@ android:id="@+id/blocker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="2dp" android:textColor="?android:attr/textColorTertiary" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/avatars" app:layout_constraintStart_toStartOf="@id/title" app:layout_constraintTop_toBottomOf="@id/title" app:textSize="secondary" tools:text="Call Control" /> Loading
presentation/src/main/res/layout/contact_list_item.xml +4 −4 Original line number Diff line number Diff line Loading @@ -55,9 +55,9 @@ <com.moez.QKSMS.common.widget.GroupAvatarView android:id="@+id/avatar" android:layout_width="40dp" android:layout_height="40dp" android:layout_marginStart="72dp" android:layout_width="48dp" android:layout_height="48dp" android:layout_marginStart="68dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" Loading @@ -68,7 +68,7 @@ style="@style/TextPrimary" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginStart="12dp" android:layout_marginEnd="16dp" android:textStyle="bold" app:layout_constraintBottom_toTopOf="@id/subtitle" Loading
presentation/src/main/res/layout/conversation_list_item.xml +6 −6 Original line number Diff line number Diff line Loading @@ -25,15 +25,15 @@ android:background="?attr/selectableItemBackground" android:gravity="center_vertical" android:orientation="horizontal" android:paddingStart="16dp" android:paddingTop="12dp" android:paddingStart="12dp" android:paddingTop="8dp" android:paddingEnd="16dp" android:paddingBottom="12dp"> android:paddingBottom="8dp"> <com.moez.QKSMS.common.widget.GroupAvatarView android:id="@+id/avatars" android:layout_width="48dp" android:layout_height="48dp" android:layout_width="56dp" android:layout_height="56dp" android:layout_gravity="top" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" Loading @@ -45,7 +45,7 @@ style="@style/TextPrimary" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginStart="12dp" android:layout_marginEnd="16dp" android:ellipsize="end" android:lines="1" Loading
presentation/src/main/res/layout/group_avatar_view.xml +33 −17 Original line number Diff line number Diff line Loading @@ -22,34 +22,50 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:parentTag="com.moez.QKSMS.common.widget.GroupAvatarView"> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar1" <FrameLayout android:id="@+id/avatar2Frame" android:layout_width="0dp" android:layout_height="0dp" android:padding="4dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/avatar2" app:layout_constraintDimensionRatio="1:1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0" app:layout_constraintWidth_percent=".75"> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar2" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toTopOf="@+id/avatar3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/avatar1" app:layout_constraintTop_toTopOf="parent" /> android:layout_width="match_parent" android:layout_height="match_parent" /> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar3" </FrameLayout> <FrameLayout android:id="@+id/avatar1Frame" android:layout_width="0dp" android:layout_height="0dp" android:background="@drawable/circle" android:backgroundTint="?android:attr/windowBackground" android:padding="4dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="1:1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@+id/avatar2" app:layout_constraintTop_toBottomOf="@+id/avatar2" /> app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="1" app:layout_constraintWidth_percent=".75"> <com.moez.QKSMS.common.widget.AvatarView android:id="@+id/avatar1" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </merge> No newline at end of file