mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
adding Search at the mimetype activity
This commit is contained in:
@@ -32,6 +32,7 @@ import java.util.*
|
|||||||
class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||||
private var isSearchOpen = false
|
private var isSearchOpen = false
|
||||||
private var currentMimeType = ""
|
private var currentMimeType = ""
|
||||||
|
private var lastSearchedText = ""
|
||||||
private var searchMenuItem: MenuItem? = null
|
private var searchMenuItem: MenuItem? = null
|
||||||
private var zoomListener: MyRecyclerView.MyZoomListener? = null
|
private var zoomListener: MyRecyclerView.MyZoomListener? = null
|
||||||
private var storedItems = ArrayList<ListItem>()
|
private var storedItems = ArrayList<ListItem>()
|
||||||
@@ -124,7 +125,44 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
|||||||
|
|
||||||
override fun selectedPaths(paths: ArrayList<String>) {}
|
override fun selectedPaths(paths: ArrayList<String>) {}
|
||||||
|
|
||||||
override fun searchQueryChanged(text: String) {}
|
override fun searchQueryChanged(text: String) {
|
||||||
|
val searchText = text.trim()
|
||||||
|
lastSearchedText = searchText
|
||||||
|
when {
|
||||||
|
searchText.isEmpty() -> {
|
||||||
|
mimetypes_list.beVisible()
|
||||||
|
getRecyclerAdapter()?.updateItems(storedItems)
|
||||||
|
mimetypes_placeholder.beGone()
|
||||||
|
mimetypes_placeholder_2.beGone()
|
||||||
|
}
|
||||||
|
searchText.length == 1 -> {
|
||||||
|
mimetypes_list.beGone()
|
||||||
|
mimetypes_placeholder.beVisible()
|
||||||
|
mimetypes_placeholder_2.beVisible()
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
ensureBackgroundThread {
|
||||||
|
if (lastSearchedText != searchText) {
|
||||||
|
return@ensureBackgroundThread
|
||||||
|
}
|
||||||
|
|
||||||
|
val listItems = storedItems.filter { it.name.contains(searchText, true) } as ArrayList<ListItem>
|
||||||
|
|
||||||
|
runOnUiThread {
|
||||||
|
getRecyclerAdapter()?.updateItems(listItems, text)
|
||||||
|
mimetypes_list.beVisibleIf(listItems.isNotEmpty())
|
||||||
|
mimetypes_placeholder.beVisibleIf(listItems.isEmpty())
|
||||||
|
mimetypes_placeholder_2.beGone()
|
||||||
|
|
||||||
|
mimetypes_list.onGlobalLayout {
|
||||||
|
items_fastscroller.setScrollToY(mimetypes_list.computeVerticalScrollOffset())
|
||||||
|
calculateContentHeight(listItems)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun setupDateTimeFormat() {}
|
override fun setupDateTimeFormat() {}
|
||||||
|
|
||||||
@@ -163,6 +201,7 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
|||||||
|
|
||||||
override fun onQueryTextChange(newText: String): Boolean {
|
override fun onQueryTextChange(newText: String): Boolean {
|
||||||
if (isSearchOpen) {
|
if (isSearchOpen) {
|
||||||
|
searchQueryChanged(newText)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -172,16 +211,32 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
|||||||
MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener {
|
MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener {
|
||||||
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
||||||
isSearchOpen = true
|
isSearchOpen = true
|
||||||
|
searchOpened()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
||||||
isSearchOpen = false
|
isSearchOpen = false
|
||||||
|
searchClosed()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun searchOpened() {
|
||||||
|
isSearchOpen = true
|
||||||
|
lastSearchedText = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
fun searchClosed() {
|
||||||
|
isSearchOpen = false
|
||||||
|
lastSearchedText = ""
|
||||||
|
|
||||||
|
mimetypes_list.beVisible()
|
||||||
|
mimetypes_placeholder.beGone()
|
||||||
|
mimetypes_placeholder_2.beGone()
|
||||||
|
}
|
||||||
|
|
||||||
private fun getProperFileDirItems(callback: (ArrayList<FileDirItem>) -> Unit) {
|
private fun getProperFileDirItems(callback: (ArrayList<FileDirItem>) -> Unit) {
|
||||||
val fileDirItems = ArrayList<FileDirItem>()
|
val fileDirItems = ArrayList<FileDirItem>()
|
||||||
val showHidden = config.shouldShowHidden
|
val showHidden = config.shouldShowHidden
|
||||||
|
@@ -28,7 +28,8 @@ import java.io.File
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), ItemOperationsListener, Breadcrumbs.BreadcrumbsListener {
|
class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), ItemOperationsListener,
|
||||||
|
Breadcrumbs.BreadcrumbsListener {
|
||||||
private var showHidden = false
|
private var showHidden = false
|
||||||
private var skipItemUpdating = false
|
private var skipItemUpdating = false
|
||||||
private var isSearchOpen = false
|
private var isSearchOpen = false
|
||||||
@@ -118,8 +119,10 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
|||||||
breadcrumbs.updateFontSize(context!!.getTextSize())
|
breadcrumbs.updateFontSize(context!!.getTextSize())
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemsAdapter(activity as SimpleActivity, storedItems, this, items_list, isPickMultipleIntent, items_fastscroller,
|
ItemsAdapter(
|
||||||
items_swipe_refresh) {
|
activity as SimpleActivity, storedItems, this, items_list, isPickMultipleIntent, items_fastscroller,
|
||||||
|
items_swipe_refresh
|
||||||
|
) {
|
||||||
if ((it as? ListItem)?.isSectionTitle == true) {
|
if ((it as? ListItem)?.isSectionTitle == true) {
|
||||||
openDirectory(it.mPath)
|
openDirectory(it.mPath)
|
||||||
searchClosed()
|
searchClosed()
|
||||||
@@ -264,24 +267,24 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
|||||||
override fun searchQueryChanged(text: String) {
|
override fun searchQueryChanged(text: String) {
|
||||||
val searchText = text.trim()
|
val searchText = text.trim()
|
||||||
lastSearchedText = searchText
|
lastSearchedText = searchText
|
||||||
ensureBackgroundThread {
|
if (context == null) {
|
||||||
if (context == null) {
|
return
|
||||||
return@ensureBackgroundThread
|
}
|
||||||
}
|
|
||||||
|
|
||||||
when {
|
when {
|
||||||
searchText.isEmpty() -> activity?.runOnUiThread {
|
searchText.isEmpty() -> {
|
||||||
items_list.beVisible()
|
items_list.beVisible()
|
||||||
getRecyclerAdapter()?.updateItems(storedItems)
|
getRecyclerAdapter()?.updateItems(storedItems)
|
||||||
items_placeholder.beGone()
|
items_placeholder.beGone()
|
||||||
items_placeholder_2.beGone()
|
items_placeholder_2.beGone()
|
||||||
}
|
}
|
||||||
searchText.length == 1 -> activity?.runOnUiThread {
|
searchText.length == 1 -> {
|
||||||
items_list.beGone()
|
items_list.beGone()
|
||||||
items_placeholder.beVisible()
|
items_placeholder.beVisible()
|
||||||
items_placeholder_2.beVisible()
|
items_placeholder_2.beVisible()
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
ensureBackgroundThread {
|
||||||
val files = searchFiles(searchText, currentPath)
|
val files = searchFiles(searchText, currentPath)
|
||||||
files.sortBy { it.getParentPath() }
|
files.sortBy { it.getParentPath() }
|
||||||
|
|
||||||
|
@@ -5,6 +5,36 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/mimetypes_placeholder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:alpha="0.8"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingStart="@dimen/activity_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingEnd="@dimen/activity_margin"
|
||||||
|
android:text="@string/no_items_found"
|
||||||
|
android:textSize="@dimen/bigger_text_size"
|
||||||
|
android:textStyle="italic"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/mimetypes_placeholder_2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/mimetypes_placeholder"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:alpha="0.8"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:gravity="center"
|
||||||
|
android:padding="@dimen/activity_margin"
|
||||||
|
android:text="@string/type_2_characters"
|
||||||
|
android:textSize="@dimen/bigger_text_size"
|
||||||
|
android:textStyle="italic"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
android:id="@+id/mimetypes_list"
|
android:id="@+id/mimetypes_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
Reference in New Issue
Block a user