adding some storage search improvements
This commit is contained in:
parent
bce66e3cde
commit
cd426324df
|
@ -1,6 +1,7 @@
|
||||||
package com.simplemobiletools.filemanager.pro.fragments
|
package com.simplemobiletools.filemanager.pro.fragments
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Activity
|
||||||
import android.app.usage.StorageStatsManager
|
import android.app.usage.StorageStatsManager
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
@ -31,6 +32,7 @@ import java.util.*
|
||||||
class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), ItemOperationsListener {
|
class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), ItemOperationsListener {
|
||||||
private val SIZE_DIVIDER = 100000
|
private val SIZE_DIVIDER = 100000
|
||||||
private var allDeviceListItems = ArrayList<ListItem>()
|
private var allDeviceListItems = ArrayList<ListItem>()
|
||||||
|
private var lastSearchedText = ""
|
||||||
|
|
||||||
override fun setupFragment(activity: SimpleActivity) {
|
override fun setupFragment(activity: SimpleActivity) {
|
||||||
if (this.activity == null) {
|
if (this.activity == null) {
|
||||||
|
@ -64,7 +66,6 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||||
override fun onResume(textColor: Int) {
|
override fun onResume(textColor: Int) {
|
||||||
getSizes()
|
getSizes()
|
||||||
context.updateTextColors(storage_fragment)
|
context.updateTextColors(storage_fragment)
|
||||||
search_holder.setBackgroundColor(context.getProperBackgroundColor())
|
|
||||||
|
|
||||||
val properPrimaryColor = context.getProperPrimaryColor()
|
val properPrimaryColor = context.getProperPrimaryColor()
|
||||||
main_storage_usage_progressbar.setIndicatorColor(properPrimaryColor)
|
main_storage_usage_progressbar.setIndicatorColor(properPrimaryColor)
|
||||||
|
@ -93,6 +94,10 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||||
val pinkColor = context.resources.getColor(R.color.md_pink_700)
|
val pinkColor = context.resources.getColor(R.color.md_pink_700)
|
||||||
others_progressbar.setIndicatorColor(pinkColor)
|
others_progressbar.setIndicatorColor(pinkColor)
|
||||||
others_progressbar.trackColor = pinkColor.adjustAlpha(LOWER_ALPHA)
|
others_progressbar.trackColor = pinkColor.adjustAlpha(LOWER_ALPHA)
|
||||||
|
|
||||||
|
search_holder.setBackgroundColor(context.getProperBackgroundColor())
|
||||||
|
progress_bar.setIndicatorColor(properPrimaryColor)
|
||||||
|
progress_bar.trackColor = properPrimaryColor.adjustAlpha(LOWER_ALPHA)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun launchMimetypeActivity(mimetype: String) {
|
private fun launchMimetypeActivity(mimetype: String) {
|
||||||
|
@ -239,6 +244,8 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun searchQueryChanged(text: String) {
|
override fun searchQueryChanged(text: String) {
|
||||||
|
lastSearchedText = text
|
||||||
|
|
||||||
if (text.isNotEmpty()) {
|
if (text.isNotEmpty()) {
|
||||||
if (search_holder.alpha < 1f) {
|
if (search_holder.alpha < 1f) {
|
||||||
search_holder.fadeIn()
|
search_holder.fadeIn()
|
||||||
|
@ -250,10 +257,31 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (text.isNotEmpty()) {
|
if (text.length == 1) {
|
||||||
|
search_results_list.beGone()
|
||||||
|
search_placeholder.beVisible()
|
||||||
|
search_placeholder_2.beVisible()
|
||||||
|
hideProgressBar()
|
||||||
|
} else if (text.isEmpty()) {
|
||||||
|
search_results_list.beGone()
|
||||||
|
hideProgressBar()
|
||||||
|
} else {
|
||||||
|
showProgressBar()
|
||||||
|
ensureBackgroundThread {
|
||||||
|
val start = System.currentTimeMillis()
|
||||||
val filtered = allDeviceListItems.filter { it.mName.contains(text, true) }.toMutableList() as ArrayList<ListItem>
|
val filtered = allDeviceListItems.filter { it.mName.contains(text, true) }.toMutableList() as ArrayList<ListItem>
|
||||||
|
if (lastSearchedText != text) {
|
||||||
|
return@ensureBackgroundThread
|
||||||
|
}
|
||||||
|
|
||||||
|
(context as? Activity)?.runOnUiThread {
|
||||||
(search_results_list.adapter as? ItemsAdapter)?.updateItems(filtered, text)
|
(search_results_list.adapter as? ItemsAdapter)?.updateItems(filtered, text)
|
||||||
|
search_results_list.beVisible()
|
||||||
search_placeholder.beVisibleIf(filtered.isEmpty())
|
search_placeholder.beVisibleIf(filtered.isEmpty())
|
||||||
|
search_placeholder_2.beGone()
|
||||||
|
hideProgressBar()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +309,7 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addItems() {
|
private fun addItems() {
|
||||||
ItemsAdapter(context as SimpleActivity, allDeviceListItems, this, search_results_list, false, null, false) {
|
ItemsAdapter(context as SimpleActivity, ArrayList(), this, search_results_list, false, null, false) {
|
||||||
clickedPath((it as FileDirItem).path)
|
clickedPath((it as FileDirItem).path)
|
||||||
}.apply {
|
}.apply {
|
||||||
search_results_list.adapter = this
|
search_results_list.adapter = this
|
||||||
|
@ -338,6 +366,14 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||||
return fileDirItems
|
return fileDirItems
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showProgressBar() {
|
||||||
|
progress_bar.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun hideProgressBar() {
|
||||||
|
progress_bar.hide()
|
||||||
|
}
|
||||||
|
|
||||||
private fun getRecyclerAdapter() = search_results_list.adapter as? ItemsAdapter
|
private fun getRecyclerAdapter() = search_results_list.adapter as? ItemsAdapter
|
||||||
|
|
||||||
override fun refreshFragment() {
|
override fun refreshFragment() {
|
||||||
|
|
|
@ -6,12 +6,6 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
|
||||||
android:id="@+id/storage_nested_scrollview"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:fillViewport="true">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/storage_holder"
|
android:id="@+id/storage_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -324,6 +318,18 @@
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||||
|
android:id="@+id/progress_bar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentTop="true"
|
||||||
|
android:indeterminate="true"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:hideAnimationBehavior="outward"
|
||||||
|
app:showAnimationBehavior="inward"
|
||||||
|
app:showDelay="250"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/search_placeholder"
|
android:id="@+id/search_placeholder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -339,6 +345,21 @@
|
||||||
android:textStyle="italic"
|
android:textStyle="italic"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/search_placeholder_2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/search_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/search_results_list"
|
android:id="@+id/search_results_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -353,5 +374,4 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.core.widget.NestedScrollView>
|
|
||||||
</com.simplemobiletools.filemanager.pro.fragments.StorageFragment>
|
</com.simplemobiletools.filemanager.pro.fragments.StorageFragment>
|
||||||
|
|
Loading…
Reference in New Issue