Skip to content

Commit d74f162

Browse files
Merge pull request nextcloud#16284 from nextcloud/fix/drawer-item-highlight
fix(navigation): item highlight, content displaying
2 parents 1b1d9c2 + 1b58ba0 commit d74f162

20 files changed

Lines changed: 359 additions & 216 deletions

app/src/main/java/com/nextcloud/ui/composeActivity/ComposeActivity.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,16 @@ class ComposeActivity : DrawerActivity() {
8080
composeViewModel.updateSelectedText(text.toString())
8181
}
8282

83+
override fun getMenuItemId(): Int = R.id.nav_assistant
84+
85+
override fun onResume() {
86+
super.onResume()
87+
highlightNavigationViewItem(menuItemId)
88+
}
89+
8390
private fun setupActivityUIFor(destination: ComposeDestination) {
8491
if (destination is ComposeDestination.AssistantScreen) {
85-
setupDrawer()
92+
setupDrawer(menuItemId)
8693
setupToolbarShowOnlyMenuButtonAndTitle(destination.title) {
8794
openDrawer()
8895
}

app/src/main/java/com/nextcloud/utils/extensions/DrawerActivityExtensions.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ import com.owncloud.android.R
1313
import com.owncloud.android.ui.activity.DrawerActivity
1414
import com.owncloud.android.ui.activity.FileDisplayActivity
1515

16-
fun DrawerActivity.navigateToAllFiles() {
17-
DrawerActivity.menuItemId = R.id.nav_all_files
18-
setNavigationViewItemChecked()
19-
16+
@JvmOverloads
17+
fun DrawerActivity.navigateToAllFiles(onlyPersonal: Boolean = false) {
2018
MainApp.showOnlyFilesOnDevice(false)
21-
MainApp.showOnlyPersonalFiles(false)
19+
MainApp.showOnlyPersonalFiles(onlyPersonal)
20+
highlightNavigationViewItem(R.id.nav_all_files)
21+
setupHomeSearchToolbarWithSortAndListButtons()
2222

2323
Intent(applicationContext, FileDisplayActivity::class.java).apply {
2424
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Nextcloud - Android Client
3+
*
4+
* SPDX-FileCopyrightText: 2026 Alper Ozturk <alper.ozturk@nextcloud.com>
5+
* SPDX-License-Identifier: AGPL-3.0-or-later
6+
*/
7+
8+
package com.nextcloud.utils.extensions
9+
10+
import android.view.Menu
11+
import androidx.core.view.forEach
12+
import com.google.android.material.bottomnavigation.BottomNavigationView
13+
import com.google.android.material.navigation.NavigationView
14+
15+
fun NavigationView.getSelectedMenuItemId(): Int {
16+
menu.forEach {
17+
if (it.isChecked) {
18+
return it.itemId
19+
}
20+
}
21+
return Menu.NONE
22+
}
23+
24+
fun NavigationView.unsetAllNavigationItems() {
25+
uncheckMenu(menu)
26+
}
27+
28+
fun BottomNavigationView.unsetAllNavigationItems() {
29+
uncheckMenu(menu)
30+
}
31+
32+
private fun uncheckMenu(menu: Menu) {
33+
menu.forEach { item ->
34+
item.isChecked = false
35+
36+
// recursively uncheck submenu items
37+
item.subMenu?.let { uncheckMenu(it) }
38+
}
39+
}

app/src/main/java/com/owncloud/android/MainApp.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,18 @@ public static boolean isOnlyPersonFiles() {
803803
return mOnlyPersonalFiles;
804804
}
805805

806+
public static Integer getMenuItemId() {
807+
if (MainApp.isOnlyPersonFiles()) {
808+
return R.id.nav_personal_files;
809+
}
810+
811+
if (MainApp.isOnlyOnDevice()) {
812+
return R.id.nav_on_device;
813+
}
814+
815+
return null;
816+
}
817+
806818
public static String getUserAgent() {
807819
// Mozilla/5.0 (Android) Nextcloud-android/2.1.0
808820
return getUserAgent(R.string.nextcloud_user_agent);

app/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ protected void onCreate(Bundle savedInstanceState) {
7777
viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeContainingList);
7878

7979
// setup drawer
80-
setupDrawer();
80+
setupDrawer(getMenuItemId());
8181
updateActionBarTitleAndHomeButtonByString(getString(R.string.drawer_item_activities));
8282

8383
binding.swipeContainingList.setOnRefreshListener(() -> {
@@ -88,6 +88,11 @@ protected void onCreate(Bundle savedInstanceState) {
8888
});
8989
}
9090

91+
@Override
92+
protected int getMenuItemId() {
93+
return R.id.nav_activity;
94+
}
95+
9196
@VisibleForTesting
9297
public ActivityListLayoutBinding getBinding() {
9398
return binding;
@@ -153,6 +158,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
153158
@Override
154159
protected void onResume() {
155160
super.onResume();
161+
highlightNavigationViewItem(getMenuItemId());
156162
actionListener.onResume();
157163
setupContent();
158164
}

app/src/main/java/com/owncloud/android/ui/activity/CommunityActivity.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ open class CommunityActivity : DrawerActivity() {
3030

3131
setupToolbar()
3232
updateActionBarTitleAndHomeButtonByString(getString(R.string.drawer_community))
33-
setupDrawer()
33+
setupDrawer(menuItemId)
3434
binding.communityReleaseCandidateText.movementMethod = LinkMovementMethod.getInstance()
3535
setupContributeForumView()
3636
setupContributeTranslationView()
@@ -39,6 +39,13 @@ open class CommunityActivity : DrawerActivity() {
3939
setOnClickListeners()
4040
}
4141

42+
override fun getMenuItemId(): Int = R.id.nav_community
43+
44+
override fun onResume() {
45+
super.onResume()
46+
highlightNavigationViewItem(menuItemId)
47+
}
48+
4249
private fun setupContributeForumView() {
4350
val htmlContent = getString(R.string.community_contribute_forum_text) + " " +
4451
getString(

0 commit comments

Comments
 (0)