Skip to content

Commit 4d57d8b

Browse files
committed
Add new layout type menu items
1 parent 7da90cb commit 4d57d8b

File tree

5 files changed

+65
-13
lines changed

5 files changed

+65
-13
lines changed

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,8 @@ class TabSwitcherActivity : DuckDuckGoActivity(), TabSwitcherListener, Coroutine
668668

669669
private fun initMenuClickListeners() {
670670
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.newTabMenuItem)) { onNewTabRequested(fromOverflowMenu = true) }
671+
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.gridLayoutMenuItem)) { viewModel.onGridLayoutSelected() }
672+
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.listLayoutMenuItem)) { viewModel.onListLayoutSelected() }
671673
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.selectAllMenuItem)) { viewModel.onSelectAllTabs() }
672674
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.deselectAllMenuItem)) { viewModel.onDeselectAllTabs() }
673675
popupMenu.onMenuItemClicked(popupMenu.contentView.findViewById(R.id.shareSelectedLinksMenuItem)) { viewModel.onShareSelectedTabs() }

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherMenuExt.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,34 @@ fun Menu.createDynamicInterface(
6666
setPrimaryText(resources.getQuantityString(R.plurals.closeTabsMenuItem, numSelectedTabs, numSelectedTabs))
6767
}
6868

69+
popupMenu.gridLayoutMenuItem.apply {
70+
when (dynamicMenu.layoutMenuMode) {
71+
GRID -> {
72+
setTrailingIconVisibility(false)
73+
isVisible = true
74+
}
75+
LIST -> {
76+
setTrailingIconVisibility(true)
77+
isVisible = true
78+
}
79+
HIDDEN -> isVisible = false
80+
}
81+
}
82+
83+
popupMenu.listLayoutMenuItem.apply {
84+
when (dynamicMenu.layoutMenuMode) {
85+
GRID -> {
86+
setTrailingIconVisibility(true)
87+
isVisible = true
88+
}
89+
LIST -> {
90+
setTrailingIconVisibility(false)
91+
isVisible = true
92+
}
93+
HIDDEN -> isVisible = false
94+
}
95+
}
96+
6997
mainFab.apply {
7098
if (dynamicMenu.isMainFabVisible) {
7199
when (dynamicMenu.mainFabType) {

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -530,19 +530,27 @@ class TabSwitcherViewModel @Inject constructor(
530530
}
531531

532532
fun onLayoutTypeToggled() {
533-
viewModelScope.launch(dispatcherProvider.io()) {
534-
when (layoutType.value) {
535-
GRID -> {
536-
pixel.fire(TAB_MANAGER_LIST_VIEW_BUTTON_CLICKED)
537-
tabRepository.setTabLayoutType(LIST)
538-
}
533+
when (layoutType.value) {
534+
GRID -> onListLayoutSelected()
535+
LIST -> onGridLayoutSelected()
536+
else -> Unit
537+
}
538+
}
539539

540-
LIST -> {
541-
pixel.fire(TAB_MANAGER_GRID_VIEW_BUTTON_CLICKED)
542-
tabRepository.setTabLayoutType(GRID)
543-
}
540+
fun onListLayoutSelected() {
541+
viewModelScope.launch(dispatcherProvider.io()) {
542+
if (layoutType.value != LIST) {
543+
pixel.fire(TAB_MANAGER_LIST_VIEW_BUTTON_CLICKED)
544+
tabRepository.setTabLayoutType(LIST)
545+
}
546+
}
547+
}
544548

545-
else -> Unit
549+
fun onGridLayoutSelected() {
550+
viewModelScope.launch(dispatcherProvider.io()) {
551+
if (layoutType.value != GRID) {
552+
pixel.fire(TAB_MANAGER_GRID_VIEW_BUTTON_CLICKED)
553+
tabRepository.setTabLayoutType(GRID)
546554
}
547555
}
548556
}

app/src/main/res/layout/popup_tabs_menu.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,20 @@
2727
android:layout_height="wrap_content"
2828
app:primaryText="@string/newTabMenuItem" />
2929

30+
<com.duckduckgo.common.ui.view.PopupMenuItemView
31+
android:id="@+id/gridLayoutMenuItem"
32+
android:layout_width="match_parent"
33+
android:layout_height="wrap_content"
34+
app:trailingIcon="@drawable/ic_check_24"
35+
app:primaryText="@string/tabSwitcherGridViewMenu" />
36+
37+
<com.duckduckgo.common.ui.view.PopupMenuItemView
38+
android:id="@+id/listLayoutMenuItem"
39+
android:layout_width="match_parent"
40+
android:layout_height="wrap_content"
41+
app:trailingIcon="@drawable/ic_check_24"
42+
app:primaryText="@string/tabSwitcherListViewMenu" />
43+
3044
<com.duckduckgo.common.ui.view.PopupMenuItemView
3145
android:id="@+id/selectAllMenuItem"
3246
android:layout_width="match_parent"

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@
114114
<string name="tabClosed">Tab closed</string>
115115
<string name="tabClosedUndo">Undo</string>
116116
<string name="downloadsMenuItemTitle">Downloads</string>
117-
<string name="tabSwitcherListViewMenu">List view</string>
118-
<string name="tabSwitcherGridViewMenu">Grid view</string>
117+
<string name="tabSwitcherListViewMenu">List View</string>
118+
<string name="tabSwitcherGridViewMenu">Grid View</string>
119119

120120
<!--Tab Switcher Animation-->
121121
<string name="trackersBlockedInTheLast7days" instruction="Placeholder is the number of trackers blocked > 1">&lt;b&gt;%1$s trackers blocked &lt;/b&gt; in the last 7 days</string>

0 commit comments

Comments
 (0)