1
0
Fork 0

Add top sites heading to home screen

master
David Walsh 2020-03-18 11:36:18 -05:00 committed by Emily Kager
parent 76f15a1f7f
commit d989616f62
6 changed files with 39 additions and 1 deletions

View File

@ -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<TopSite>) : 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)

View File

@ -44,6 +44,7 @@ private fun normalModeAdapterItems(
val items = mutableListOf<AdapterItem>()
if (topSites.isNotEmpty()) {
items.add(AdapterItem.TopSiteHeader)
items.add(AdapterItem.TopSiteList(topSites))
}

View File

@ -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
}
}

View File

@ -8,4 +8,3 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:listitem="@layout/top_site_item" />

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/top_site_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home_screen_top_sites_heading"
android:textAppearance="@style/HeaderTextStyle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -48,6 +48,8 @@
<string name="home_screen_shortcut_open_new_tab_2">New tab</string>
<!-- Shortcut action to open new private tab -->
<string name="home_screen_shortcut_open_new_private_tab_2">New private tab</string>
<!-- Heading for the Top Sites block -->
<string name="home_screen_top_sites_heading">Top sites</string>
<!-- Browser Fragment -->
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->