|
|
@ -5,6 +5,7 @@
|
|
|
|
package org.mozilla.fenix.home
|
|
|
|
package org.mozilla.fenix.home
|
|
|
|
|
|
|
|
|
|
|
|
import android.animation.Animator
|
|
|
|
import android.animation.Animator
|
|
|
|
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.DialogInterface
|
|
|
|
import android.content.DialogInterface
|
|
|
|
import android.graphics.Bitmap
|
|
|
|
import android.graphics.Bitmap
|
|
|
|
import android.graphics.drawable.BitmapDrawable
|
|
|
|
import android.graphics.drawable.BitmapDrawable
|
|
|
@ -25,6 +26,7 @@ import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
|
|
|
|
import androidx.constraintlayout.widget.ConstraintSet.START
|
|
|
|
import androidx.constraintlayout.widget.ConstraintSet.START
|
|
|
|
import androidx.constraintlayout.widget.ConstraintSet.TOP
|
|
|
|
import androidx.constraintlayout.widget.ConstraintSet.TOP
|
|
|
|
import androidx.core.view.updateLayoutParams
|
|
|
|
import androidx.core.view.updateLayoutParams
|
|
|
|
|
|
|
|
import androidx.core.content.ContextCompat
|
|
|
|
import androidx.fragment.app.Fragment
|
|
|
|
import androidx.fragment.app.Fragment
|
|
|
|
import androidx.fragment.app.activityViewModels
|
|
|
|
import androidx.fragment.app.activityViewModels
|
|
|
|
import androidx.lifecycle.Lifecycle
|
|
|
|
import androidx.lifecycle.Lifecycle
|
|
|
@ -49,7 +51,7 @@ import kotlinx.coroutines.delay
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import kotlinx.coroutines.withContext
|
|
|
|
import kotlinx.coroutines.withContext
|
|
|
|
import mozilla.appservices.places.BookmarkRoot
|
|
|
|
import mozilla.appservices.places.BookmarkRoot
|
|
|
|
import mozilla.components.browser.menu.BrowserMenu
|
|
|
|
import mozilla.components.browser.menu.ext.getHighlight
|
|
|
|
import mozilla.components.browser.session.Session
|
|
|
|
import mozilla.components.browser.session.Session
|
|
|
|
import mozilla.components.browser.session.SessionManager
|
|
|
|
import mozilla.components.browser.session.SessionManager
|
|
|
|
import mozilla.components.concept.sync.AccountObserver
|
|
|
|
import mozilla.components.concept.sync.AccountObserver
|
|
|
@ -84,6 +86,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder
|
|
|
|
import org.mozilla.fenix.onboarding.FenixOnboarding
|
|
|
|
import org.mozilla.fenix.onboarding.FenixOnboarding
|
|
|
|
import org.mozilla.fenix.settings.SupportUtils
|
|
|
|
import org.mozilla.fenix.settings.SupportUtils
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
|
|
|
|
import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
|
|
|
|
|
|
|
|
import org.mozilla.fenix.theme.ThemeManager
|
|
|
|
import org.mozilla.fenix.utils.FragmentPreDrawManager
|
|
|
|
import org.mozilla.fenix.utils.FragmentPreDrawManager
|
|
|
|
import org.mozilla.fenix.utils.allowUndo
|
|
|
|
import org.mozilla.fenix.utils.allowUndo
|
|
|
|
import org.mozilla.fenix.whatsnew.WhatsNew
|
|
|
|
import org.mozilla.fenix.whatsnew.WhatsNew
|
|
|
@ -118,8 +121,6 @@ class HomeFragment : Fragment() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private var homeMenu: HomeMenu? = null
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private val sessionManager: SessionManager
|
|
|
|
private val sessionManager: SessionManager
|
|
|
|
get() = requireComponents.core.sessionManager
|
|
|
|
get() = requireComponents.core.sessionManager
|
|
|
|
|
|
|
|
|
|
|
@ -234,8 +235,6 @@ class HomeFragment : Fragment() {
|
|
|
|
homeViewModel.layoutManagerState = null
|
|
|
|
homeViewModel.layoutManagerState = null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
setupHomeMenu()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
|
|
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
|
|
|
// This is necessary due to a bug in viewLifecycleOwner. See:
|
|
|
|
// This is necessary due to a bug in viewLifecycleOwner. See:
|
|
|
|
// https://github.com/mozilla-mobile/android-components/blob/master/components/lib/state/src/main/java/mozilla/components/lib/state/ext/Fragment.kt#L32-L56
|
|
|
|
// https://github.com/mozilla-mobile/android-components/blob/master/components/lib/state/src/main/java/mozilla/components/lib/state/ext/Fragment.kt#L32-L56
|
|
|
@ -254,18 +253,18 @@ class HomeFragment : Fragment() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
with(view.menuButton) {
|
|
|
|
with(view.menuButton) {
|
|
|
|
var menu: PopupWindow? = null
|
|
|
|
menuBuilder = createHomeMenu(context!!).menuBuilder
|
|
|
|
setOnClickListener {
|
|
|
|
|
|
|
|
if (menu == null) {
|
|
|
|
val primaryTextColor = ContextCompat.getColor(
|
|
|
|
menu = homeMenu?.menuBuilder?.build(requireContext())?.show(
|
|
|
|
context,
|
|
|
|
anchor = it,
|
|
|
|
ThemeManager.resolveAttribute(R.attr.primaryText, context)
|
|
|
|
orientation = BrowserMenu.Orientation.UP,
|
|
|
|
)
|
|
|
|
onDismiss = { menu = null }
|
|
|
|
|
|
|
|
)
|
|
|
|
setColorFilter(primaryTextColor)
|
|
|
|
} else {
|
|
|
|
|
|
|
|
menu?.dismiss()
|
|
|
|
// Immediately check for `What's new` highlight. If home items that change over time
|
|
|
|
}
|
|
|
|
// are added, this will need to be called repeatedly.
|
|
|
|
}
|
|
|
|
setHighlight(menuBuilder?.items?.getHighlight())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
view.toolbar.compoundDrawablePadding =
|
|
|
|
view.toolbar.compoundDrawablePadding =
|
|
|
|
view.resources.getDimensionPixelSize(R.dimen.search_bar_search_engine_icon_padding)
|
|
|
|
view.resources.getDimensionPixelSize(R.dimen.search_bar_search_engine_icon_padding)
|
|
|
@ -312,11 +311,6 @@ class HomeFragment : Fragment() {
|
|
|
|
bottomBarShadow.bringToFront()
|
|
|
|
bottomBarShadow.bringToFront()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun onDestroyView() {
|
|
|
|
|
|
|
|
homeMenu = null
|
|
|
|
|
|
|
|
super.onDestroyView()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onStart() {
|
|
|
|
override fun onStart() {
|
|
|
|
super.onStart()
|
|
|
|
super.onStart()
|
|
|
|
subscribeToTabCollections()
|
|
|
|
subscribeToTabCollections()
|
|
|
@ -499,9 +493,8 @@ class HomeFragment : Fragment() {
|
|
|
|
tabs = getListOfSessions().toTabs()))
|
|
|
|
tabs = getListOfSessions().toTabs()))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun setupHomeMenu() {
|
|
|
|
private fun createHomeMenu(context: Context): HomeMenu {
|
|
|
|
val context = requireContext()
|
|
|
|
return HomeMenu(context) {
|
|
|
|
homeMenu = HomeMenu(context) {
|
|
|
|
|
|
|
|
when (it) {
|
|
|
|
when (it) {
|
|
|
|
HomeMenu.Item.Settings -> {
|
|
|
|
HomeMenu.Item.Settings -> {
|
|
|
|
invokePendingDeleteJobs()
|
|
|
|
invokePendingDeleteJobs()
|
|
|
|