mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
use the Search menu as the top bar
This commit is contained in:
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
47
app/src/main/res/menu/menu_mimetypes.xml
Normal file
47
app/src/main/res/menu/menu_mimetypes.xml
Normal 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>
|
Reference in New Issue
Block a user