For #17917: Use View binding in lists.

upstream-sync
mcarare 3 years ago committed by mergify[bot]
parent aa0781306c
commit 8b13e382fd

@ -5,9 +5,9 @@
package org.mozilla.fenix.exceptions.viewholders
import android.view.View
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.exceptions_description.view.*
import org.mozilla.fenix.R
class ExceptionsHeaderViewHolder(
@ -16,7 +16,8 @@ class ExceptionsHeaderViewHolder(
) : RecyclerView.ViewHolder(view) {
init {
view.exceptions_description.text = view.context.getString(description)
view.findViewById<TextView>(R.id.exceptions_description).text =
view.context.getString(description)
}
companion object {

@ -5,11 +5,11 @@
package org.mozilla.fenix.home.recenttabs.view
import android.view.View
import kotlinx.android.synthetic.main.recent_tabs_list_row.*
import mozilla.components.browser.icons.BrowserIcons
import mozilla.components.browser.state.state.ContentState
import mozilla.components.browser.state.state.TabSessionState
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.RecentTabsListRowBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.home.recenttabs.interactor.RecentTabInteractor
@ -23,25 +23,28 @@ import org.mozilla.fenix.utils.view.ViewHolder
* in [ContentState.icon].
*/
class RecentTabViewHolder(
view: View,
private val view: View,
private val interactor: RecentTabInteractor,
private val icons: BrowserIcons = view.context.components.core.icons
) : ViewHolder(view) {
fun bindTab(tab: TabSessionState): View {
// A page may take a while to retrieve a title, so let's show the url until we get one.
recent_tab_title.text = if (tab.content.title.isNotEmpty()) {
val biding = RecentTabsListRowBinding.bind(view)
biding.recentTabTitle.text = if (tab.content.title.isNotEmpty()) {
tab.content.title
} else {
tab.content.url
}
if (tab.content.icon != null) {
recent_tab_icon.setImageBitmap(tab.content.icon)
biding.recentTabIcon.setImageBitmap(tab.content.icon)
} else {
icons.loadIntoView(recent_tab_icon, tab.content.url)
icons.loadIntoView(biding.recentTabIcon, tab.content.url)
}
recent_tab_icon.setImageBitmap(tab.content.icon)
biding.recentTabIcon.setImageBitmap(tab.content.icon)
itemView.setOnClickListener {
interactor.onRecentTabClicked(tab.id)

@ -5,8 +5,8 @@
package org.mozilla.fenix.home.recenttabs.view
import android.view.View
import kotlinx.android.synthetic.main.recent_tabs_header.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.RecentTabsHeaderBinding
import org.mozilla.fenix.home.recenttabs.interactor.RecentTabInteractor
import org.mozilla.fenix.utils.view.ViewHolder
@ -21,7 +21,9 @@ class RecentTabsHeaderViewHolder(
) : ViewHolder(view) {
init {
show_all_button.setOnClickListener {
val binding = RecentTabsHeaderBinding.bind(view)
binding.showAllButton.setOnClickListener {
interactor.onRecentTabShowAllClicked()
}
}

@ -8,12 +8,12 @@ import android.content.Context
import android.view.View
import androidx.core.graphics.BlendModeColorFilterCompat.createBlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat.SRC_IN
import kotlinx.android.synthetic.main.collection_home_list_row.*
import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
import mozilla.components.browser.state.selector.normalTabs
import mozilla.components.feature.tab.collections.TabCollection
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.CollectionHomeListRowBinding
import org.mozilla.fenix.utils.view.ViewHolder
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getIconColor
@ -32,8 +32,11 @@ class CollectionViewHolder(
private lateinit var collection: TabCollection
private var expanded = false
private var collectionMenu: CollectionItemMenu
private var binding: CollectionHomeListRowBinding
init {
binding = CollectionHomeListRowBinding.bind(view)
collectionMenu = CollectionItemMenu(
view.context,
{ view.context.components.core.store.state.normalTabs.isNotEmpty() }
@ -46,14 +49,14 @@ class CollectionViewHolder(
}
}
collection_overflow_button.setOnClickListener {
binding.collectionOverflowButton.setOnClickListener {
interactor.onCollectionMenuOpened()
collectionMenu.menuBuilder
.build(view.context)
.show(anchor = it)
}
collection_share_button.setOnClickListener {
binding.collectionShareButton.setOnClickListener {
interactor.onCollectionShareTabsClicked(collection)
}
@ -70,31 +73,31 @@ class CollectionViewHolder(
}
private fun updateCollectionUI() {
collection_title.text = collection.title
binding.collectionTitle.text = collection.title
itemView.isActivated = expanded
if (expanded) {
collection_share_button.apply {
binding.collectionShareButton.apply {
showAndEnable()
increaseTapArea(buttonIncreaseDps)
}
collection_overflow_button.apply {
binding.collectionOverflowButton.apply {
showAndEnable()
increaseTapArea(buttonIncreaseDps)
}
} else {
collection_share_button.apply {
binding.collectionShareButton.apply {
removeAndDisable()
removeTouchDelegate()
}
collection_overflow_button.apply {
binding.collectionOverflowButton.apply {
removeAndDisable()
removeTouchDelegate()
}
}
collection_icon.colorFilter = createBlendModeColorFilterCompat(
binding.collectionIcon.colorFilter = createBlendModeColorFilterCompat(
collection.getIconColor(itemView.context),
SRC_IN
)

@ -7,7 +7,6 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders
import android.view.View
import androidx.core.view.isVisible
import androidx.lifecycle.LifecycleOwner
import kotlinx.android.synthetic.main.no_collections_message.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.map
@ -16,6 +15,7 @@ import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.lib.state.ext.flowScoped
import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.NoCollectionsMessageBinding
import org.mozilla.fenix.ext.increaseTapArea
import org.mozilla.fenix.home.sessioncontrol.CollectionInteractor
import org.mozilla.fenix.utils.view.ViewHolder
@ -29,25 +29,30 @@ open class NoCollectionsMessageViewHolder(
) : ViewHolder(view) {
init {
add_tabs_to_collections_button.setOnClickListener {
interactor.onAddTabsToCollectionTapped()
}
val binding = NoCollectionsMessageBinding.bind(view)
remove_collection_placeholder.increaseTapArea(
view.resources.getDimensionPixelSize(R.dimen.tap_increase_16)
)
binding.addTabsToCollectionsButton.apply {
remove_collection_placeholder.setOnClickListener {
interactor.onRemoveCollectionsPlaceholder()
setOnClickListener {
interactor.onAddTabsToCollectionTapped()
}
isVisible = store.state.normalTabs.isNotEmpty()
}
add_tabs_to_collections_button.isVisible = store.state.normalTabs.isNotEmpty()
binding.removeCollectionPlaceholder.apply {
increaseTapArea(
view.resources.getDimensionPixelSize(R.dimen.tap_increase_16)
)
setOnClickListener {
interactor.onRemoveCollectionsPlaceholder()
}
}
store.flowScoped(viewLifecycleOwner) { flow ->
flow.map { state -> state.normalTabs.size }
.ifChanged()
.collect { tabs ->
add_tabs_to_collections_button.isVisible = tabs > 0
binding.addTabsToCollectionsButton.isVisible = tabs > 0
}
}
}

@ -7,8 +7,8 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders
import android.text.method.LinkMovementMethod
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.private_browsing_description.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.PrivateBrowsingDescriptionBinding
import org.mozilla.fenix.ext.addUnderline
import org.mozilla.fenix.home.sessioncontrol.TabSessionInteractor
@ -20,10 +20,11 @@ class PrivateBrowsingDescriptionViewHolder(
init {
val resources = view.resources
val appName = resources.getString(R.string.app_name)
view.private_session_description.text = resources.getString(
val binding = PrivateBrowsingDescriptionBinding.bind(view)
binding.privateSessionDescription.text = resources.getString(
R.string.private_browsing_placeholder_description_2, appName
)
with(view.private_session_common_myths) {
with(binding.privateSessionCommonMyths) {
movementMethod = LinkMovementMethod.getInstance()
addUnderline()
setOnClickListener {

@ -8,10 +8,10 @@ import android.view.View
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import kotlinx.android.synthetic.main.component_top_sites_pager.view.*
import mozilla.components.feature.top.sites.TopSite
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.ComponentTopSitesPagerBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.home.sessioncontrol.AdapterItem
import org.mozilla.fenix.home.sessioncontrol.TopSiteInteractor
@ -22,8 +22,9 @@ class TopSitePagerViewHolder(
interactor: TopSiteInteractor
) : RecyclerView.ViewHolder(view) {
private val binding = ComponentTopSitesPagerBinding.bind(view)
private val topSitesPagerAdapter = TopSitesPagerAdapter(interactor)
private val pageIndicator = view.page_indicator
private val pageIndicator = binding.pageIndicator
private var currentPage = 0
private val topSitesPageChangeCallback = object : ViewPager2.OnPageChangeCallback() {
@ -42,7 +43,7 @@ class TopSitePagerViewHolder(
}
init {
view.top_sites_pager.apply {
binding.topSitesPager.apply {
adapter = topSitesPagerAdapter
registerOnPageChangeCallback(topSitesPageChangeCallback)
// Retain one more TopSites pages to ensure a new layout request will measure the first page also.

@ -6,9 +6,9 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.component_top_sites.view.*
import mozilla.components.feature.top.sites.TopSite
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.ComponentTopSitesBinding
import org.mozilla.fenix.home.sessioncontrol.TopSiteInteractor
import org.mozilla.fenix.home.sessioncontrol.viewholders.topsites.TopSitesAdapter
import org.mozilla.fenix.utils.AccessibilityGridLayoutManager
@ -19,12 +19,13 @@ class TopSiteViewHolder(
) : RecyclerView.ViewHolder(view) {
private val topSitesAdapter = TopSitesAdapter(interactor)
val binding = ComponentTopSitesBinding.bind(view)
init {
val gridLayoutManager =
AccessibilityGridLayoutManager(view.context, SPAN_COUNT)
view.top_sites_list.apply {
binding.topSitesList.apply {
adapter = topSitesAdapter
layoutManager = gridLayoutManager
}

@ -6,8 +6,8 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.experiment_default_browser.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.ExperimentDefaultBrowserBinding
import org.mozilla.fenix.ext.increaseTapArea
import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor
@ -17,11 +17,12 @@ class ExperimentDefaultBrowserCardViewHolder(
) : RecyclerView.ViewHolder(view) {
init {
view.set_default_browser.setOnClickListener {
val binding = ExperimentDefaultBrowserBinding.bind(view)
binding.setDefaultBrowser.setOnClickListener {
interactor.onSetDefaultBrowserClicked()
}
view.close.apply {
binding.close.apply {
increaseTapArea(CLOSE_BUTTON_EXTRA_DPS)
setOnClickListener {
interactor.onCloseExperimentCardClicked()

@ -9,7 +9,6 @@ import android.view.ViewGroup
import androidx.annotation.VisibleForTesting
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import kotlinx.android.synthetic.main.component_top_sites.view.*
import mozilla.components.feature.top.sites.TopSite
import org.mozilla.fenix.home.sessioncontrol.AdapterItem.TopSitePagerPayload
import org.mozilla.fenix.home.sessioncontrol.TopSiteInteractor
@ -35,7 +34,7 @@ class TopSitesPagerAdapter(
onBindViewHolder(holder, position)
} else {
if (payloads[0] is TopSitePagerPayload) {
val adapter = holder.itemView.top_sites_list.adapter as TopSitesAdapter
val adapter = holder.binding.topSitesList.adapter as TopSitesAdapter
val payload = payloads[0] as TopSitePagerPayload
update(payload, position, adapter)
@ -79,7 +78,7 @@ class TopSitesPagerAdapter(
}
override fun onBindViewHolder(holder: TopSiteViewHolder, position: Int) {
val adapter = holder.itemView.top_sites_list.adapter as TopSitesAdapter
val adapter = holder.binding.topSitesList.adapter as TopSitesAdapter
adapter.submitList(getItem(position))
}

@ -6,7 +6,6 @@ package org.mozilla.fenix.home.tips
import android.view.View
import androidx.core.view.isVisible
import kotlinx.android.synthetic.main.button_tip_item.*
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
@ -14,6 +13,7 @@ import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.components.tips.Tip
import org.mozilla.fenix.components.tips.TipType
import org.mozilla.fenix.databinding.ButtonTipItemBinding
import org.mozilla.fenix.ext.addUnderline
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor
@ -21,7 +21,7 @@ import org.mozilla.fenix.utils.Settings
import org.mozilla.fenix.utils.view.ViewHolder
class ButtonTipViewHolder(
view: View,
private val view: View,
private val interactor: SessionControlInteractor,
private val metrics: MetricController = view.context.components.analytics.metrics,
private val settings: Settings = view.context.components.settings
@ -30,46 +30,49 @@ class ButtonTipViewHolder(
var tip: Tip? = null
fun bind(tip: Tip) {
val binding = ButtonTipItemBinding.bind(view)
require(tip.type is TipType.Button)
this.tip = tip
metrics.track(Event.TipDisplayed(tip.identifier))
tip_header_text.text = tip.title
tip.titleDrawable?.let {
tip_header_text.setCompoundDrawablesWithIntrinsicBounds(it, null, null, null)
}
tip_description_text.text = tip.description
tip_button.text = tip.type.text
with(binding) {
tipHeaderText.text = tip.title
tip.titleDrawable?.let {
tipHeaderText.setCompoundDrawablesWithIntrinsicBounds(it, null, null, null)
}
tipDescriptionText.text = tip.description
tipButton.text = tip.type.text
tip_learn_more.isVisible = tip.learnMoreURL != null
if (tip.learnMoreURL != null) {
tip_learn_more.addUnderline()
tipLearnMore.isVisible = tip.learnMoreURL != null
if (tip.learnMoreURL != null) {
tipLearnMore.addUnderline()
tip_learn_more.setOnClickListener {
(itemView.context as HomeActivity).openToBrowserAndLoad(
searchTermOrURL = tip.learnMoreURL,
newTab = true,
from = BrowserDirection.FromHome
)
tipLearnMore.setOnClickListener {
(itemView.context as HomeActivity).openToBrowserAndLoad(
searchTermOrURL = tip.learnMoreURL,
newTab = true,
from = BrowserDirection.FromHome
)
}
}
}
tip_button.setOnClickListener {
tip.type.action.invoke()
metrics.track(Event.TipPressed(tip.identifier))
}
tipButton.setOnClickListener {
tip.type.action.invoke()
metrics.track(Event.TipPressed(tip.identifier))
}
tip_close.setOnClickListener {
metrics.track(Event.TipClosed(tip.identifier))
tipClose.setOnClickListener {
metrics.track(Event.TipClosed(tip.identifier))
settings.preferences
.edit()
.putBoolean(tip.identifier, false)
.apply()
settings.preferences
.edit()
.putBoolean(tip.identifier, false)
.apply()
interactor.onCloseTip(tip)
interactor.onCloseTip(tip)
}
}
}

@ -5,10 +5,10 @@
package org.mozilla.fenix.settings.creditcards.view
import android.view.View
import kotlinx.android.synthetic.main.credit_card_list_item.*
import mozilla.components.concept.storage.CreditCard
import mozilla.components.support.utils.creditCardIssuerNetwork
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.CreditCardListItemBinding
import org.mozilla.fenix.settings.creditcards.interactor.CreditCardsManagementInteractor
import org.mozilla.fenix.utils.view.ViewHolder
import java.text.SimpleDateFormat
@ -19,16 +19,18 @@ import java.util.Locale
* View holder for a credit card list item.
*/
class CreditCardItemViewHolder(
view: View,
private val view: View,
private val interactor: CreditCardsManagementInteractor
) : ViewHolder(view) {
fun bind(creditCard: CreditCard) {
credit_card_logo.setImageResource(creditCard.cardType.creditCardIssuerNetwork().icon)
val binding = CreditCardListItemBinding.bind(view)
credit_card_number.text = creditCard.obfuscatedCardNumber
binding.creditCardLogo.setImageResource(creditCard.cardType.creditCardIssuerNetwork().icon)
bindCreditCardExpiryDate(creditCard)
binding.creditCardNumber.text = creditCard.obfuscatedCardNumber
bindCreditCardExpiryDate(creditCard, binding)
itemView.setOnClickListener {
interactor.onSelectCreditCard(creditCard)
@ -38,7 +40,10 @@ class CreditCardItemViewHolder(
/**
* Set the credit card expiry date formatted according to the locale.
*/
private fun bindCreditCardExpiryDate(creditCard: CreditCard) {
private fun bindCreditCardExpiryDate(
creditCard: CreditCard,
binding: CreditCardListItemBinding
) {
val dateFormat = SimpleDateFormat(DATE_PATTERN, Locale.getDefault())
val calendar = Calendar.getInstance()
@ -47,7 +52,7 @@ class CreditCardItemViewHolder(
calendar.set(Calendar.MONTH, creditCard.expiryMonth.toInt() - 1)
calendar.set(Calendar.YEAR, creditCard.expiryYear.toInt())
expiry_date.text = dateFormat.format(calendar.time)
binding.expiryDate.text = dateFormat.format(calendar.time)
}
companion object {

@ -6,7 +6,7 @@ package org.mozilla.fenix.settings.logins.view
import android.view.View
import androidx.core.view.isVisible
import kotlinx.android.synthetic.main.logins_item.*
import org.mozilla.fenix.databinding.LoginsItemBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.settings.logins.SavedLogin
@ -14,7 +14,7 @@ import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor
import org.mozilla.fenix.utils.view.ViewHolder
class LoginsListViewHolder(
view: View,
val view: View,
private val interactor: SavedLoginsInteractor
) : ViewHolder(view) {
@ -28,18 +28,19 @@ class LoginsListViewHolder(
username = item.username,
timeLastUsed = item.timeLastUsed
)
webAddressView.text = item.origin
usernameView.isVisible = item.username.isNotEmpty()
usernameView.text = item.username
val binding = LoginsItemBinding.bind(view)
binding.webAddressView.text = item.origin
binding.usernameView.isVisible = item.username.isNotEmpty()
binding.usernameView.text = item.username
updateFavIcon(item.origin)
updateFavIcon(binding, item.origin)
itemView.setOnClickListener {
interactor.onItemClicked(item)
}
}
private fun updateFavIcon(url: String) {
itemView.context.components.core.icons.loadIntoView(favicon_image, url)
private fun updateFavIcon(binding: LoginsItemBinding, url: String) {
itemView.context.components.core.icons.loadIntoView(binding.faviconImage, url)
}
}

@ -10,9 +10,9 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.share_tab_item.view.*
import mozilla.components.concept.engine.prompt.ShareData
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.ShareTabItemBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView
@ -33,13 +33,14 @@ class ShareTabsAdapter :
class ShareTabViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(item: ShareData) = with(itemView) {
val binding = ShareTabItemBinding.bind(this)
val url = item.url
if (!url.isNullOrEmpty()) {
context.components.core.icons.loadIntoView(itemView.share_tab_favicon, url)
context.components.core.icons.loadIntoView(binding.shareTabFavicon, url)
}
itemView.share_tab_title.text = item.title
itemView.share_tab_url.text = item.url
binding.shareTabTitle.text = item.title
binding.shareTabUrl.text = item.url
}
}

@ -9,9 +9,9 @@ import android.view.View
import androidx.annotation.VisibleForTesting
import androidx.core.content.ContextCompat.getColor
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.account_share_list_item.view.*
import mozilla.components.concept.sync.DeviceType
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.AccountShareListItemBinding
import org.mozilla.fenix.share.ShareToAccountDevicesInteractor
import org.mozilla.fenix.share.listadapters.SyncShareOption
import org.mozilla.fenix.utils.Do
@ -47,14 +47,15 @@ class AccountDeviceViewHolder(
private fun bindView(option: SyncShareOption) {
val (name, drawableRes, colorRes) = getNameIconBackground(context, option)
val binding = AccountShareListItemBinding.bind(itemView)
itemView.deviceIcon.apply {
binding.deviceIcon.apply {
setImageResource(drawableRes)
background.setTint(getColor(context, colorRes))
drawable.setTint(getColor(context, R.color.device_foreground))
}
itemView.isClickable = option != SyncShareOption.Offline
itemView.deviceName.text = name
binding.deviceName.text = name
}
companion object {
@ -64,44 +65,45 @@ class AccountDeviceViewHolder(
* Returns a triple with the name, icon drawable resource, and background color drawable resource
* corresponding to the given [SyncShareOption].
*/
private fun getNameIconBackground(context: Context, option: SyncShareOption) = when (option) {
SyncShareOption.SignIn -> Triple(
context.getText(R.string.sync_sign_in),
R.drawable.mozac_ic_sync,
R.color.default_share_background
)
SyncShareOption.Reconnect -> Triple(
context.getText(R.string.sync_reconnect),
R.drawable.mozac_ic_warning,
R.color.default_share_background
)
SyncShareOption.Offline -> Triple(
context.getText(R.string.sync_offline),
R.drawable.mozac_ic_warning,
R.color.default_share_background
)
SyncShareOption.AddNewDevice -> Triple(
context.getText(R.string.sync_connect_device),
R.drawable.mozac_ic_new,
R.color.default_share_background
)
is SyncShareOption.SendAll -> Triple(
context.getText(R.string.sync_send_to_all),
R.drawable.mozac_ic_select_all,
R.color.default_share_background
)
is SyncShareOption.SingleDevice -> when (option.device.deviceType) {
DeviceType.MOBILE -> Triple(
option.device.displayName,
R.drawable.mozac_ic_device_mobile,
R.color.device_type_mobile_background
private fun getNameIconBackground(context: Context, option: SyncShareOption) =
when (option) {
SyncShareOption.SignIn -> Triple(
context.getText(R.string.sync_sign_in),
R.drawable.mozac_ic_sync,
R.color.default_share_background
)
else -> Triple(
option.device.displayName,
R.drawable.mozac_ic_device_desktop,
R.color.device_type_desktop_background
SyncShareOption.Reconnect -> Triple(
context.getText(R.string.sync_reconnect),
R.drawable.mozac_ic_warning,
R.color.default_share_background
)
SyncShareOption.Offline -> Triple(
context.getText(R.string.sync_offline),
R.drawable.mozac_ic_warning,
R.color.default_share_background
)
SyncShareOption.AddNewDevice -> Triple(
context.getText(R.string.sync_connect_device),
R.drawable.mozac_ic_new,
R.color.default_share_background
)
is SyncShareOption.SendAll -> Triple(
context.getText(R.string.sync_send_to_all),
R.drawable.mozac_ic_select_all,
R.color.default_share_background
)
is SyncShareOption.SingleDevice -> when (option.device.deviceType) {
DeviceType.MOBILE -> Triple(
option.device.displayName,
R.drawable.mozac_ic_device_mobile,
R.color.device_type_mobile_background
)
else -> Triple(
option.device.displayName,
R.drawable.mozac_ic_device_desktop,
R.color.device_type_desktop_background
)
}
}
}
}
}

@ -7,8 +7,8 @@ package org.mozilla.fenix.share.viewholders
import android.view.View
import androidx.annotation.VisibleForTesting
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.app_share_list_item.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.AppShareListItemBinding
import org.mozilla.fenix.share.ShareToAppsInteractor
import org.mozilla.fenix.share.listadapters.AppShareOption
@ -29,9 +29,9 @@ class AppViewHolder(
fun bind(item: AppShareOption) {
application = item
itemView.appName.text = item.name
itemView.appIcon.setImageDrawable(item.icon)
val binding = AppShareListItemBinding.bind(itemView)
binding.appName.text = item.name
binding.appIcon.setImageDrawable(item.icon)
}
companion object {

@ -6,15 +6,14 @@ package org.mozilla.fenix.tabstray.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.extensions.LayoutContainer
import org.mozilla.fenix.tabstray.TrayPagerAdapter
/**
* An abstract [RecyclerView.ViewHolder] for [TrayPagerAdapter] items.
*/
abstract class AbstractPageViewHolder constructor(
override val containerView: View
) : RecyclerView.ViewHolder(containerView), LayoutContainer {
val containerView: View
) : RecyclerView.ViewHolder(containerView) {
abstract fun bind(
adapter: RecyclerView.Adapter<out RecyclerView.ViewHolder>,

@ -6,8 +6,8 @@ package org.mozilla.fenix.tabstray.viewholders
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.component_sync_tabs_tray_layout.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.ComponentSyncTabsTrayLayoutBinding
import org.mozilla.fenix.tabstray.TabsTrayStore
class SyncedTabsPageViewHolder(
@ -19,10 +19,12 @@ class SyncedTabsPageViewHolder(
adapter: RecyclerView.Adapter<out RecyclerView.ViewHolder>,
layoutManager: RecyclerView.LayoutManager
) {
synced_tabs_list.layoutManager = layoutManager
synced_tabs_list.adapter = adapter
val binding = ComponentSyncTabsTrayLayoutBinding.bind(containerView)
synced_tabs_tray_layout.tabsTrayStore = tabsTrayStore
binding.syncedTabsList.layoutManager = layoutManager
binding.syncedTabsList.adapter = adapter
binding.syncedTabsTrayLayout.tabsTrayStore = tabsTrayStore
}
companion object {

Loading…
Cancel
Save