From db3a2d0c925982b282cb68bddbe1c7dee5caa046 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 4 Jan 2023 23:47:57 +0100 Subject: [PATCH] use the Search menu as the top bar --- .../pro/activities/MainActivity.kt | 89 ++++++------------- .../pro/activities/MimeTypesActivity.kt | 9 -- app/src/main/res/layout/activity_main.xml | 9 +- .../main/res/layout/activity_mimetypes.xml | 2 +- app/src/main/res/menu/menu.xml | 6 -- app/src/main/res/menu/menu_mimetypes.xml | 47 ++++++++++ 6 files changed, 80 insertions(+), 82 deletions(-) create mode 100644 app/src/main/res/menu/menu_mimetypes.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MainActivity.kt index 31ca648d..9c248879 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MainActivity.kt @@ -2,9 +2,7 @@ package com.simplemobiletools.filemanager.pro.activities import android.annotation.SuppressLint import android.app.Activity -import android.app.SearchManager import android.content.ClipData -import android.content.Context import android.content.Intent import android.graphics.drawable.Drawable import android.media.RingtoneManager @@ -13,12 +11,8 @@ import android.os.Bundle import android.os.Environment import android.os.Handler import android.provider.Settings -import android.view.Menu -import android.view.MenuItem import android.widget.ImageView import android.widget.TextView -import androidx.appcompat.widget.SearchView -import androidx.core.view.MenuItemCompat import androidx.viewpager.widget.ViewPager import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog @@ -54,12 +48,10 @@ class MainActivity : SimpleActivity() { private val BACK_PRESS_TIMEOUT = 5000 private val MANAGE_STORAGE_RC = 201 private val PICKED_PATH = "picked_path" - private var isSearchOpen = false private var wasBackJustPressed = false private var mIsPasswordProtectionPending = false private var mWasProtectionHandled = false private var mTabsToShow = ArrayList() - private var mSearchMenuItem: MenuItem? = null private var mStoredFontSize = 0 private var mStoredDateFormat = "" @@ -86,7 +78,6 @@ class MainActivity : SimpleActivity() { setupTabs() updateMaterialActivityViews(main_coordinator, null, useTransparentNavigation = false, useTopSearchMenu = true) - setupMaterialScrollListener(null, main_toolbar) mIsPasswordProtectionPending = config.isAppPasswordProtectionOn @@ -116,6 +107,7 @@ class MainActivity : SimpleActivity() { } refreshMenuItems() + updateMenuColors() setupTabColors() getAllFragments().forEach { @@ -156,7 +148,7 @@ class MainActivity : SimpleActivity() { val currentViewType = config.getFolderViewType(currentFragment.currentPath) val favorites = config.favorites - main_toolbar.menu.apply { + main_menu.getToolbar().menu.apply { findItem(R.id.sort).isVisible = currentFragment is ItemsFragment findItem(R.id.change_view_type).isVisible = currentFragment !is StorageFragment @@ -182,8 +174,25 @@ class MainActivity : SimpleActivity() { } private fun setupOptionsMenu() { - setupSearch(main_toolbar.menu) - main_toolbar.setOnMenuItemClickListener { menuItem -> + main_menu.getToolbar().inflateMenu(R.menu.menu) + main_menu.toggleHideOnScroll(false) + main_menu.setupMenu() + + main_menu.onSearchOpenListener = { + (getCurrentFragment() as? ItemsFragment)?.searchOpened() + } + + main_menu.onSearchClosedListener = { + getAllFragments().forEach { + (it as? ItemOperationsListener)?.searchQueryChanged("") + } + } + + main_menu.onSearchTextChangedListener = { text -> + (getCurrentFragment() as? ItemOperationsListener)?.searchQueryChanged(text) + } + + main_menu.getToolbar().setOnMenuItemClickListener { menuItem -> if (getCurrentFragment() == null) { return@setOnMenuItemClickListener true } @@ -255,38 +264,9 @@ class MainActivity : SimpleActivity() { } } - private fun setupSearch(menu: Menu) { - val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager - mSearchMenuItem = menu.findItem(R.id.search) - (mSearchMenuItem!!.actionView as SearchView).apply { - setSearchableInfo(searchManager.getSearchableInfo(componentName)) - isSubmitButtonEnabled = false - queryHint = getString(R.string.search) - setOnQueryTextListener(object : SearchView.OnQueryTextListener { - override fun onQueryTextSubmit(query: String) = false - - override fun onQueryTextChange(newText: String): Boolean { - if (isSearchOpen) { - (getCurrentFragment() as? ItemOperationsListener)?.searchQueryChanged(newText) - } - return true - } - }) - } - - MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener { - override fun onMenuItemActionExpand(item: MenuItem?): Boolean { - isSearchOpen = true - (getCurrentFragment() as? ItemsFragment)?.searchOpened() - return true - } - - override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { - isSearchOpen = false - (getCurrentFragment() as? ItemsFragment)?.searchClosed() - return true - } - }) + private fun updateMenuColors() { + updateStatusbarColor(getProperBackgroundColor()) + main_menu.updateColors() } private fun storeStateVariables() { @@ -462,7 +442,7 @@ class MainActivity : SimpleActivity() { updateBottomTabItemColors(it.customView, false, getDeselectedTabDrawableIds()[it.position]) }, tabSelectedAction = { - closeSearch() + main_menu.closeSearch() main_view_pager.currentItem = it.position updateBottomTabItemColors(it.customView, true, getSelectedTabDrawableIds()[it.position]) } @@ -516,15 +496,6 @@ class MainActivity : SimpleActivity() { } } - private fun closeSearch() { - if (isSearchOpen) { - getAllFragments().forEach { - (it as? ItemOperationsListener)?.searchQueryChanged("") - } - mSearchMenuItem?.collapseActionView() - } - } - private fun openPath(path: String, forceRefresh: Boolean = false) { if (mIsPasswordProtectionPending && !mWasProtectionHandled) { return @@ -632,12 +603,10 @@ class MainActivity : SimpleActivity() { private fun launchSettings() { hideKeyboard() - closeSearch() startActivity(Intent(applicationContext, SettingsActivity::class.java)) } private fun launchAbout() { - closeSearch() val licenses = LICENSE_GLIDE or LICENSE_PATTERN or LICENSE_REPRINT or LICENSE_GESTURE_VIEWS or LICENSE_PDF_VIEW_PAGER or LICENSE_AUTOFITTEXTVIEW val faqItems = arrayListOf( @@ -661,8 +630,8 @@ class MainActivity : SimpleActivity() { return } - if (isSearchOpen && mSearchMenuItem != null) { - mSearchMenuItem!!.collapseActionView() + if (main_menu.isSearchOpen) { + main_menu.closeSearch() } else if (getCurrentFragment()!!.breadcrumbs.getItemCount() <= 1) { if (!wasBackJustPressed && config.pressBackTwice) { wasBackJustPressed = true @@ -761,8 +730,8 @@ class MainActivity : SimpleActivity() { } fun openedDirectory() { - if (mSearchMenuItem != null) { - MenuItemCompat.collapseActionView(mSearchMenuItem) + if (main_menu.isSearchOpen) { + main_menu.closeSearch() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt index d5fe92b2..e4fcd156 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt @@ -80,16 +80,7 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener { val currentViewType = config.getFolderViewType(currentMimeType) mimetypes_toolbar.menu.apply { - findItem(R.id.add_favorite).isVisible = false - findItem(R.id.remove_favorite).isVisible = false - findItem(R.id.go_to_favorite).isVisible = false - findItem(R.id.toggle_filename).isVisible = currentViewType == VIEW_TYPE_GRID - findItem(R.id.go_home).isVisible = false - findItem(R.id.set_as_home).isVisible = false - findItem(R.id.more_apps_from_us).isVisible = false - findItem(R.id.settings).isVisible = false - findItem(R.id.about).isVisible = false findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden findItem(R.id.stop_showing_hidden).isVisible = config.temporarilyShowHidden diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 607ba061..c2b302db 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,13 +5,10 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + android:layout_height="wrap_content" /> - + + + + + + + + + +