diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayViewHolder.kt b/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayViewHolder.kt index 38a0b2c98..36dd0aae9 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayViewHolder.kt @@ -45,8 +45,6 @@ import org.mozilla.fenix.tabstray.browser.BrowserTrayInteractor abstract class TabsTrayViewHolder( itemView: View, private val imageLoader: ImageLoader, - private val thumbnailSize: Int, - private val browserTrayInteractor: BrowserTrayInteractor, private val trayStore: TabsTrayStore, private val selectionHolder: SelectionHolder?, private val store: BrowserStore = itemView.context.components.core.store, @@ -65,6 +63,9 @@ abstract class TabsTrayViewHolder( internal val urlView: TextView? = itemView.findViewById(R.id.mozac_browser_tabstray_url) private val playPauseButtonView: ImageButton = itemView.findViewById(R.id.play_pause_button) + abstract val browserTrayInteractor: BrowserTrayInteractor + abstract val thumbnailSize: Int + override var tab: Tab? = null /** diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTabsAdapter.kt b/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTabsAdapter.kt index f78ae3688..e767e0872 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTabsAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTabsAdapter.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.tabstray.browser import android.content.Context +import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.tab_tray_item.view.* @@ -15,6 +16,7 @@ import mozilla.components.concept.tabstray.Tab import mozilla.components.concept.tabstray.TabsTray import mozilla.components.support.base.observer.Observable import mozilla.components.support.base.observer.ObserverRegistry +import org.mozilla.fenix.R import org.mozilla.fenix.ext.components import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.tabstray.TabsTrayStore @@ -33,9 +35,9 @@ class BrowserTabsAdapter( /** * The layout types for the tabs. */ - enum class ViewType { - LIST, - GRID + enum class ViewType(val layoutRes: Int) { + LIST(R.layout.tab_tray_item), + GRID(R.layout.tab_tray_grid_item) } /** @@ -48,28 +50,20 @@ class BrowserTabsAdapter( override fun getItemViewType(position: Int): Int { return if (context.components.settings.gridTabView) { - ViewType.GRID.ordinal + ViewType.GRID.layoutRes } else { - ViewType.LIST.ordinal + ViewType.LIST.layoutRes } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TabsTrayViewHolder { + val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false) + return when (viewType) { - ViewType.GRID.ordinal -> TabsTrayGridViewHolder( - parent, - imageLoader, - interactor, - store, - selectionHolder - ) - else -> TabsTrayListViewHolder( - parent, - imageLoader, - interactor, - store, - selectionHolder - ) + ViewType.GRID.layoutRes -> + TabsTrayGridViewHolder(imageLoader, interactor, store, selectionHolder, view) + else -> + TabsTrayListViewHolder(imageLoader, interactor, store, selectionHolder, view) } } diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayGridViewHolder.kt b/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayGridViewHolder.kt index 48e123a06..51915b03d 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayGridViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayGridViewHolder.kt @@ -4,9 +4,7 @@ package org.mozilla.fenix.tabstray.browser -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.widget.AppCompatImageButton import mozilla.components.browser.tabstray.TabsTrayStyling @@ -21,34 +19,25 @@ import kotlinx.android.synthetic.main.tab_tray_grid_item.view.tab_tray_grid_item import org.mozilla.fenix.tabstray.TabsTrayViewHolder import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.tabstray.TabsTrayStore -import org.mozilla.fenix.tabstray.browser.BrowserTrayInteractor /** * A RecyclerView ViewHolder implementation for "tab" items with grid layout. */ class TabsTrayGridViewHolder( - parent: ViewGroup, imageLoader: ImageLoader, - browserTrayInteractor: BrowserTrayInteractor, + override val browserTrayInteractor: BrowserTrayInteractor, store: TabsTrayStore, selectionHolder: SelectionHolder? = null, - itemView: View = - LayoutInflater.from(parent.context).inflate(R.layout.tab_tray_grid_item, parent, false), - thumbnailSize: Int = - max( + itemView: View +) : TabsTrayViewHolder(itemView, imageLoader, store, selectionHolder) { + + private val closeButton: AppCompatImageButton = itemView.findViewById(R.id.mozac_browser_tabstray_close) + + override val thumbnailSize: Int + get() = max( itemView.resources.getDimensionPixelSize(R.dimen.tab_tray_grid_item_thumbnail_height), itemView.resources.getDimensionPixelSize(R.dimen.tab_tray_grid_item_thumbnail_width) ) -) : TabsTrayViewHolder( - itemView, - imageLoader, - thumbnailSize, - browserTrayInteractor, - store, - selectionHolder -) { - - private val closeButton: AppCompatImageButton = itemView.findViewById(R.id.mozac_browser_tabstray_close) override fun updateSelectedTabIndicator(showAsSelected: Boolean) { itemView.tab_tray_grid_item.background = if (showAsSelected) { diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayListViewHolder.kt b/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayListViewHolder.kt index 584cdb7a1..cc65f6846 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayListViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/browser/TabsTrayListViewHolder.kt @@ -4,9 +4,7 @@ package org.mozilla.fenix.tabstray.browser -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.core.content.ContextCompat import mozilla.components.concept.base.images.ImageLoader import mozilla.components.concept.tabstray.Tab @@ -14,33 +12,23 @@ import org.mozilla.fenix.R import org.mozilla.fenix.tabstray.TabsTrayViewHolder import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.tabstray.TabsTrayStore -import org.mozilla.fenix.tabstray.browser.BrowserTrayInteractor import kotlin.math.max /** * A RecyclerView ViewHolder implementation for "tab" items with list layout. */ class TabsTrayListViewHolder( - parent: ViewGroup, imageLoader: ImageLoader, - browserTrayInteractor: BrowserTrayInteractor, + override val browserTrayInteractor: BrowserTrayInteractor, store: TabsTrayStore, selectionHolder: SelectionHolder? = null, - itemView: View = - LayoutInflater.from(parent.context).inflate(R.layout.tab_tray_item, parent, false), - thumbnailSize: Int = - max( + itemView: View +) : TabsTrayViewHolder(itemView, imageLoader, store, selectionHolder) { + override val thumbnailSize: Int + get() = max( itemView.resources.getDimensionPixelSize(R.dimen.tab_tray_list_item_thumbnail_height), itemView.resources.getDimensionPixelSize(R.dimen.tab_tray_list_item_thumbnail_width) ) -) : TabsTrayViewHolder( - itemView, - imageLoader, - thumbnailSize, - browserTrayInteractor, - store, - selectionHolder -) { override fun updateSelectedTabIndicator(showAsSelected: Boolean) { val color = if (showAsSelected) {