For #17917: Use View binding in onboarding cards.

upstream-sync
mcarare 3 years ago committed by mergify[bot]
parent 29111a4cf2
commit 36b50ea8d9

@ -137,6 +137,10 @@ android {
}
}
buildFeatures {
viewBinding true
}
aaptOptions {
// All JavaScript code used internally by GeckoView is packaged in a
// file called omni.ja. If this file is compressed in the APK,

@ -10,7 +10,6 @@ import androidx.annotation.VisibleForTesting
import androidx.appcompat.content.res.AppCompatResources.getDrawable
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.onboarding_automatic_signin.view.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
@ -20,6 +19,7 @@ import mozilla.components.support.ktx.android.view.putCompoundDrawablesRelativeW
import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.OnboardingAutomaticSigninBinding
import org.mozilla.fenix.ext.components
class OnboardingAutomaticSignInViewHolder(
@ -28,12 +28,13 @@ class OnboardingAutomaticSignInViewHolder(
) : RecyclerView.ViewHolder(view) {
private lateinit var shareableAccount: ShareableAccount
private val headerText = view.header_text
private val binding = OnboardingAutomaticSigninBinding.bind(view)
private val headerText = binding.headerText
init {
view.fxa_sign_in_button.setOnClickListener {
binding.fxaSignInButton.setOnClickListener {
scope.launch {
onClick(it.fxa_sign_in_button)
onClick(binding.fxaSignInButton)
}
}
}

@ -6,9 +6,9 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_finish.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.OnboardingFinishBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@ -18,7 +18,8 @@ class OnboardingFinishViewHolder(
) : RecyclerView.ViewHolder(view) {
init {
view.finish_button.setOnClickListener {
val binding = OnboardingFinishBinding.bind(view)
binding.finishButton.setOnClickListener {
interactor.onStartBrowsingClicked()
it.context.components.analytics.metrics.track(Event.OnboardingFinish)
}

@ -6,14 +6,16 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_header.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.OnboardingHeaderBinding
class OnboardingHeaderViewHolder(view: View) : RecyclerView.ViewHolder(view) {
init {
val binding = OnboardingHeaderBinding.bind(view)
val appName = view.context.getString(R.string.app_name)
view.header_text.text = view.context.getString(R.string.onboarding_header, appName)
binding.headerText.text = view.context.getString(R.string.onboarding_header, appName)
}
companion object {

@ -7,18 +7,17 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.View
import androidx.navigation.Navigation
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_manual_signin.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.OnboardingManualSigninBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.home.HomeFragmentDirections
class OnboardingManualSignInViewHolder(view: View) : RecyclerView.ViewHolder(view) {
private val headerText = view.header_text
private var binding: OnboardingManualSigninBinding = OnboardingManualSigninBinding.bind(view)
init {
view.fxa_sign_in_button.setOnClickListener {
binding.fxaSignInButton.setOnClickListener {
it.context.components.analytics.metrics.track(Event.OnboardingManualSignIn)
val directions = HomeFragmentDirections.actionGlobalTurnOnSync()
@ -28,7 +27,7 @@ class OnboardingManualSignInViewHolder(view: View) : RecyclerView.ViewHolder(vie
fun bind() {
val context = itemView.context
headerText.text = context.getString(R.string.onboarding_account_sign_in_header_1)
binding.headerText.text = context.getString(R.string.onboarding_account_sign_in_header_1)
}
companion object {

@ -6,9 +6,9 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_privacy_notice.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.OnboardingPrivacyNoticeBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@ -18,12 +18,13 @@ class OnboardingPrivacyNoticeViewHolder(
) : RecyclerView.ViewHolder(view) {
init {
view.header_text.setOnboardingIcon(R.drawable.ic_info)
val binding = OnboardingPrivacyNoticeBinding.bind(view)
binding.headerText.setOnboardingIcon(R.drawable.ic_info)
val appName = view.context.getString(R.string.app_name)
view.description_text.text = view.context.getString(R.string.onboarding_privacy_notice_description2, appName)
binding.descriptionText.text = view.context.getString(R.string.onboarding_privacy_notice_description2, appName)
view.read_button.setOnClickListener {
binding.readButton.setOnClickListener {
it.context.components.analytics.metrics.track(Event.OnboardingPrivacyNotice)
interactor.onReadPrivacyNoticeClicked()
}

@ -14,11 +14,11 @@ import android.view.View
import androidx.annotation.ColorInt
import androidx.annotation.DrawableRes
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_private_browsing.view.*
import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.content.getDrawableWithTint
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.OnboardingPrivateBrowsingBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.setBounds
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@ -29,14 +29,15 @@ class OnboardingPrivateBrowsingViewHolder(
) : RecyclerView.ViewHolder(view) {
init {
view.header_text.setOnboardingIcon(R.drawable.ic_onboarding_private_browsing)
val binding = OnboardingPrivateBrowsingBinding.bind(view)
binding.headerText.setOnboardingIcon(R.drawable.ic_onboarding_private_browsing)
// Display a private browsing icon as a character inside the description text.
val inlineIcon = PrivateBrowsingImageSpan(
view.context,
R.drawable.ic_private_browsing,
tint = view.context.getColorFromAttr(R.attr.primaryText),
size = view.description_text_once.lineHeight
size = binding.descriptionTextOnce.lineHeight
)
val text = SpannableString(view.context.getString(R.string.onboarding_private_browsing_description1)).apply {
@ -49,9 +50,9 @@ class OnboardingPrivateBrowsingViewHolder(
)
}
view.description_text_once.text = text
view.description_text_once.contentDescription = String.format(text.toString(), view.header_text.text)
view.open_settings_button.setOnClickListener {
binding.descriptionTextOnce.text = text
binding.descriptionTextOnce.contentDescription = String.format(text.toString(), binding.headerText.text)
binding.openSettingsButton.setOnClickListener {
it.context.components.analytics.metrics.track(Event.OnboardingPrivateBrowsing)
interactor.onOpenSettingsClicked()
}

@ -7,12 +7,12 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.content.Context
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_section_header.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.OnboardingSectionHeaderBinding
class OnboardingSectionHeaderViewHolder(view: View) : RecyclerView.ViewHolder(view) {
private val sectionHeader = view.section_header_text
private val binding = OnboardingSectionHeaderBinding.bind(view)
private val sectionHeader = binding.sectionHeaderText
fun bind(labelBuilder: (Context) -> String) {
sectionHeader.text = labelBuilder(itemView.context)

@ -9,10 +9,10 @@ import android.os.Build.VERSION.SDK_INT
import android.view.View
import androidx.appcompat.app.AppCompatDelegate
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_theme_picker.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.Event.OnboardingThemePicker.Theme
import org.mozilla.fenix.databinding.OnboardingThemePickerBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.onboarding.OnboardingRadioButton
@ -21,9 +21,10 @@ import org.mozilla.fenix.utils.view.addToRadioGroup
class OnboardingThemePickerViewHolder(view: View) : RecyclerView.ViewHolder(view) {
init {
val radioLightTheme = view.theme_light_radio_button
val radioDarkTheme = view.theme_dark_radio_button
val radioFollowDeviceTheme = view.theme_automatic_radio_button
val binding = OnboardingThemePickerBinding.bind(view)
val radioLightTheme = binding.themeLightRadioButton
val radioDarkTheme = binding.themeDarkRadioButton
val radioFollowDeviceTheme = binding.themeAutomaticRadioButton
radioFollowDeviceTheme.key = if (SDK_INT >= Build.VERSION_CODES.P) {
R.string.pref_key_follow_device_theme
@ -36,24 +37,24 @@ class OnboardingThemePickerViewHolder(view: View) : RecyclerView.ViewHolder(view
radioDarkTheme,
radioFollowDeviceTheme
)
radioLightTheme.addIllustration(view.theme_light_image)
radioDarkTheme.addIllustration(view.theme_dark_image)
radioLightTheme.addIllustration(binding.themeLightImage)
radioDarkTheme.addIllustration(binding.themeDarkImage)
view.theme_dark_image.setOnClickListener {
binding.themeDarkImage.setOnClickListener {
it.context.components.analytics.metrics.track(Event.OnboardingThemePicker(Theme.DARK))
radioDarkTheme.performClick()
}
view.theme_light_image.setOnClickListener {
binding.themeLightImage.setOnClickListener {
it.context.components.analytics.metrics.track(Event.OnboardingThemePicker(Theme.LIGHT))
radioLightTheme.performClick()
}
val automaticTitle = view.context.getString(R.string.onboarding_theme_automatic_title)
val automaticSummary = view.context.getString(R.string.onboarding_theme_automatic_summary)
view.clickable_region_automatic.contentDescription = "$automaticTitle $automaticSummary"
binding.clickableRegionAutomatic.contentDescription = "$automaticTitle $automaticSummary"
view.clickable_region_automatic.setOnClickListener {
binding.clickableRegionAutomatic.setOnClickListener {
it.context.components.analytics.metrics
.track(Event.OnboardingThemePicker(Theme.FOLLOW_DEVICE))
radioFollowDeviceTheme.performClick()

@ -6,11 +6,11 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_toolbar_position_picker.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.Event.OnboardingToolbarPosition.Position
import org.mozilla.fenix.components.toolbar.ToolbarPosition
import org.mozilla.fenix.databinding.OnboardingToolbarPositionPickerBinding
import org.mozilla.fenix.ext.asActivity
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.onboarding.OnboardingRadioButton
@ -21,13 +21,15 @@ class OnboardingToolbarPositionPickerViewHolder(view: View) : RecyclerView.ViewH
private val metrics = view.context.components.analytics.metrics
init {
val radioTopToolbar = view.toolbar_top_radio_button
val radioBottomToolbar = view.toolbar_bottom_radio_button
val binding = OnboardingToolbarPositionPickerBinding.bind(view)
val radioTopToolbar = binding.toolbarTopRadioButton
val radioBottomToolbar = binding.toolbarBottomRadioButton
val radio: OnboardingRadioButton
addToRadioGroup(radioTopToolbar, radioBottomToolbar)
radioTopToolbar.addIllustration(view.toolbar_top_image)
radioBottomToolbar.addIllustration(view.toolbar_bottom_image)
radioTopToolbar.addIllustration(binding.toolbarTopImage)
radioBottomToolbar.addIllustration(binding.toolbarBottomImage)
val settings = view.context.components.settings
radio = when (settings.toolbarPosition) {
@ -42,7 +44,7 @@ class OnboardingToolbarPositionPickerViewHolder(view: View) : RecyclerView.ViewH
itemView.context.asActivity()?.recreate()
}
view.toolbar_bottom_image.setOnClickListener {
binding.toolbarBottomImage.setOnClickListener {
metrics.track(Event.OnboardingToolbarPosition(Position.BOTTOM))
radioBottomToolbar.performClick()
@ -53,7 +55,7 @@ class OnboardingToolbarPositionPickerViewHolder(view: View) : RecyclerView.ViewH
itemView.context.asActivity()?.recreate()
}
view.toolbar_top_image.setOnClickListener {
binding.toolbarTopImage.setOnClickListener {
metrics.track(Event.OnboardingToolbarPosition(Position.TOP))
radioTopToolbar.performClick()
}

@ -6,10 +6,10 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.onboarding_tracking_protection.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.Event.OnboardingTrackingProtection.Setting
import org.mozilla.fenix.databinding.OnboardingTrackingProtectionBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.onboarding.OnboardingRadioButton
@ -21,12 +21,13 @@ class OnboardingTrackingProtectionViewHolder(view: View) : RecyclerView.ViewHold
private var strictTrackingProtection: OnboardingRadioButton
init {
view.header_text.setOnboardingIcon(R.drawable.ic_onboarding_tracking_protection)
val binding = OnboardingTrackingProtectionBinding.bind(view)
binding.headerText.setOnboardingIcon(R.drawable.ic_onboarding_tracking_protection)
standardTrackingProtection = view.tracking_protection_standard_option
strictTrackingProtection = view.tracking_protection_strict_default
standardTrackingProtection = binding.trackingProtectionStandardOption
strictTrackingProtection = binding.trackingProtectionStrictDefault
view.description_text.text = view.context.getString(
binding.descriptionText.text = view.context.getString(
R.string.onboarding_tracking_protection_description_3
)

@ -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.onboarding_whats_new.view.*
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.OnboardingWhatsNewBinding
import org.mozilla.fenix.ext.addUnderline
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@ -17,13 +17,14 @@ class OnboardingWhatsNewViewHolder(
) : RecyclerView.ViewHolder(view) {
init {
view.header_text.setOnboardingIcon(R.drawable.ic_whats_new)
val binding = OnboardingWhatsNewBinding.bind(view)
binding.headerText.setOnboardingIcon(R.drawable.ic_whats_new)
val appName = view.context.getString(R.string.app_name)
view.description_text.text = view.context.getString(R.string.onboarding_whats_new_description, appName)
binding.descriptionText.text = view.context.getString(R.string.onboarding_whats_new_description, appName)
view.get_answers.addUnderline()
view.get_answers.setOnClickListener {
binding.getAnswers.addUnderline()
binding.getAnswers.setOnClickListener {
interactor.onWhatsNewGetAnswersClicked()
}
}

Loading…
Cancel
Save