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.SaveTabGroupViewHolder
|
||||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabHeaderViewHolder
|
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabHeaderViewHolder
|
||||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabViewHolder
|
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.TopSiteViewHolder
|
||||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingAutomaticSignInViewHolder
|
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingAutomaticSignInViewHolder
|
||||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingFinishViewHolder
|
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)
|
data class TopSiteList(val topSites: List<TopSite>) : AdapterItem(TopSiteViewHolder.LAYOUT_ID)
|
||||||
|
|
||||||
object SaveTabGroup : AdapterItem(SaveTabGroupViewHolder.LAYOUT_ID)
|
object SaveTabGroup : AdapterItem(SaveTabGroupViewHolder.LAYOUT_ID)
|
||||||
|
@ -163,6 +165,7 @@ class SessionControlAdapter(
|
||||||
val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false)
|
val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false)
|
||||||
return when (viewType) {
|
return when (viewType) {
|
||||||
TabHeaderViewHolder.LAYOUT_ID -> TabHeaderViewHolder(view, interactor)
|
TabHeaderViewHolder.LAYOUT_ID -> TabHeaderViewHolder(view, interactor)
|
||||||
|
TopSiteHeaderViewHolder.LAYOUT_ID -> TopSiteHeaderViewHolder(view)
|
||||||
TabViewHolder.LAYOUT_ID -> TabViewHolder(view, interactor)
|
TabViewHolder.LAYOUT_ID -> TabViewHolder(view, interactor)
|
||||||
TopSiteViewHolder.LAYOUT_ID -> TopSiteViewHolder(view, interactor)
|
TopSiteViewHolder.LAYOUT_ID -> TopSiteViewHolder(view, interactor)
|
||||||
SaveTabGroupViewHolder.LAYOUT_ID -> SaveTabGroupViewHolder(view, interactor)
|
SaveTabGroupViewHolder.LAYOUT_ID -> SaveTabGroupViewHolder(view, interactor)
|
||||||
|
|
|
@ -44,6 +44,7 @@ private fun normalModeAdapterItems(
|
||||||
val items = mutableListOf<AdapterItem>()
|
val items = mutableListOf<AdapterItem>()
|
||||||
|
|
||||||
if (topSites.isNotEmpty()) {
|
if (topSites.isNotEmpty()) {
|
||||||
|
items.add(AdapterItem.TopSiteHeader)
|
||||||
items.add(AdapterItem.TopSiteList(topSites))
|
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_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
tools:listitem="@layout/top_site_item" />
|
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>
|
<string name="home_screen_shortcut_open_new_tab_2">New tab</string>
|
||||||
<!-- Shortcut action to open new private tab -->
|
<!-- Shortcut action to open new private tab -->
|
||||||
<string name="home_screen_shortcut_open_new_private_tab_2">New private tab</string>
|
<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 -->
|
<!-- Browser Fragment -->
|
||||||
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->
|
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->
|
||||||
|
|
Loading…
Reference in New Issue