Add top sites heading to home screen
parent
76f15a1f7f
commit
d989616f62
|
@ -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)
|
||||
|
|
|
@ -44,6 +44,7 @@ private fun normalModeAdapterItems(
|
|||
val items = mutableListOf<AdapterItem>()
|
||||
|
||||
if (topSites.isNotEmpty()) {
|
||||
items.add(AdapterItem.TopSiteHeader)
|
||||
items.add(AdapterItem.TopSiteList(topSites))
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -8,4 +8,3 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:listitem="@layout/top_site_item" />
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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 -->
|
||||
|
|
Loading…
Reference in New Issue