Use getMenuItemIdFromTitle

Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
alperozturk 2024-09-04 14:02:54 +02:00 committed by Alper Öztürk
parent 1543685b5c
commit cb0e8baf60
2 changed files with 49 additions and 0 deletions

View file

@ -0,0 +1,43 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.nextcloud.utils.extensions
import com.owncloud.android.R
import com.owncloud.android.ui.activity.DrawerActivity
/**
* Determines the appropriate menu item ID based on the current ActionBar title.
*
* This function serves as a workaround solution because not all drawer menu item
* navigations extend from DrawerActivity. As a result, the content and highlighted
* menu item may not always match. This function helps maintain consistency between
* the displayed content and the highlighted menu item.
*
* @return The menu item ID corresponding to the current ActionBar title, or null if
* the ActionBar is not available.
*/
fun DrawerActivity.getMenuItemIdFromTitle(): Int? {
val actionBar = supportActionBar ?: return null
return when (actionBar.title) {
getString(R.string.drawer_item_all_files) -> R.id.nav_all_files
getString(R.string.drawer_item_personal_files) -> R.id.nav_personal_files
getString(R.string.drawer_item_activities) -> R.id.nav_activity
getString(R.string.drawer_item_favorites) -> R.id.nav_favorites
getString(R.string.drawer_item_gallery) -> R.id.nav_gallery
getString(R.string.drawer_item_shared) -> R.id.nav_shared
getString(R.string.drawer_item_groupfolders) -> R.id.nav_groupfolders
getString(R.string.drawer_item_on_device) -> R.id.nav_on_device
getString(R.string.drawer_item_recently_modified) -> R.id.nav_recently_modified
getString(R.string.drawer_item_notifications) -> R.id.nav_notifications
getString(R.string.drawer_item_assistant) -> R.id.nav_assistant
getString(R.string.drawer_item_uploads_list) -> R.id.nav_uploads
getString(R.string.drawer_item_trashbin) -> R.id.nav_trashbin
else -> DrawerActivity.menuItemId
}
}

View file

@ -127,6 +127,8 @@ import androidx.fragment.app.Fragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import hct.Hct;
import static com.nextcloud.utils.extensions.DrawerActivityExtensionsKt.getMenuItemIdFromTitle;
/**
* Base class to handle setup of the drawer implementation including user switching and avatar fetching and fallback
* generation.
@ -238,6 +240,10 @@ public abstract class DrawerActivity extends ToolbarActivity
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
if (slideOffset > 0) {
Integer menuItemIdFromTitle = getMenuItemIdFromTitle(DrawerActivity.this);
if (menuItemIdFromTitle != null && menuItemIdFromTitle != menuItemId) {
menuItemId = menuItemIdFromTitle;
}
setDrawerMenuItemChecked();
}
}