From d989616f6269d86dc7a23e8c5aa6f48c9eb031c9 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Wed, 18 Mar 2020 11:36:18 -0500 Subject: [PATCH] Add top sites heading to home screen --- .../sessioncontrol/SessionControlAdapter.kt | 3 +++ .../home/sessioncontrol/SessionControlView.kt | 1 + .../viewholders/TopSiteHeaderViewHolder.kt | 15 +++++++++++++++ .../main/res/layout/component_top_sites.xml | 1 - app/src/main/res/layout/top_sites_header.xml | 18 ++++++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSiteHeaderViewHolder.kt create mode 100644 app/src/main/res/layout/top_sites_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 2d8241f0b..8b61acd2d 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 @@ -28,6 +28,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.PrivateBrowsingDescript import org.mozilla.fenix.home.sessioncontrol.viewholders.SaveTabGroupViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TabHeaderViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TabViewHolder +import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSiteHeaderViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSiteViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingAutomaticSignInViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingFinishViewHolder @@ -70,6 +71,7 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) { } } + object TopSiteHeader : AdapterItem(TopSiteHeaderViewHolder.LAYOUT_ID) data class TopSiteList(val topSites: List) : AdapterItem(TopSiteViewHolder.LAYOUT_ID) object SaveTabGroup : AdapterItem(SaveTabGroupViewHolder.LAYOUT_ID) @@ -163,6 +165,7 @@ class SessionControlAdapter( val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false) return when (viewType) { TabHeaderViewHolder.LAYOUT_ID -> TabHeaderViewHolder(view, interactor) + TopSiteHeaderViewHolder.LAYOUT_ID -> TopSiteHeaderViewHolder(view) TabViewHolder.LAYOUT_ID -> TabViewHolder(view, interactor) TopSiteViewHolder.LAYOUT_ID -> TopSiteViewHolder(view, interactor) SaveTabGroupViewHolder.LAYOUT_ID -> SaveTabGroupViewHolder(view, interactor) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt index 26a03220f..d5eae4f5c 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt @@ -44,6 +44,7 @@ private fun normalModeAdapterItems( val items = mutableListOf() if (topSites.isNotEmpty()) { + items.add(AdapterItem.TopSiteHeader) items.add(AdapterItem.TopSiteList(topSites)) } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSiteHeaderViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSiteHeaderViewHolder.kt new file mode 100644 index 000000000..973e8f15e --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSiteHeaderViewHolder.kt @@ -0,0 +1,15 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.home.sessioncontrol.viewholders + +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import org.mozilla.fenix.R + +class TopSiteHeaderViewHolder(private val view: View) : RecyclerView.ViewHolder(view) { + companion object { + const val LAYOUT_ID = R.layout.top_sites_header + } +} diff --git a/app/src/main/res/layout/component_top_sites.xml b/app/src/main/res/layout/component_top_sites.xml index 417ad1bcf..459b89db1 100644 --- a/app/src/main/res/layout/component_top_sites.xml +++ b/app/src/main/res/layout/component_top_sites.xml @@ -8,4 +8,3 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" tools:listitem="@layout/top_site_item" /> - diff --git a/app/src/main/res/layout/top_sites_header.xml b/app/src/main/res/layout/top_sites_header.xml new file mode 100644 index 000000000..acb20e03d --- /dev/null +++ b/app/src/main/res/layout/top_sites_header.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9cffd5513..e54d6182d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -48,6 +48,8 @@ New tab New private tab + + Top sites