From dfe14e17516393ec1adfc26c80e9f8b34b059c38 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Wed, 15 May 2019 21:11:43 -0700 Subject: [PATCH] For #2390 - Adds the onboarding welcome message --- .../java/org/mozilla/fenix/home/HomeFragment.kt | 1 - .../sessioncontrol/SessionControlAdapter.kt | 5 +++++ .../home/sessioncontrol/SessionControlUIView.kt | 6 +++++- .../onboarding/OnboardingHeaderViewHolder.kt | 15 +++++++++++++++ app/src/main/res/layout/onboarding_header.xml | 17 +++++++++++++++++ app/src/main/res/values/strings.xml | 4 ++++ 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingHeaderViewHolder.kt create mode 100644 app/src/main/res/layout/onboarding_header.xml diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 5e7592de5..73e92121e 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -58,7 +58,6 @@ import org.mozilla.fenix.mvi.ActionBusFactory import org.mozilla.fenix.mvi.getAutoDisposeObservable import org.mozilla.fenix.mvi.getManagedEmitter import org.mozilla.fenix.onboarding.FenixOnboarding -import org.mozilla.fenix.onboarding.Onboarding import org.mozilla.fenix.settings.SupportUtils import org.mozilla.fenix.utils.ItsNotBrokenSnack import kotlin.coroutines.CoroutineContext 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 bb841e71f..7b2590aed 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 @@ -19,6 +19,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionHeaderViewHol import org.mozilla.fenix.home.sessioncontrol.viewholders.NoCollectionMessageViewHolder 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 java.lang.IllegalStateException sealed class AdapterItem { @@ -33,6 +34,8 @@ sealed class AdapterItem { data class CollectionItem(val collection: TabCollection) : AdapterItem() data class TabInCollectionItem(val collection: TabCollection, val tab: Tab, val isLastTab: Boolean) : AdapterItem() + object OnboardingHeader : AdapterItem() + val viewType: Int get() = when (this) { is TabHeader -> TabHeaderViewHolder.LAYOUT_ID @@ -45,6 +48,7 @@ sealed class AdapterItem { NoCollectionMessage -> NoCollectionMessageViewHolder.LAYOUT_ID is CollectionItem -> CollectionViewHolder.LAYOUT_ID is TabInCollectionItem -> TabInCollectionViewHolder.LAYOUT_ID + OnboardingHeader -> OnboardingHeaderViewHolder.LAYOUT_ID } } @@ -75,6 +79,7 @@ class SessionControlAdapter( NoCollectionMessageViewHolder.LAYOUT_ID -> NoCollectionMessageViewHolder(view) CollectionViewHolder.LAYOUT_ID -> CollectionViewHolder(view, actionEmitter, job) TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(view, actionEmitter, job) + OnboardingHeaderViewHolder.LAYOUT_ID -> OnboardingHeaderViewHolder(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 f6700d1cf..236091f89 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 @@ -60,10 +60,14 @@ private fun privateModeAdapterItems(tabs: List): List { return items } +private fun onboardingAdapterItems(): List = listOf( + AdapterItem.OnboardingHeader +) + private fun SessionControlState.toAdapterList(): List = when (mode) { is Mode.Normal -> normalModeAdapterItems(tabs, collections) is Mode.Private -> privateModeAdapterItems(tabs) - is Mode.Onboarding -> listOf() + is Mode.Onboarding -> onboardingAdapterItems() } private fun collectionTabItems(collection: TabCollection) = collection.tabs.mapIndexed { index, tab -> diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingHeaderViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingHeaderViewHolder.kt new file mode 100644 index 000000000..bf6e2c270 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingHeaderViewHolder.kt @@ -0,0 +1,15 @@ +/* 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.view.View +import androidx.recyclerview.widget.RecyclerView +import org.mozilla.fenix.R + +class OnboardingHeaderViewHolder(view: View) : RecyclerView.ViewHolder(view) { + companion object { + const val LAYOUT_ID = R.layout.onboarding_header + } +} diff --git a/app/src/main/res/layout/onboarding_header.xml b/app/src/main/res/layout/onboarding_header.xml new file mode 100644 index 000000000..09719d2cb --- /dev/null +++ b/app/src/main/res/layout/onboarding_header.xml @@ -0,0 +1,17 @@ + + + + + \ 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 5f93e1d67..11a7039e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -485,4 +485,8 @@ Entering full screen mode URL copied + + + + Welcome to Firefox!