For #1574: Displays previous tab collections when creating
parent
60e5f8a626
commit
4e6f9b9ef1
|
@ -27,7 +27,8 @@ sealed class SaveCollectionStep {
|
||||||
data class CollectionCreationState(
|
data class CollectionCreationState(
|
||||||
val tabs: List<Tab> = listOf(),
|
val tabs: List<Tab> = listOf(),
|
||||||
val selectedTabs: Set<Tab> = setOf(),
|
val selectedTabs: Set<Tab> = setOf(),
|
||||||
val saveCollectionStep: SaveCollectionStep = SaveCollectionStep.SelectTabs
|
val saveCollectionStep: SaveCollectionStep = SaveCollectionStep.SelectTabs,
|
||||||
|
val tabCollections: List<TabCollection> = listOf()
|
||||||
) : ViewState
|
) : ViewState
|
||||||
|
|
||||||
sealed class CollectionCreationChange : Change {
|
sealed class CollectionCreationChange : Change {
|
||||||
|
|
|
@ -76,7 +76,7 @@ class CollectionCreationUIView(
|
||||||
}
|
}
|
||||||
|
|
||||||
view.name_collection_edittext.setOnEditorActionListener { v, actionId, event ->
|
view.name_collection_edittext.setOnEditorActionListener { v, actionId, event ->
|
||||||
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
if (actionId == EditorInfo.IME_ACTION_DONE && !v.text.toString().isEmpty()) {
|
||||||
actionEmitter.onNext(
|
actionEmitter.onNext(
|
||||||
CollectionCreationAction.SaveCollectionName(
|
CollectionCreationAction.SaveCollectionName(
|
||||||
selectedTabs.toList(),
|
selectedTabs.toList(),
|
||||||
|
@ -190,7 +190,7 @@ class CollectionCreationUIView(
|
||||||
name_collection_edittext.setText(
|
name_collection_edittext.setText(
|
||||||
view.context.getString(
|
view.context.getString(
|
||||||
R.string.create_collection_default_name,
|
R.string.create_collection_default_name,
|
||||||
1
|
it.tabCollections.size + 1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
name_collection_edittext.setSelection(0, name_collection_edittext.text.length)
|
name_collection_edittext.setSelection(0, name_collection_edittext.text.length)
|
||||||
|
@ -198,6 +198,8 @@ class CollectionCreationUIView(
|
||||||
view.context.getString(R.string.create_collection_name_collection)
|
view.context.getString(R.string.create_collection_name_collection)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
collectionSaveListAdapter.reloadData(it.tabCollections)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onResumed() {
|
fun onResumed() {
|
||||||
|
|
|
@ -55,6 +55,7 @@ class CreateCollectionFragment : DialogFragment(), CoroutineScope {
|
||||||
val tabs = viewModel!!.tabs
|
val tabs = viewModel!!.tabs
|
||||||
val selectedTabs = viewModel.selectedTabs
|
val selectedTabs = viewModel.selectedTabs
|
||||||
val step = viewModel.saveCollectionStep
|
val step = viewModel.saveCollectionStep
|
||||||
|
val tabCollections = viewModel.tabCollections
|
||||||
|
|
||||||
collectionCreationComponent = CollectionCreationComponent(
|
collectionCreationComponent = CollectionCreationComponent(
|
||||||
view.create_collection_wrapper,
|
view.create_collection_wrapper,
|
||||||
|
@ -63,7 +64,7 @@ class CreateCollectionFragment : DialogFragment(), CoroutineScope {
|
||||||
this,
|
this,
|
||||||
CollectionCreationViewModel::class.java
|
CollectionCreationViewModel::class.java
|
||||||
) {
|
) {
|
||||||
CollectionCreationViewModel(CollectionCreationState(tabs, selectedTabs, step))
|
CollectionCreationViewModel(CollectionCreationState(tabs, selectedTabs, step, tabCollections))
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return view
|
return view
|
||||||
|
|
|
@ -6,9 +6,11 @@ package org.mozilla.fenix.collections
|
||||||
|
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import org.mozilla.fenix.home.sessioncontrol.Tab
|
import org.mozilla.fenix.home.sessioncontrol.Tab
|
||||||
|
import org.mozilla.fenix.home.sessioncontrol.TabCollection
|
||||||
|
|
||||||
class CreateCollectionViewModel : ViewModel() {
|
class CreateCollectionViewModel : ViewModel() {
|
||||||
var selectedTabs = setOf<Tab>()
|
var selectedTabs = setOf<Tab>()
|
||||||
var tabs = listOf<Tab>()
|
var tabs = listOf<Tab>()
|
||||||
var saveCollectionStep: SaveCollectionStep = SaveCollectionStep.SelectTabs
|
var saveCollectionStep: SaveCollectionStep = SaveCollectionStep.SelectTabs
|
||||||
|
var tabCollections = listOf<TabCollection>()
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ package org.mozilla.fenix.collections
|
||||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
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/. */
|
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
@ -21,8 +22,8 @@ class SaveCollectionListAdapter(
|
||||||
val actionEmitter: Observer<CollectionCreationAction>
|
val actionEmitter: Observer<CollectionCreationAction>
|
||||||
) : RecyclerView.Adapter<CollectionViewHolder>() {
|
) : RecyclerView.Adapter<CollectionViewHolder>() {
|
||||||
|
|
||||||
private var collections: List<TabCollection> = listOf()
|
|
||||||
private lateinit var job: Job
|
private lateinit var job: Job
|
||||||
|
private var tabCollections = listOf<TabCollection>()
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CollectionViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CollectionViewHolder {
|
||||||
val view = LayoutInflater.from(parent.context)
|
val view = LayoutInflater.from(parent.context)
|
||||||
|
@ -32,11 +33,11 @@ class SaveCollectionListAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: CollectionViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: CollectionViewHolder, position: Int) {
|
||||||
val collection = collections[position]
|
val collection = tabCollections[position]
|
||||||
holder.bind(collection)
|
holder.bind(collection)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount(): Int = collections.size
|
override fun getItemCount(): Int = tabCollections.size
|
||||||
|
|
||||||
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
||||||
super.onAttachedToRecyclerView(recyclerView)
|
super.onAttachedToRecyclerView(recyclerView)
|
||||||
|
@ -47,6 +48,11 @@ class SaveCollectionListAdapter(
|
||||||
super.onDetachedFromRecyclerView(recyclerView)
|
super.onDetachedFromRecyclerView(recyclerView)
|
||||||
job.cancel()
|
job.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun reloadData(tabCollections: List<TabCollection>) {
|
||||||
|
this.tabCollections = tabCollections
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CollectionViewHolder(
|
class CollectionViewHolder(
|
||||||
|
@ -75,6 +81,7 @@ class CollectionViewHolder(
|
||||||
fun bind(collection: TabCollection) {
|
fun bind(collection: TabCollection) {
|
||||||
this.collection = collection
|
this.collection = collection
|
||||||
view.collection_item.text = collection.title
|
view.collection_item.text = collection.title
|
||||||
|
Log.d("sawyer", "Binding collection: " + collection.title)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
|
@ -17,6 +17,8 @@ import org.mozilla.fenix.test.Mockable
|
||||||
@Mockable
|
@Mockable
|
||||||
class TabCollectionStorage(private val context: Context, private val sessionManager: SessionManager) {
|
class TabCollectionStorage(private val context: Context, private val sessionManager: SessionManager) {
|
||||||
|
|
||||||
|
var cachedTabCollections = listOf<TabCollection>()
|
||||||
|
|
||||||
private val collectionStorage by lazy {
|
private val collectionStorage by lazy {
|
||||||
TabCollectionStorage(context, sessionManager)
|
TabCollectionStorage(context, sessionManager)
|
||||||
}
|
}
|
||||||
|
@ -29,6 +31,10 @@ class TabCollectionStorage(private val context: Context, private val sessionMana
|
||||||
collectionStorage.addTabsToCollection(tabCollection, sessions)
|
collectionStorage.addTabsToCollection(tabCollection, sessions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getTabCollectionsCount(): Int {
|
||||||
|
return collectionStorage.getTabCollectionsCount()
|
||||||
|
}
|
||||||
|
|
||||||
fun getCollections(limit: Int = 20): LiveData<List<TabCollection>> {
|
fun getCollections(limit: Int = 20): LiveData<List<TabCollection>> {
|
||||||
return collectionStorage.getCollections(limit)
|
return collectionStorage.getCollections(limit)
|
||||||
}
|
}
|
||||||
|
|
|
@ -395,6 +395,8 @@ class HomeFragment : Fragment(), CoroutineScope {
|
||||||
|
|
||||||
private fun subscribeToTabCollections(): Observer<List<TabCollection>> {
|
private fun subscribeToTabCollections(): Observer<List<TabCollection>> {
|
||||||
val observer = Observer<List<TabCollection>> {
|
val observer = Observer<List<TabCollection>> {
|
||||||
|
// TODO is it bad to be caching like this?
|
||||||
|
requireComponents.core.tabCollectionStorage.cachedTabCollections = it
|
||||||
getManagedEmitter<SessionControlChange>().onNext(SessionControlChange.CollectionsChange(it))
|
getManagedEmitter<SessionControlChange>().onNext(SessionControlChange.CollectionsChange(it))
|
||||||
}
|
}
|
||||||
requireComponents.core.tabCollectionStorage.getCollections().observe(this, observer)
|
requireComponents.core.tabCollectionStorage.getCollections().observe(this, observer)
|
||||||
|
@ -509,6 +511,7 @@ class HomeFragment : Fragment(), CoroutineScope {
|
||||||
val selectedSet = if (selectedTabs == null) setOf() else setOf(selectedTabs)
|
val selectedSet = if (selectedTabs == null) setOf() else setOf(selectedTabs)
|
||||||
viewModel?.selectedTabs = selectedSet
|
viewModel?.selectedTabs = selectedSet
|
||||||
viewModel?.saveCollectionStep = SaveCollectionStep.SelectTabs
|
viewModel?.saveCollectionStep = SaveCollectionStep.SelectTabs
|
||||||
|
viewModel?.tabCollections = requireComponents.core.tabCollectionStorage.cachedTabCollections
|
||||||
|
|
||||||
view?.let {
|
view?.let {
|
||||||
val directions = HomeFragmentDirections.actionHomeFragmentToCreateCollectionFragment()
|
val directions = HomeFragmentDirections.actionHomeFragmentToCreateCollectionFragment()
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
package org.mozilla.fenix.home.sessioncontrol
|
package org.mozilla.fenix.home.sessioncontrol
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
@ -13,10 +12,8 @@ import io.reactivex.Observer
|
||||||
import kotlinx.android.parcel.Parcelize
|
import kotlinx.android.parcel.Parcelize
|
||||||
import org.mozilla.fenix.mvi.ViewState
|
import org.mozilla.fenix.mvi.ViewState
|
||||||
import org.mozilla.fenix.mvi.Change
|
import org.mozilla.fenix.mvi.Change
|
||||||
import mozilla.components.browser.session.Session
|
|
||||||
import mozilla.components.feature.tab.collections.TabCollection as ACTabCollection
|
import mozilla.components.feature.tab.collections.TabCollection as ACTabCollection
|
||||||
import mozilla.components.feature.tab.collections.Tab as ComponentTab
|
import mozilla.components.feature.tab.collections.Tab as ComponentTab
|
||||||
import org.mozilla.fenix.ext.components
|
|
||||||
import org.mozilla.fenix.mvi.Action
|
import org.mozilla.fenix.mvi.Action
|
||||||
import org.mozilla.fenix.mvi.ActionBusFactory
|
import org.mozilla.fenix.mvi.ActionBusFactory
|
||||||
import org.mozilla.fenix.mvi.UIComponent
|
import org.mozilla.fenix.mvi.UIComponent
|
||||||
|
@ -124,10 +121,6 @@ class SessionControlViewModel(
|
||||||
initialState: SessionControlState
|
initialState: SessionControlState
|
||||||
) : UIComponentViewModelBase<SessionControlState, SessionControlChange>(initialState, reducer) {
|
) : UIComponentViewModelBase<SessionControlState, SessionControlChange>(initialState, reducer) {
|
||||||
companion object {
|
companion object {
|
||||||
fun getSessionFromTab(context: Context, tab: Tab): Session? {
|
|
||||||
return context.components.core.sessionManager.findSessionById(tab.sessionId)
|
|
||||||
}
|
|
||||||
|
|
||||||
val reducer: (SessionControlState, SessionControlChange) -> SessionControlState = { state, change ->
|
val reducer: (SessionControlState, SessionControlChange) -> SessionControlState = { state, change ->
|
||||||
when (change) {
|
when (change) {
|
||||||
is SessionControlChange.CollectionsChange -> state.copy(collections = change.collections)
|
is SessionControlChange.CollectionsChange -> state.copy(collections = change.collections)
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
android:paddingBottom="12dp"
|
android:paddingBottom="12dp"
|
||||||
android:textColor="?primaryText"
|
android:textColor="?primaryText"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="gone"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/divider"
|
app:layout_constraintBottom_toTopOf="@+id/divider"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:targetApi="m" />
|
tools:targetApi="m" />
|
||||||
|
|
|
@ -43,13 +43,19 @@
|
||||||
android:id="@+id/collections_list"
|
android:id="@+id/collections_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:elevation="5dp"
|
||||||
|
android:background="@color/photonGreen50"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/add_collection_button" />
|
app:layout_constraintBottom_toTopOf="@id/add_collection_button"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/back_button"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/add_collection_button"
|
android:id="@+id/add_collection_button"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:elevation="5dp"
|
||||||
android:background="?foundation"
|
android:background="?foundation"
|
||||||
android:drawableStart="@drawable/ic_new"
|
android:drawableStart="@drawable/ic_new"
|
||||||
android:drawablePadding="14dp"
|
android:drawablePadding="14dp"
|
||||||
|
@ -61,7 +67,7 @@
|
||||||
android:textColor="?primaryText"
|
android:textColor="?primaryText"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/divider"
|
app:layout_constraintBottom_toTopOf="@id/divider"
|
||||||
tools:targetApi="m" />
|
tools:targetApi="m" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
@ -82,7 +88,7 @@
|
||||||
android:focusedByDefault="true"
|
android:focusedByDefault="true"
|
||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="text"
|
android:inputType="textCapSentences"
|
||||||
android:paddingStart="20dp"
|
android:paddingStart="20dp"
|
||||||
android:paddingTop="12dp"
|
android:paddingTop="12dp"
|
||||||
android:paddingEnd="20dp"
|
android:paddingEnd="20dp"
|
||||||
|
@ -98,10 +104,12 @@
|
||||||
android:id="@+id/tab_list"
|
android:id="@+id/tab_list"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
|
android:elevation="0dp"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/add_tabs_layout"
|
android:requiresFadingEdge="vertical"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/add_tabs_layout"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/back_button" />
|
app:layout_constraintTop_toBottomOf="@id/back_button" />
|
||||||
|
@ -113,7 +121,7 @@
|
||||||
android:alpha="0"
|
android:alpha="0"
|
||||||
android:background="@drawable/scrim_background"
|
android:background="@drawable/scrim_background"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/tab_list"
|
app:layout_constraintBottom_toBottomOf="@id/tab_list"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
@ -155,7 +163,7 @@
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/save_button"
|
app:layout_constraintEnd_toStartOf="@id/save_button"
|
||||||
app:layout_constraintStart_toEndOf="@id/close_icon"
|
app:layout_constraintStart_toEndOf="@id/close_icon"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
|
@ -44,16 +44,14 @@
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/collections_list"
|
android:id="@+id/collections_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="0dp"
|
||||||
android:alpha="0"
|
app:layout_constraintTop_toBottomOf="parent"
|
||||||
android:visibility="gone"
|
app:layout_constraintBottom_toBottomOf="parent" />
|
||||||
app:layout_constraintBottom_toTopOf="@+id/add_collection_button" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/add_collection_button"
|
android:id="@+id/add_collection_button"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="0dp"
|
||||||
android:alpha="0"
|
|
||||||
android:background="?foundation"
|
android:background="?foundation"
|
||||||
android:drawableStart="@drawable/ic_new"
|
android:drawableStart="@drawable/ic_new"
|
||||||
android:drawablePadding="14dp"
|
android:drawablePadding="14dp"
|
||||||
|
@ -64,8 +62,8 @@
|
||||||
android:text="@string/create_collection_add_new_collection"
|
android:text="@string/create_collection_add_new_collection"
|
||||||
android:textColor="?primaryText"
|
android:textColor="?primaryText"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="gone"
|
app:layout_constraintTop_toBottomOf="parent"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/divider"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
tools:targetApi="m" />
|
tools:targetApi="m" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
@ -87,7 +85,7 @@
|
||||||
android:focusedByDefault="true"
|
android:focusedByDefault="true"
|
||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="text"
|
android:inputType="textCapSentences"
|
||||||
android:paddingStart="20dp"
|
android:paddingStart="20dp"
|
||||||
android:paddingTop="12dp"
|
android:paddingTop="12dp"
|
||||||
android:paddingEnd="20dp"
|
android:paddingEnd="20dp"
|
||||||
|
@ -108,7 +106,7 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:fadingEdgeLength="30dp"
|
android:fadingEdgeLength="30dp"
|
||||||
android:requiresFadingEdge="vertical"
|
android:requiresFadingEdge="vertical"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/name_collection_edittext"
|
app:layout_constraintBottom_toTopOf="@id/name_collection_edittext"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/back_button" />
|
app:layout_constraintTop_toBottomOf="@id/back_button" />
|
||||||
|
@ -164,7 +162,7 @@
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/save_button"
|
app:layout_constraintEnd_toStartOf="@id/save_button"
|
||||||
app:layout_constraintStart_toEndOf="@id/close_icon"
|
app:layout_constraintStart_toEndOf="@id/close_icon"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
|
@ -45,14 +45,19 @@
|
||||||
android:id="@+id/collections_list"
|
android:id="@+id/collections_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:elevation="5dp"
|
||||||
android:alpha="1"
|
android:alpha="1"
|
||||||
|
android:background="?foundation"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/add_collection_button" />
|
app:layout_constraintBottom_toTopOf="@id/add_collection_button"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/add_collection_button"
|
android:id="@+id/add_collection_button"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:elevation="5dp"
|
||||||
android:alpha="1"
|
android:alpha="1"
|
||||||
android:background="?foundation"
|
android:background="?foundation"
|
||||||
android:drawableStart="@drawable/ic_new"
|
android:drawableStart="@drawable/ic_new"
|
||||||
|
@ -65,7 +70,7 @@
|
||||||
android:textColor="?primaryText"
|
android:textColor="?primaryText"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/divider"
|
app:layout_constraintBottom_toTopOf="@id/divider"
|
||||||
tools:targetApi="m" />
|
tools:targetApi="m" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
@ -88,7 +93,7 @@
|
||||||
android:focusedByDefault="true"
|
android:focusedByDefault="true"
|
||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="text"
|
android:inputType="textCapSentences"
|
||||||
android:paddingStart="20dp"
|
android:paddingStart="20dp"
|
||||||
android:paddingTop="12dp"
|
android:paddingTop="12dp"
|
||||||
android:paddingEnd="20dp"
|
android:paddingEnd="20dp"
|
||||||
|
@ -102,6 +107,7 @@
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/tab_list"
|
android:id="@+id/tab_list"
|
||||||
|
android:elevation="0dp"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
|
@ -109,7 +115,7 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:fadingEdgeLength="30dp"
|
android:fadingEdgeLength="30dp"
|
||||||
android:requiresFadingEdge="vertical"
|
android:requiresFadingEdge="vertical"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/collections_list"
|
app:layout_constraintBottom_toTopOf="@id/add_collection_button"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/back_button" />
|
app:layout_constraintTop_toBottomOf="@id/back_button" />
|
||||||
|
@ -121,7 +127,7 @@
|
||||||
android:alpha="0.5"
|
android:alpha="0.5"
|
||||||
android:background="@drawable/scrim_background"
|
android:background="@drawable/scrim_background"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/tab_list"
|
app:layout_constraintBottom_toTopOf="@id/collections_list"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
@ -165,7 +171,7 @@
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/save_button"
|
app:layout_constraintEnd_toStartOf="@id/save_button"
|
||||||
app:layout_constraintStart_toEndOf="@id/close_icon"
|
app:layout_constraintStart_toEndOf="@id/close_icon"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue