From b07cca01d7db2299e55d6a5382294d2eca44038f Mon Sep 17 00:00:00 2001 From: Yeon Taek Jeong Date: Fri, 16 Aug 2019 14:58:54 -0700 Subject: [PATCH] For #2834: Delete all Private Tabs redesign --- .../components/toolbar/ToolbarIntegration.kt | 26 +++++++++++++++++++ .../org/mozilla/fenix/home/HomeFragment.kt | 10 +++++++ .../layout/private_browsing_description.xml | 7 ----- app/src/main/res/navigation/nav_graph.xml | 4 +++ 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt index 18f2e7c29986..9b7c9998ba7a 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt @@ -5,7 +5,9 @@ package org.mozilla.fenix.components.toolbar import android.content.Context +import android.graphics.PorterDuff import android.view.ViewGroup +import androidx.core.content.ContextCompat import androidx.navigation.NavOptions import androidx.navigation.Navigation import androidx.navigation.fragment.FragmentNavigator @@ -22,6 +24,7 @@ import mozilla.components.support.base.feature.LifecycleAwareFeature import mozilla.components.support.ktx.android.view.hideKeyboard import org.mozilla.fenix.R import org.mozilla.fenix.ThemeManager +import org.mozilla.fenix.browser.BrowserFragmentDirections import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.nav import org.mozilla.fenix.utils.Settings @@ -53,6 +56,29 @@ class ToolbarIntegration( return@run } + if (isPrivate) { + val deleteIcon = context.getDrawable(R.drawable.ic_delete) + deleteIcon?.setColorFilter( + ContextCompat.getColor( + context, + ThemeManager.resolveAttribute(R.attr.primaryText, context) + ), PorterDuff.Mode.SRC_IN + ) + deleteIcon?.let { + val deleteSessions = BrowserToolbar.Button( + deleteIcon, + context.getString(R.string.private_browsing_delete_session), + listener = { + Navigation.findNavController(toolbar) + .navigate(BrowserFragmentDirections.actionBrowserFragmentToHomeFragment( + closeAllPrivateTabs = true + )) + } + ) + toolbar.addNavigationAction(deleteSessions) + } + } + val tabsAction = TabCounterToolbarButton( sessionManager, { 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 994237ebab15..10b71913f871 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -305,6 +305,16 @@ class HomeFragment : Fragment(), AccountObserver { (activity as AppCompatActivity).supportActionBar?.hide() requireComponents.backgroundServices.accountManager.register(this, owner = this) + + val closeAllPrivateTabs = arguments + ?.let(HomeFragmentArgs.Companion::fromBundle) + ?.let { it.closeAllPrivateTabs } ?: false + + arguments = null + + if (closeAllPrivateTabs) { + handleTabAction(TabAction.CloseAll(true)) + } } override fun onStart() { diff --git a/app/src/main/res/layout/private_browsing_description.xml b/app/src/main/res/layout/private_browsing_description.xml index bab1c1db6b72..8eab61edb9a8 100644 --- a/app/src/main/res/layout/private_browsing_description.xml +++ b/app/src/main/res/layout/private_browsing_description.xml @@ -9,13 +9,6 @@ android:layout_height="wrap_content" android:layout_margin="16dp" android:orientation="vertical"> - +