diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index e72f2c16c..3191ca9bd 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -7,7 +7,6 @@ package org.mozilla.fenix.home import android.content.res.Resources import android.graphics.drawable.BitmapDrawable import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -44,6 +43,8 @@ class HomeFragment : Fragment() { private val bus = ActionBusFactory.get(this) private var sessionObserver: SessionManager.Observer? = null private lateinit var homeMenu: HomeMenu + private lateinit var tabsComponent: TabsComponent + private lateinit var sessionsComponent: SessionsComponent override fun onCreateView( inflater: LayoutInflater, @@ -52,11 +53,10 @@ class HomeFragment : Fragment() { ): View? { val view = inflater.inflate(R.layout.fragment_home, container, false) val sessionManager = requireComponents.core.sessionManager - TabsComponent(view.homeLayout, bus, (activity as HomeActivity).browsingModeManager.isPrivate, + tabsComponent = TabsComponent(view.homeContainer, bus, (activity as HomeActivity).browsingModeManager.isPrivate, TabsState(sessionManager.sessions.map { it.toSessionViewState(it == sessionManager.selectedSession) }) ) - SessionsComponent(view.homeLayout, bus) - layoutComponents(view) + sessionsComponent = SessionsComponent(view.homeContainer, bus) ActionBusFactory.get(this).logMergedObservables() val activity = activity as HomeActivity DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) @@ -68,6 +68,9 @@ class HomeFragment : Fragment() { setupHomeMenu() + tabsComponent.view.isNestedScrollingEnabled = false + sessionsComponent.view.isNestedScrollingEnabled = false + val bundles = requireComponents.core.sessionStorage.bundles(40) bundles.observe(this, Observer {sessionBundles -> diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeLayouts.kt b/app/src/main/java/org/mozilla/fenix/home/HomeLayouts.kt deleted file mode 100644 index a652f76e7..000000000 --- a/app/src/main/java/org/mozilla/fenix/home/HomeLayouts.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* 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 - -import android.view.View -import androidx.constraintlayout.widget.ConstraintLayout.LayoutParams.PARENT_ID -import kotlinx.android.synthetic.main.component_sessions.view.* -import kotlinx.android.synthetic.main.component_tabs.view.* -import kotlinx.android.synthetic.main.fragment_home.view.* -import kotlinx.android.synthetic.main.tab_list_header.view.* -import org.jetbrains.anko.constraint.layout.ConstraintSetBuilder.Side.BOTTOM -import org.jetbrains.anko.constraint.layout.ConstraintSetBuilder.Side.END -import org.jetbrains.anko.constraint.layout.ConstraintSetBuilder.Side.START -import org.jetbrains.anko.constraint.layout.ConstraintSetBuilder.Side.TOP -import org.jetbrains.anko.constraint.layout.applyConstraintSet - -fun HomeFragment.layoutComponents(layout: View) { - with(layout) { - homeLayout.applyConstraintSet { - tabs_header { - connect( - TOP to BOTTOM of homeDivider, - START to START of tabs_list, - END to END of PARENT_ID - ) - } - tabs_list { - connect( - TOP to BOTTOM of tabs_header, - START to START of PARENT_ID, - END to END of PARENT_ID - ) - } - session_list { - connect( - TOP to BOTTOM of tabs_list, - START to START of PARENT_ID, - END to END of PARENT_ID - ) - } - } - } -} diff --git a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt index 8981c2245..bcd9dd477 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt @@ -29,6 +29,8 @@ class SessionsAdapter : RecyclerView.Adapter() { return when (viewType) { HeaderViewHolder.LAYOUT_ID -> HeaderViewHolder(view) + EmptyListViewHolder.LAYOUT_ID -> EmptyListViewHolder(view) + PrivateEmptyListViewHolder.LAYOUT_ID -> PrivateEmptyListViewHolder(view) else -> EmptyListViewHolder(view) } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt index 3d79c7190..2505c82f6 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsComponent.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.home.sessions import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView import mozilla.components.browser.session.Session import org.mozilla.fenix.mvi.Action import org.mozilla.fenix.mvi.ActionBusFactory @@ -31,6 +32,8 @@ class SessionsComponent( } override fun initView() = SessionsUIView(container, actionEmitter, changesObservable) + val view: RecyclerView + get() = uiView.view as RecyclerView init { render(reducer) diff --git a/app/src/main/java/org/mozilla/fenix/home/tabs/TabsComponent.kt b/app/src/main/java/org/mozilla/fenix/home/tabs/TabsComponent.kt index 878093a43..3d48e1305 100644 --- a/app/src/main/java/org/mozilla/fenix/home/tabs/TabsComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/home/tabs/TabsComponent.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.home.tabs import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView import mozilla.components.browser.session.Session import org.mozilla.fenix.mvi.Action import org.mozilla.fenix.mvi.ActionBusFactory @@ -30,6 +31,8 @@ class TabsComponent( } override fun initView() = TabsUIView(container, actionEmitter, isPrivate, changesObservable) + val view: RecyclerView + get() = uiView.view as RecyclerView init { render(reducer) diff --git a/app/src/main/res/layout/component_sessions.xml b/app/src/main/res/layout/component_sessions.xml index 148322b0b..6e067a554 100644 --- a/app/src/main/res/layout/component_sessions.xml +++ b/app/src/main/res/layout/component_sessions.xml @@ -2,6 +2,6 @@ \ No newline at end of file diff --git a/app/src/main/res/layout/component_tabs.xml b/app/src/main/res/layout/component_tabs.xml index 57ad66e27..1ad5dd5ce 100644 --- a/app/src/main/res/layout/component_tabs.xml +++ b/app/src/main/res/layout/component_tabs.xml @@ -1,13 +1,8 @@ \ No newline at end of file + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/tabs_list" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"/> \ 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 07442d656..258211fa2 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -15,7 +15,6 @@ android:background="?attr/homeBackgroundGradient" app:layoutDescription="@xml/home_scene" tools:context=".home.HomeFragment"> - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/tab_list_header.xml b/app/src/main/res/layout/tab_list_header.xml index e277e3821..1badba059 100644 --- a/app/src/main/res/layout/tab_list_header.xml +++ b/app/src/main/res/layout/tab_list_header.xml @@ -7,9 +7,7 @@ android:id="@+id/tabs_header" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="16dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> + android:layout_margin="16dp">