diff --git a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt index f19cd18f2..fb95329a8 100644 --- a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt @@ -26,12 +26,23 @@ class CreateCollectionFragment : DialogFragment() { setStyle(DialogFragment.STYLE_NO_TITLE, R.style.CreateCollectionDialogStyle) } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { val view = inflater.inflate(R.layout.fragment_create_collection, container, false) + val viewModel = activity?.run { + ViewModelProviders.of(this).get(CreateCollectionViewModel::class.java) + } + val tabs = viewModel!!.tabs + val selectedTabs = viewModel.selectedTabs + collectionCreationComponent = CollectionCreationComponent( view.create_collection_wrapper, - ActionBusFactory.get(this) + ActionBusFactory.get(this), + CollectionCreationState(tabs = tabs, selectedTabs = selectedTabs) ) return view @@ -39,12 +50,6 @@ class CreateCollectionFragment : DialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val tabs = activity?.run { - ViewModelProviders.of(this).get(CreateCollectionViewModel::class.java) - }!!.tabs - - getManagedEmitter().onNext(CollectionCreationChange.TabListChange(tabs)) - getAutoDisposeObservable().subscribe { when (it) { is CollectionCreationAction.Close -> dismiss() diff --git a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt index f60559508..cecdada11 100644 --- a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt +++ b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt @@ -7,5 +7,6 @@ package org.mozilla.fenix.collections import androidx.lifecycle.ViewModel class CreateCollectionViewModel : ViewModel() { + var selectedTabs = setOf() var tabs = listOf() } 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 1f2c1c5f7..b9f83aa6c 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -188,8 +188,17 @@ class HomeFragment : Fragment(), CoroutineScope { ViewModelProviders.of(this).get(CreateCollectionViewModel::class.java) }!!.tabs = tabs + val selectedTabs = tabs.find { tab -> tab.sessionId == action.selectedTabSessionId } + val selectedSet = if (selectedTabs == null) setOf() else setOf(selectedTabs) + activity?.run { + ViewModelProviders.of(this).get(CreateCollectionViewModel::class.java) + }!!.selectedTabs = selectedSet + CreateCollectionFragment() - .show(requireActivity().supportFragmentManager, CreateCollectionFragment.createCollectionTag) + .show( + requireActivity().supportFragmentManager, + CreateCollectionFragment.createCollectionTag + ) } is TabAction.MenuTapped -> { val isPrivate = (activity as HomeActivity).browsingModeManager.isPrivate diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt index 00b3ec11b..a53323d4e 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt @@ -60,7 +60,7 @@ data class SessionControlState( ) : ViewState sealed class TabAction : Action { - object SaveTabGroup : TabAction() + data class SaveTabGroup(val selectedTabSessionId: String?) : TabAction() object MenuTapped : TabAction() object Add : TabAction() data class CloseAll(val private: Boolean) : TabAction() diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt index 30890c4e4..b12cefbc1 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt @@ -20,7 +20,7 @@ class SaveTabGroupViewHolder( init { view.save_tab_group_button.setOnClickListener { - actionEmitter.onNext(TabAction.SaveTabGroup) + actionEmitter.onNext(TabAction.SaveTabGroup(selectedTabSessionId = null)) } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt index 8c4de5e44..3ccdefa40 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt @@ -55,6 +55,11 @@ class TabViewHolder( actionEmitter.onNext(TabAction.Select(tab?.sessionId!!)) } + item_tab.setOnLongClickListener { + actionEmitter.onNext(TabAction.SaveTabGroup(tab?.sessionId!!)) + true + } + close_tab_button?.run { increaseTapArea(buttonIncreaseDps) setOnClickListener {