From 8928b190791f2a46399619b29ae9517a15b1c32a Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Wed, 15 May 2019 21:53:31 -0700 Subject: [PATCH] For #2390 - Adds a theme picker card - applies generic styling to cards - adds margins to headers and onboarding cards --- .../sessioncontrol/SessionControlAdapter.kt | 4 +++ .../sessioncontrol/SessionControlUIView.kt | 3 ++- .../OnboardingThemePickerViewHolder.kt | 22 ++++++++++++++++ .../onboarding_card_background_light.xml | 10 ++++++++ app/src/main/res/layout/onboarding_header.xml | 3 ++- .../res/layout/onboarding_section_header.xml | 3 ++- .../res/layout/onboarding_theme_picker.xml | 25 +++++++++++++++++++ app/src/main/res/values/strings.xml | 4 +++ app/src/main/res/values/styles.xml | 6 +++++ 9 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt create mode 100644 app/src/main/res/drawable/onboarding_card_background_light.xml create mode 100644 app/src/main/res/layout/onboarding_theme_picker.xml diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt index c7ef6efbb..350d9563f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt @@ -22,6 +22,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TabInCollectionViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingHeaderViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingSectionHeaderViewHolder +import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingThemePickerViewHolder import java.lang.IllegalStateException sealed class AdapterItem { @@ -40,6 +41,7 @@ sealed class AdapterItem { object OnboardingHeader : AdapterItem() data class OnboardingSectionHeader(val labelBuilder: (Context) -> String) : AdapterItem() + object OnboardingThemePicker : AdapterItem() val viewType: Int get() = when (this) { @@ -55,6 +57,7 @@ sealed class AdapterItem { is TabInCollectionItem -> TabInCollectionViewHolder.LAYOUT_ID OnboardingHeader -> OnboardingHeaderViewHolder.LAYOUT_ID is OnboardingSectionHeader -> OnboardingSectionHeaderViewHolder.LAYOUT_ID + OnboardingThemePicker -> OnboardingThemePickerViewHolder.LAYOUT_ID } } @@ -87,6 +90,7 @@ class SessionControlAdapter( TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(view, actionEmitter, job) OnboardingHeaderViewHolder.LAYOUT_ID -> OnboardingHeaderViewHolder(view) OnboardingSectionHeaderViewHolder.LAYOUT_ID -> OnboardingSectionHeaderViewHolder(view) + OnboardingThemePickerViewHolder.LAYOUT_ID -> OnboardingThemePickerViewHolder(view) else -> throw IllegalStateException() } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt index 577ed13d7..d79e38c96 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt @@ -66,7 +66,8 @@ private fun onboardingAdapterItems(): List = listOf( AdapterItem.OnboardingSectionHeader() { val appName = it.getString(R.string.app_name) it.getString(R.string.onboarding_feature_section_header, appName) - } + }, + AdapterItem.OnboardingThemePicker ) private fun SessionControlState.toAdapterList(): List = when (mode) { 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 new file mode 100644 index 000000000..f8bb568aa --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingThemePickerViewHolder.kt @@ -0,0 +1,22 @@ +/* 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.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 + +class OnboardingThemePickerViewHolder(private val view: View) : RecyclerView.ViewHolder(view) { + + fun bind(labelBuilder: (Context) -> String) { + view.section_header_text.text = labelBuilder(view.context) + } + + companion object { + const val LAYOUT_ID = R.layout.onboarding_theme_picker + } +} diff --git a/app/src/main/res/drawable/onboarding_card_background_light.xml b/app/src/main/res/drawable/onboarding_card_background_light.xml new file mode 100644 index 000000000..fc80efc8a --- /dev/null +++ b/app/src/main/res/drawable/onboarding_card_background_light.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/app/src/main/res/layout/onboarding_header.xml b/app/src/main/res/layout/onboarding_header.xml index 09719d2cb..de144428c 100644 --- a/app/src/main/res/layout/onboarding_header.xml +++ b/app/src/main/res/layout/onboarding_header.xml @@ -6,7 +6,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/onboarding_header" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_marginBottom="8dp"> + android:layout_height="wrap_content" + android:layout_marginBottom="16dp"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4e33fa551..cab9b3606 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -494,4 +494,8 @@ Get to know %s + + Choose your theme + + Save some battery and your eyesight by enabling dark mode. diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2e21da9d8..fb051ac0d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -225,4 +225,10 @@ ?android:attr/selectableItemBackground ?accentBright + +