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 ec6737ce5..f57155962 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -4,27 +4,20 @@ package org.mozilla.fenix.home -import android.content.Context -import android.graphics.Color -import android.os.Build import android.os.Bundle import android.transition.TransitionInflater import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.RelativeLayout -import android.widget.TextView -import androidx.annotation.RequiresApi + import androidx.core.view.ViewCompat import androidx.fragment.app.Fragment -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.LifecycleObserver import androidx.navigation.Navigation import androidx.navigation.fragment.FragmentNavigator import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.fragment_home.* import org.mozilla.fenix.R +import org.mozilla.fenix.home.sessions.SessionsAdapter class HomeFragment : Fragment() { override fun onCreateView( @@ -43,7 +36,7 @@ class HomeFragment : Fragment() { menuButton.visibility = View.GONE privateBrowsingButton.visibility = View.GONE - sessionsAdapter = SessionsAdapter(requireContext()) + sessionsAdapter = SessionsAdapter() toolbar_wrapper.clipToOutline = false toolbar.setOnClickListener { it -> @@ -66,28 +59,3 @@ class HomeFragment : Fragment() { exitTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.fade) } } - -// Temporary adapter -private class SessionsAdapter(val context: Context) : RecyclerView.Adapter() { - class ViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView) {} - - @RequiresApi(Build.VERSION_CODES.M) - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val textView = TextView(context).apply { - val lp = RelativeLayout.LayoutParams( - RelativeLayout.LayoutParams.WRAP_CONTENT, // Width of TextView - RelativeLayout.LayoutParams.WRAP_CONTENT - ) - setLayoutParams(lp) - setText("This is a sample TextView...") - setTextColor(Color.parseColor("#ff0000")) - } - return ViewHolder(textView) - } - - override fun getItemCount(): Int = 100 - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.textView.text = "Cell: ${position}" - } -} diff --git a/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt new file mode 100644 index 000000000..434e5fa31 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/home/sessions/SessionsAdapter.kt @@ -0,0 +1,53 @@ +/* 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.sessions + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import org.mozilla.fenix.R + + +class SessionsAdapter() : RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false) + + return when(viewType) { + HeaderViewHolder.LAYOUT_ID -> HeaderViewHolder(view) + EmptyListViewHolder.LAYOUT_ID -> EmptyListViewHolder(view) + else -> EmptyListViewHolder(view) + } + } + + override fun getItemViewType(position: Int) = when (position) { + 0 -> HeaderViewHolder.LAYOUT_ID + 1 -> EmptyListViewHolder.LAYOUT_ID + else -> -1 + } + + override fun getItemCount(): Int = 2 + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is HeaderViewHolder) { + holder.headerText.text = "Today" + } + } + + private class HeaderViewHolder(private val view: View): RecyclerView.ViewHolder(view) { + val headerText = view.findViewById(R.id.header_text) + + companion object { + const val LAYOUT_ID = R.layout.session_list_header + } + } + + private class EmptyListViewHolder(private val view: View): RecyclerView.ViewHolder(view) { + companion object { + const val LAYOUT_ID = R.layout.session_list_empty + } + } +} diff --git a/app/src/main/res/drawable/ic_sessions_intro.xml b/app/src/main/res/drawable/ic_sessions_intro.xml new file mode 100644 index 000000000..416012aba --- /dev/null +++ b/app/src/main/res/drawable/ic_sessions_intro.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/session_list_empty_bg.xml b/app/src/main/res/drawable/session_list_empty_bg.xml new file mode 100644 index 000000000..aeceb2044 --- /dev/null +++ b/app/src/main/res/drawable/session_list_empty_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/session_list_empty.xml b/app/src/main/res/layout/session_list_empty.xml new file mode 100644 index 000000000..c5ddb9b30 --- /dev/null +++ b/app/src/main/res/layout/session_list_empty.xml @@ -0,0 +1,34 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/session_list_header.xml b/app/src/main/res/layout/session_list_header.xml new file mode 100644 index 000000000..e4dfa0e36 --- /dev/null +++ b/app/src/main/res/layout/session_list_header.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d149abde3..d8eed3e12 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,4 +11,8 @@ #0C0C0D #f9f9fa #0C0C0D + + #1A665BFD + #665BFD + #6D6D6E diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e73d62c3..88784fafd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,4 +15,7 @@ Private Tab New Tab Report Issue + Fenix will collect your browsing sessions\n on your Home Screen for you to + retrieve\n later. +