From b4ed380caf73d448f98ca3a7b55f0f4287bcd014 Mon Sep 17 00:00:00 2001 From: ericdecanini Date: Wed, 3 Aug 2022 22:49:21 +0200 Subject: [PATCH] Finalises home and add bottom sheet buttons --- .../grouplist/NewHomeSpaceSummaryItem.kt | 69 +++++++++++++++++++ .../app/features/spaces/NewSpaceAddItem.kt | 9 ++- .../spaces/NewSpaceSummaryController.kt | 3 +- .../app/features/spaces/SpaceListFragment.kt | 2 +- .../drawable/new_space_home_background.xml | 11 +++ .../res/drawable/space_home_background.xml | 2 +- .../main/res/layout/item_new_space_add.xml | 4 +- .../res/layout/item_new_space_list_header.xml | 1 + 8 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/grouplist/NewHomeSpaceSummaryItem.kt create mode 100644 vector/src/main/res/drawable/new_space_home_background.xml diff --git a/vector/src/main/java/im/vector/app/features/grouplist/NewHomeSpaceSummaryItem.kt b/vector/src/main/java/im/vector/app/features/grouplist/NewHomeSpaceSummaryItem.kt new file mode 100644 index 0000000000..1f967db7ad --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/grouplist/NewHomeSpaceSummaryItem.kt @@ -0,0 +1,69 @@ +/* + * Copyright 2019 New Vector Ltd + * + * 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 im.vector.app.features.grouplist + +import android.content.res.ColorStateList +import android.widget.ImageView +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.core.graphics.ColorUtils +import com.airbnb.epoxy.EpoxyAttribute +import com.airbnb.epoxy.EpoxyModelClass +import im.vector.app.R +import im.vector.app.core.epoxy.ClickListener +import im.vector.app.core.epoxy.VectorEpoxyHolder +import im.vector.app.core.epoxy.VectorEpoxyModel +import im.vector.app.core.epoxy.onClick +import im.vector.app.core.platform.CheckableConstraintLayout +import im.vector.app.features.home.room.list.UnreadCounterBadgeView +import im.vector.app.features.themes.ThemeUtils + +@EpoxyModelClass +abstract class NewHomeSpaceSummaryItem : VectorEpoxyModel(R.layout.item_new_space) { + + @EpoxyAttribute var text: String = "" + @EpoxyAttribute var selected: Boolean = false + @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) var listener: ClickListener? = null + @EpoxyAttribute var countState: UnreadCounterBadgeView.State = UnreadCounterBadgeView.State(0, false) + @EpoxyAttribute var showSeparator: Boolean = false + + override fun getViewType() = R.id.space_item_home + + override fun bind(holder: Holder) { + super.bind(holder) + holder.root.onClick(listener) + holder.name.text = holder.view.context.getString(R.string.all_chats) + holder.root.isChecked = selected + holder.root.context.resources + holder.avatar.background = ContextCompat.getDrawable(holder.view.context, R.drawable.new_space_home_background) + holder.avatar.backgroundTintList = ColorStateList.valueOf( + ColorUtils.setAlphaComponent(ThemeUtils.getColor(holder.view.context, R.attr.vctr_content_tertiary), (255 * 0.3).toInt())) + holder.avatar.setImageResource(R.drawable.ic_space_home) + holder.avatar.imageTintList = ColorStateList.valueOf(ThemeUtils.getColor(holder.view.context, R.attr.vctr_content_primary)) + holder.avatar.scaleType = ImageView.ScaleType.CENTER_INSIDE + + holder.unreadCounter.render(countState) + } + + class Holder : VectorEpoxyHolder() { + val root by bind(R.id.root) + val avatar by bind(R.id.avatar) + val name by bind(R.id.name) + val unreadCounter by bind(R.id.unread_counter) + } +} diff --git a/vector/src/main/java/im/vector/app/features/spaces/NewSpaceAddItem.kt b/vector/src/main/java/im/vector/app/features/spaces/NewSpaceAddItem.kt index d90cb5bc67..60816df9c0 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/NewSpaceAddItem.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/NewSpaceAddItem.kt @@ -16,6 +16,8 @@ package im.vector.app.features.spaces +import android.content.res.ColorStateList +import android.widget.ImageView import com.airbnb.epoxy.EpoxyAttribute import com.airbnb.epoxy.EpoxyModelClass import im.vector.app.R @@ -23,6 +25,7 @@ import im.vector.app.core.epoxy.ClickListener import im.vector.app.core.epoxy.VectorEpoxyHolder import im.vector.app.core.epoxy.VectorEpoxyModel import im.vector.app.core.epoxy.onClick +import im.vector.app.features.themes.ThemeUtils @EpoxyModelClass abstract class NewSpaceAddItem : VectorEpoxyModel(R.layout.item_new_space_add) { @@ -32,7 +35,11 @@ abstract class NewSpaceAddItem : VectorEpoxyModel(R.layo override fun bind(holder: Holder) { super.bind(holder) holder.view.onClick(listener) + + holder.plus.imageTintList = ColorStateList.valueOf(ThemeUtils.getColor(holder.view.context, R.attr.vctr_content_primary)) } - class Holder : VectorEpoxyHolder() + class Holder : VectorEpoxyHolder() { + val plus by bind(R.id.plus) + } } diff --git a/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryController.kt b/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryController.kt index 80a8acb1bb..6690e92b50 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryController.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/NewSpaceSummaryController.kt @@ -20,6 +20,7 @@ import com.airbnb.epoxy.EpoxyController import im.vector.app.R import im.vector.app.core.resources.StringProvider import im.vector.app.features.grouplist.homeSpaceSummaryItem +import im.vector.app.features.grouplist.newHomeSpaceSummaryItem import im.vector.app.features.home.AvatarRenderer import im.vector.app.features.home.room.list.UnreadCounterBadgeView import org.matrix.android.sdk.api.extensions.orFalse @@ -65,7 +66,7 @@ class NewSpaceSummaryController @Inject constructor( id("space_list_header") } - homeSpaceSummaryItem { + newHomeSpaceSummaryItem { id("space_home") text(this@NewSpaceSummaryController.stringProvider.getString(R.string.all_chats)) selected(selectedSpace == null) diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt index 51fbaad757..bf76c2eecd 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt @@ -143,7 +143,7 @@ class SpaceListFragment @Inject constructor( } if (vectorFeatures.isNewAppLayoutEnabled()) { - newSpaceController.update(state).also { onUpdate?.invoke() } + newSpaceController.update(state) } else { spaceController.update(state) } diff --git a/vector/src/main/res/drawable/new_space_home_background.xml b/vector/src/main/res/drawable/new_space_home_background.xml new file mode 100644 index 0000000000..47fdeb0226 --- /dev/null +++ b/vector/src/main/res/drawable/new_space_home_background.xml @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/vector/src/main/res/drawable/space_home_background.xml b/vector/src/main/res/drawable/space_home_background.xml index 2efd6d407c..c7fc727267 100644 --- a/vector/src/main/res/drawable/space_home_background.xml +++ b/vector/src/main/res/drawable/space_home_background.xml @@ -10,4 +10,4 @@ - \ No newline at end of file + diff --git a/vector/src/main/res/layout/item_new_space_add.xml b/vector/src/main/res/layout/item_new_space_add.xml index 1033d3c6a0..5a62abd740 100644 --- a/vector/src/main/res/layout/item_new_space_add.xml +++ b/vector/src/main/res/layout/item_new_space_add.xml @@ -20,7 +20,7 @@ app:layout_constraintTop_toTopOf="parent" /> diff --git a/vector/src/main/res/layout/item_new_space_list_header.xml b/vector/src/main/res/layout/item_new_space_list_header.xml index 51edd8de59..103d1a1b83 100644 --- a/vector/src/main/res/layout/item_new_space_list_header.xml +++ b/vector/src/main/res/layout/item_new_space_list_header.xml @@ -4,6 +4,7 @@ style="@style/TextAppearance.Vector.Body.Medium" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@drawable/bg_space_item" android:orientation="vertical" android:padding="16dp" android:text="@string/all_chats"