diff --git a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt
index a82a48900904..68c4ab65594c 100644
--- a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt
+++ b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt
@@ -668,6 +668,8 @@ class TabSwitcherActivity : DuckDuckGoActivity(), TabSwitcherListener, Coroutine
private fun initMenuClickListeners() {
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.newTabMenuItem)) { onNewTabRequested(fromOverflowMenu = true) }
+ popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.gridLayoutMenuItem)) { viewModel.onGridLayoutSelected() }
+ popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.listLayoutMenuItem)) { viewModel.onListLayoutSelected() }
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.selectAllMenuItem)) { viewModel.onSelectAllTabs() }
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.deselectAllMenuItem)) { viewModel.onDeselectAllTabs() }
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.shareSelectedLinksMenuItem)) { viewModel.onShareSelectedTabs() }
diff --git a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherMenuExt.kt b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherMenuExt.kt
index b3844fe8075e..75b7f80ea268 100644
--- a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherMenuExt.kt
+++ b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherMenuExt.kt
@@ -66,6 +66,34 @@ fun Menu.createDynamicInterface(
setPrimaryText(resources.getQuantityString(R.plurals.closeTabsMenuItem, numSelectedTabs, numSelectedTabs))
}
+ popupMenu.gridLayoutMenuItem.apply {
+ when (dynamicMenu.layoutMenuMode) {
+ GRID -> {
+ setTrailingIconVisibility(false)
+ isVisible = true
+ }
+ LIST -> {
+ setTrailingIconVisibility(true)
+ isVisible = true
+ }
+ HIDDEN -> isVisible = false
+ }
+ }
+
+ popupMenu.listLayoutMenuItem.apply {
+ when (dynamicMenu.layoutMenuMode) {
+ GRID -> {
+ setTrailingIconVisibility(true)
+ isVisible = true
+ }
+ LIST -> {
+ setTrailingIconVisibility(false)
+ isVisible = true
+ }
+ HIDDEN -> isVisible = false
+ }
+ }
+
mainFab.apply {
if (dynamicMenu.isMainFabVisible) {
when (dynamicMenu.mainFabType) {
diff --git a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt
index 73c7cfe1b49c..05cc29bf23ae 100644
--- a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt
+++ b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt
@@ -530,19 +530,27 @@ class TabSwitcherViewModel @Inject constructor(
}
fun onLayoutTypeToggled() {
- viewModelScope.launch(dispatcherProvider.io()) {
- when (layoutType.value) {
- GRID -> {
- pixel.fire(TAB_MANAGER_LIST_VIEW_BUTTON_CLICKED)
- tabRepository.setTabLayoutType(LIST)
- }
+ when (layoutType.value) {
+ GRID -> onListLayoutSelected()
+ LIST -> onGridLayoutSelected()
+ else -> Unit
+ }
+ }
- LIST -> {
- pixel.fire(TAB_MANAGER_GRID_VIEW_BUTTON_CLICKED)
- tabRepository.setTabLayoutType(GRID)
- }
+ fun onListLayoutSelected() {
+ viewModelScope.launch(dispatcherProvider.io()) {
+ if (layoutType.value != LIST) {
+ pixel.fire(TAB_MANAGER_LIST_VIEW_BUTTON_CLICKED)
+ tabRepository.setTabLayoutType(LIST)
+ }
+ }
+ }
- else -> Unit
+ fun onGridLayoutSelected() {
+ viewModelScope.launch(dispatcherProvider.io()) {
+ if (layoutType.value != GRID) {
+ pixel.fire(TAB_MANAGER_GRID_VIEW_BUTTON_CLICKED)
+ tabRepository.setTabLayoutType(GRID)
}
}
}
diff --git a/app/src/main/res/layout/popup_tabs_menu.xml b/app/src/main/res/layout/popup_tabs_menu.xml
index 3f47f8d4553a..ac48b178b2a5 100644
--- a/app/src/main/res/layout/popup_tabs_menu.xml
+++ b/app/src/main/res/layout/popup_tabs_menu.xml
@@ -27,6 +27,20 @@
android:layout_height="wrap_content"
app:primaryText="@string/newTabMenuItem" />
+
+
+
+
Tab closed
Undo
Downloads
- List view
- Grid view
+ List View
+ Grid View
<b>%1$s trackers blocked </b> in the last 7 days