From 5602bfb92a86d8aaaf91717c15fb1998d53354fa Mon Sep 17 00:00:00 2001 From: sarah541 Date: Thu, 24 Mar 2022 20:53:08 -0400 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/23971 - Migrate CollectionHeaderViewHolder to Compose fix ktlint --- .../sessioncontrol/SessionControlAdapter.kt | 6 ++- .../viewholders/CollectionHeaderViewHolder.kt | 47 +++++++++++++++++-- app/src/main/res/layout/collection_header.xml | 27 ----------- app/src/main/res/layout/fragment_home.xml | 1 - 4 files changed, 48 insertions(+), 33 deletions(-) delete mode 100644 app/src/main/res/layout/collection_header.xml diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt index 1d14231695..3c55059f76 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt @@ -271,6 +271,10 @@ class SessionControlAdapter( viewLifecycleOwner = viewLifecycleOwner, interactor = interactor ) + CollectionHeaderViewHolder.LAYOUT_ID -> return CollectionHeaderViewHolder( + composeView = ComposeView(parent.context), + viewLifecycleOwner = viewLifecycleOwner + ) } val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false) @@ -284,7 +288,6 @@ class SessionControlAdapter( components.core.store, interactor ) - CollectionHeaderViewHolder.LAYOUT_ID -> CollectionHeaderViewHolder(view) CollectionViewHolder.LAYOUT_ID -> CollectionViewHolder(view, interactor) TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder( view as WidgetSiteItemView, @@ -313,6 +316,7 @@ class SessionControlAdapter( override fun onViewRecycled(holder: RecyclerView.ViewHolder) { when (holder) { + is CollectionHeaderViewHolder, is CustomizeHomeButtonViewHolder, is RecentlyVisitedViewHolder, is RecentVisitsHeaderViewHolder, diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionHeaderViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionHeaderViewHolder.kt index 8184d55435..cdfef158c7 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionHeaderViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionHeaderViewHolder.kt @@ -5,13 +5,52 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders import android.view.View -import androidx.recyclerview.widget.RecyclerView +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.lifecycle.LifecycleOwner import org.mozilla.fenix.R +import org.mozilla.fenix.compose.ComposeViewHolder +import org.mozilla.fenix.compose.SectionHeader +/** + * View holder for the "Collections" section header with the "Show all" button. + */ class CollectionHeaderViewHolder( - view: View -) : RecyclerView.ViewHolder(view) { + composeView: ComposeView, + viewLifecycleOwner: LifecycleOwner, +) : ComposeViewHolder(composeView, viewLifecycleOwner) { companion object { - const val LAYOUT_ID = R.layout.collection_header + val LAYOUT_ID = View.generateViewId() + } + + init { + val horizontalPadding = + composeView.resources.getDimensionPixelSize(R.dimen.home_item_horizontal_margin) + composeView.setPadding(horizontalPadding, 0, horizontalPadding, 0) + } + + @Composable + override fun Content() { + Column { + Spacer(Modifier.height(56.dp)) + + SectionHeader( + text = stringResource(R.string.collections_header), + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(align = Alignment.Top), + ) + + Spacer(Modifier.height(10.dp)) + } } } diff --git a/app/src/main/res/layout/collection_header.xml b/app/src/main/res/layout/collection_header.xml deleted file mode 100644 index 0a731ac485..0000000000 --- a/app/src/main/res/layout/collection_header.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 709a16bc24..3400cd555e 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -79,7 +79,6 @@ android:transitionGroup="false" android:importantForAccessibility="yes" android:overScrollMode="never" - tools:listheader="@layout/collection_header" tools:listitem="@layout/collection_home_list_row" tools:itemCount="3" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"/>