diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt index 288063fa0..2869d7059 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt @@ -9,11 +9,17 @@ 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 kotlinx.android.synthetic.main.onboarding_theme_picker.view.clickable_region_automatic +import kotlinx.android.synthetic.main.onboarding_theme_picker.view.theme_automatic_radio_button +import kotlinx.android.synthetic.main.onboarding_theme_picker.view.theme_dark_image +import kotlinx.android.synthetic.main.onboarding_theme_picker.view.theme_dark_radio_button +import kotlinx.android.synthetic.main.onboarding_theme_picker.view.theme_light_image +import kotlinx.android.synthetic.main.onboarding_theme_picker.view.theme_light_radio_button import org.mozilla.fenix.R import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.settings +import org.mozilla.fenix.onboarding.OnboardingRadioButton class OnboardingThemePickerViewHolder(view: View) : RecyclerView.ViewHolder(view) { @@ -54,10 +60,12 @@ class OnboardingThemePickerViewHolder(view: View) : RecyclerView.ViewHolder(view } radioLightTheme.onClickListener { + setLightIllustrationSelected() setNewTheme(AppCompatDelegate.MODE_NIGHT_NO) } radioDarkTheme.onClickListener { + setDarkIllustrationSelected() view.context.components.analytics.metrics.track( Event.DarkThemeSelected( Event.DarkThemeSelected.Source.ONBOARDING @@ -67,6 +75,7 @@ class OnboardingThemePickerViewHolder(view: View) : RecyclerView.ViewHolder(view } radioFollowDeviceTheme.onClickListener { + setNoIllustrationSelected() if (SDK_INT >= Build.VERSION_CODES.P) { setNewTheme(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) } else { @@ -75,15 +84,40 @@ class OnboardingThemePickerViewHolder(view: View) : RecyclerView.ViewHolder(view } with(view.context.settings()) { - val radio = when { - this.shouldUseLightTheme -> radioLightTheme - this.shouldUseDarkTheme -> radioDarkTheme - else -> radioFollowDeviceTheme + val radio: OnboardingRadioButton + when { + shouldUseLightTheme -> { + radio = radioLightTheme + setLightIllustrationSelected() + } + shouldUseDarkTheme -> { + radio = radioDarkTheme + setDarkIllustrationSelected() + } + else -> { + radio = radioFollowDeviceTheme + setNoIllustrationSelected() + } } radio.isChecked = true } } + private fun setNoIllustrationSelected() { + itemView.theme_dark_image.isSelected = false + itemView.theme_light_image.isSelected = false + } + + private fun setDarkIllustrationSelected() { + itemView.theme_dark_image.isSelected = true + itemView.theme_light_image.isSelected = false + } + + private fun setLightIllustrationSelected() { + itemView.theme_dark_image.isSelected = false + itemView.theme_light_image.isSelected = true + } + private fun setNewTheme(mode: Int) { if (AppCompatDelegate.getDefaultNightMode() == mode) return AppCompatDelegate.setDefaultNightMode(mode) diff --git a/app/src/main/res/layout/onboarding_theme_picker.xml b/app/src/main/res/layout/onboarding_theme_picker.xml index 05cb90939..4277fd321 100644 --- a/app/src/main/res/layout/onboarding_theme_picker.xml +++ b/app/src/main/res/layout/onboarding_theme_picker.xml @@ -7,8 +7,7 @@ android:id="@+id/onboarding_card" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="16dp" - android:background="@drawable/onboarding_card_background_light" + style="@style/OnboardingCardLight" android:paddingTop="16dp">