use the Search menu as the top bar

This commit is contained in:
tibbi
2023-01-04 23:47:57 +01:00
parent 6d84d81206
commit db3a2d0c92
6 changed files with 80 additions and 82 deletions

View File

@ -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<Int>()
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()
}
}

View File

@ -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

View File

@ -5,13 +5,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/main_toolbar"
<com.simplemobiletools.commons.views.MySearchMenu
android:id="@+id/main_menu"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/menu"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
android:layout_height="wrap_content" />
<RelativeLayout
android:id="@+id/main_holder"

View File

@ -10,7 +10,7 @@
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/menu"
app:menu="@menu/menu_mimetypes"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
<RelativeLayout

View File

@ -3,12 +3,6 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="AppCompatResource">
<item
android:id="@+id/search"
android:icon="@drawable/ic_search_vector"
android:title="@string/search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|always" />
<item
android:id="@+id/go_home"
android:icon="@drawable/ic_home_vector"

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="AppCompatResource">
<item
android:id="@+id/search"
android:icon="@drawable/ic_search_vector"
android:title="@string/search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|always" />
<item
android:id="@+id/sort"
android:icon="@drawable/ic_sort_vector"
android:title="@string/sort_by"
app:showAsAction="ifRoom" />
<item
android:id="@+id/toggle_filename"
android:icon="@drawable/ic_label_vector"
android:title="@string/toggle_filename"
app:showAsAction="ifRoom" />
<item
android:id="@+id/change_view_type"
android:icon="@drawable/ic_change_view_vector"
android:title="@string/change_view_type"
app:showAsAction="ifRoom" />
<item
android:id="@+id/temporarily_show_hidden"
android:showAsAction="never"
android:title="@string/temporarily_show_hidden"
app:showAsAction="never" />
<item
android:id="@+id/stop_showing_hidden"
android:showAsAction="never"
android:title="@string/stop_showing_hidden"
app:showAsAction="never" />
<item
android:id="@+id/increase_column_count"
android:showAsAction="never"
android:title="@string/increase_column_count"
app:showAsAction="never" />
<item
android:id="@+id/reduce_column_count"
android:showAsAction="never"
android:title="@string/reduce_column_count"
app:showAsAction="never" />
</menu>