Issue #21671: Remove Recently Closed from Inactive Tabs
This commit is contained in:
parent
16a3b92d34
commit
b8946f807a
|
@ -12,7 +12,6 @@ import mozilla.components.browser.toolbar.MAX_URI_LENGTH
|
||||||
import mozilla.components.concept.tabstray.Tab
|
import mozilla.components.concept.tabstray.Tab
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.databinding.InactiveFooterItemBinding
|
import org.mozilla.fenix.databinding.InactiveFooterItemBinding
|
||||||
import org.mozilla.fenix.databinding.InactiveRecentlyClosedItemBinding
|
|
||||||
import org.mozilla.fenix.databinding.InactiveHeaderItemBinding
|
import org.mozilla.fenix.databinding.InactiveHeaderItemBinding
|
||||||
import org.mozilla.fenix.databinding.InactiveTabListItemBinding
|
import org.mozilla.fenix.databinding.InactiveTabListItemBinding
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
|
@ -106,28 +105,6 @@ sealed class InactiveTabViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class RecentlyClosedHolder(
|
|
||||||
itemView: View,
|
|
||||||
private val browserTrayInteractor: BrowserTrayInteractor,
|
|
||||||
) : InactiveTabViewHolder(itemView) {
|
|
||||||
|
|
||||||
val binding = InactiveRecentlyClosedItemBinding.bind(itemView)
|
|
||||||
|
|
||||||
fun bind() {
|
|
||||||
val context = itemView.context
|
|
||||||
binding.inactiveRecentlyClosedText.text =
|
|
||||||
context.getString(R.string.tab_tray_inactive_recently_closed)
|
|
||||||
|
|
||||||
binding.inactiveRecentlyClosed.setOnClickListener {
|
|
||||||
browserTrayInteractor.onRecentlyClosedClicked()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
const val LAYOUT_ID = R.layout.inactive_recently_closed_item
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class FooterHolder(itemView: View) : InactiveTabViewHolder(itemView) {
|
class FooterHolder(itemView: View) : InactiveTabViewHolder(itemView) {
|
||||||
|
|
||||||
val binding = InactiveFooterItemBinding.bind(itemView)
|
val binding = InactiveFooterItemBinding.bind(itemView)
|
||||||
|
|
|
@ -17,7 +17,6 @@ import org.mozilla.fenix.components.Components
|
||||||
import org.mozilla.fenix.tabstray.TabsTrayInteractor
|
import org.mozilla.fenix.tabstray.TabsTrayInteractor
|
||||||
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.FooterHolder
|
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.FooterHolder
|
||||||
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.HeaderHolder
|
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.HeaderHolder
|
||||||
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.RecentlyClosedHolder
|
|
||||||
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.TabViewHolder
|
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.TabViewHolder
|
||||||
import org.mozilla.fenix.tabstray.ext.autoCloseInterval
|
import org.mozilla.fenix.tabstray.ext.autoCloseInterval
|
||||||
import mozilla.components.support.base.observer.Observable as ComponentObservable
|
import mozilla.components.support.base.observer.Observable as ComponentObservable
|
||||||
|
@ -58,7 +57,6 @@ class InactiveTabsAdapter(
|
||||||
HeaderHolder.LAYOUT_ID -> HeaderHolder(view, inactiveTabsInteractor, tabsTrayInteractor)
|
HeaderHolder.LAYOUT_ID -> HeaderHolder(view, inactiveTabsInteractor, tabsTrayInteractor)
|
||||||
TabViewHolder.LAYOUT_ID -> TabViewHolder(view, browserTrayInteractor, featureName)
|
TabViewHolder.LAYOUT_ID -> TabViewHolder(view, browserTrayInteractor, featureName)
|
||||||
FooterHolder.LAYOUT_ID -> FooterHolder(view)
|
FooterHolder.LAYOUT_ID -> FooterHolder(view)
|
||||||
RecentlyClosedHolder.LAYOUT_ID -> RecentlyClosedHolder(view, browserTrayInteractor)
|
|
||||||
else -> throw IllegalStateException("Unknown viewType: $viewType")
|
else -> throw IllegalStateException("Unknown viewType: $viewType")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,16 +74,12 @@ class InactiveTabsAdapter(
|
||||||
is HeaderHolder -> {
|
is HeaderHolder -> {
|
||||||
// do nothing.
|
// do nothing.
|
||||||
}
|
}
|
||||||
is RecentlyClosedHolder -> {
|
|
||||||
holder.bind()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemViewType(position: Int): Int {
|
override fun getItemViewType(position: Int): Int {
|
||||||
return when (position) {
|
return when (position) {
|
||||||
0 -> HeaderHolder.LAYOUT_ID
|
0 -> HeaderHolder.LAYOUT_ID
|
||||||
itemCount - 2 -> RecentlyClosedHolder.LAYOUT_ID
|
|
||||||
itemCount - 1 -> FooterHolder.LAYOUT_ID
|
itemCount - 1 -> FooterHolder.LAYOUT_ID
|
||||||
else -> TabViewHolder.LAYOUT_ID
|
else -> TabViewHolder.LAYOUT_ID
|
||||||
}
|
}
|
||||||
|
@ -107,7 +101,7 @@ class InactiveTabsAdapter(
|
||||||
val items = tabs.list.map { Item.Tab(it) }
|
val items = tabs.list.map { Item.Tab(it) }
|
||||||
val footer = Item.Footer(context.autoCloseInterval)
|
val footer = Item.Footer(context.autoCloseInterval)
|
||||||
|
|
||||||
submitList(listOf(Item.Header) + items + listOf(Item.RecentlyClosed, footer))
|
submitList(listOf(Item.Header) + items + listOf(footer))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isTabSelected(tabs: Tabs, position: Int): Boolean = false
|
override fun isTabSelected(tabs: Tabs, position: Int): Boolean = false
|
||||||
|
@ -146,11 +140,6 @@ class InactiveTabsAdapter(
|
||||||
*/
|
*/
|
||||||
data class Tab(val tab: TabsTrayTab) : Item()
|
data class Tab(val tab: TabsTrayTab) : Item()
|
||||||
|
|
||||||
/**
|
|
||||||
* A button that leads to the Recently Closed section in History.
|
|
||||||
*/
|
|
||||||
object RecentlyClosed : Item()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A footer for the inactive tab section. This may be seen only
|
* A footer for the inactive tab section. This may be seen only
|
||||||
* when at least one inactive tab is present.
|
* when at least one inactive tab is present.
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?><!-- 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/. -->
|
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:background="@color/photonLightGrey30"
|
|
||||||
android:importantForAccessibility="no"
|
|
||||||
android:paddingStart="1dp"
|
|
||||||
android:paddingEnd="1dp">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:id="@+id/inactive_recently_closed"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="?above"
|
|
||||||
android:foreground="?android:attr/selectableItemBackground"
|
|
||||||
android:minHeight="@dimen/mozac_widget_site_item_height">
|
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/inactive_recently_closed_text"
|
|
||||||
style="@style/Mozac.Widgets.SiteItem.Label"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:importantForAccessibility="no"
|
|
||||||
android:text="@string/tab_tray_inactive_recently_closed"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/arrowhead_right"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="RecentlyClosed" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/arrowhead_right"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="12dp"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
android:importantForAccessibility="no"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:srcCompat="@drawable/ic_arrowhead_right" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
|
@ -748,7 +748,7 @@
|
||||||
<!-- Text shown in the menu to view recently closed tabs -->
|
<!-- Text shown in the menu to view recently closed tabs -->
|
||||||
<string name="tab_tray_menu_recently_closed">Recently closed tabs</string>
|
<string name="tab_tray_menu_recently_closed">Recently closed tabs</string>
|
||||||
<!-- Text shown in the tabs tray inactive tabs section -->
|
<!-- Text shown in the tabs tray inactive tabs section -->
|
||||||
<string name="tab_tray_inactive_recently_closed">Recently closed</string>
|
<string name="tab_tray_inactive_recently_closed" tools:ignore="UnusedResources">Recently closed</string>
|
||||||
<!-- Text shown in the menu to view account settings -->
|
<!-- Text shown in the menu to view account settings -->
|
||||||
<string name="tab_tray_menu_account_settings">Account settings</string>
|
<string name="tab_tray_menu_account_settings">Account settings</string>
|
||||||
<!-- Text shown in the menu to view tab settings -->
|
<!-- Text shown in the menu to view tab settings -->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user