Skip to content

Commit 8e31bc2

Browse files
committed
adding Search at the mimetype activity
1 parent a74315f commit 8e31bc2

File tree

3 files changed

+109
-21
lines changed

3 files changed

+109
-21
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import java.util.*
3232
class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
3333
private var isSearchOpen = false
3434
private var currentMimeType = ""
35+
private var lastSearchedText = ""
3536
private var searchMenuItem: MenuItem? = null
3637
private var zoomListener: MyRecyclerView.MyZoomListener? = null
3738
private var storedItems = ArrayList<ListItem>()
@@ -124,7 +125,44 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
124125

125126
override fun selectedPaths(paths: ArrayList<String>) {}
126127

127-
override fun searchQueryChanged(text: String) {}
128+
override fun searchQueryChanged(text: String) {
129+
val searchText = text.trim()
130+
lastSearchedText = searchText
131+
when {
132+
searchText.isEmpty() -> {
133+
mimetypes_list.beVisible()
134+
getRecyclerAdapter()?.updateItems(storedItems)
135+
mimetypes_placeholder.beGone()
136+
mimetypes_placeholder_2.beGone()
137+
}
138+
searchText.length == 1 -> {
139+
mimetypes_list.beGone()
140+
mimetypes_placeholder.beVisible()
141+
mimetypes_placeholder_2.beVisible()
142+
}
143+
else -> {
144+
ensureBackgroundThread {
145+
if (lastSearchedText != searchText) {
146+
return@ensureBackgroundThread
147+
}
148+
149+
val listItems = storedItems.filter { it.name.contains(searchText, true) } as ArrayList<ListItem>
150+
151+
runOnUiThread {
152+
getRecyclerAdapter()?.updateItems(listItems, text)
153+
mimetypes_list.beVisibleIf(listItems.isNotEmpty())
154+
mimetypes_placeholder.beVisibleIf(listItems.isEmpty())
155+
mimetypes_placeholder_2.beGone()
156+
157+
mimetypes_list.onGlobalLayout {
158+
items_fastscroller.setScrollToY(mimetypes_list.computeVerticalScrollOffset())
159+
calculateContentHeight(listItems)
160+
}
161+
}
162+
}
163+
}
164+
}
165+
}
128166

129167
override fun setupDateTimeFormat() {}
130168

@@ -163,6 +201,7 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
163201

164202
override fun onQueryTextChange(newText: String): Boolean {
165203
if (isSearchOpen) {
204+
searchQueryChanged(newText)
166205
}
167206
return true
168207
}
@@ -172,16 +211,32 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
172211
MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener {
173212
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
174213
isSearchOpen = true
214+
searchOpened()
175215
return true
176216
}
177217

178218
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
179219
isSearchOpen = false
220+
searchClosed()
180221
return true
181222
}
182223
})
183224
}
184225

226+
fun searchOpened() {
227+
isSearchOpen = true
228+
lastSearchedText = ""
229+
}
230+
231+
fun searchClosed() {
232+
isSearchOpen = false
233+
lastSearchedText = ""
234+
235+
mimetypes_list.beVisible()
236+
mimetypes_placeholder.beGone()
237+
mimetypes_placeholder_2.beGone()
238+
}
239+
185240
private fun getProperFileDirItems(callback: (ArrayList<FileDirItem>) -> Unit) {
186241
val fileDirItems = ArrayList<FileDirItem>()
187242
val showHidden = config.shouldShowHidden

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/fragments/ItemsFragment.kt

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import java.io.File
2828
import java.util.*
2929
import kotlin.collections.ArrayList
3030

31-
class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), ItemOperationsListener, Breadcrumbs.BreadcrumbsListener {
31+
class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), ItemOperationsListener,
32+
Breadcrumbs.BreadcrumbsListener {
3233
private var showHidden = false
3334
private var skipItemUpdating = false
3435
private var isSearchOpen = false
@@ -118,8 +119,10 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
118119
breadcrumbs.updateFontSize(context!!.getTextSize())
119120
}
120121

121-
ItemsAdapter(activity as SimpleActivity, storedItems, this, items_list, isPickMultipleIntent, items_fastscroller,
122-
items_swipe_refresh) {
122+
ItemsAdapter(
123+
activity as SimpleActivity, storedItems, this, items_list, isPickMultipleIntent, items_fastscroller,
124+
items_swipe_refresh
125+
) {
123126
if ((it as? ListItem)?.isSectionTitle == true) {
124127
openDirectory(it.mPath)
125128
searchClosed()
@@ -264,24 +267,24 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
264267
override fun searchQueryChanged(text: String) {
265268
val searchText = text.trim()
266269
lastSearchedText = searchText
267-
ensureBackgroundThread {
268-
if (context == null) {
269-
return@ensureBackgroundThread
270-
}
270+
if (context == null) {
271+
return
272+
}
271273

272-
when {
273-
searchText.isEmpty() -> activity?.runOnUiThread {
274-
items_list.beVisible()
275-
getRecyclerAdapter()?.updateItems(storedItems)
276-
items_placeholder.beGone()
277-
items_placeholder_2.beGone()
278-
}
279-
searchText.length == 1 -> activity?.runOnUiThread {
280-
items_list.beGone()
281-
items_placeholder.beVisible()
282-
items_placeholder_2.beVisible()
283-
}
284-
else -> {
274+
when {
275+
searchText.isEmpty() -> {
276+
items_list.beVisible()
277+
getRecyclerAdapter()?.updateItems(storedItems)
278+
items_placeholder.beGone()
279+
items_placeholder_2.beGone()
280+
}
281+
searchText.length == 1 -> {
282+
items_list.beGone()
283+
items_placeholder.beVisible()
284+
items_placeholder_2.beVisible()
285+
}
286+
else -> {
287+
ensureBackgroundThread {
285288
val files = searchFiles(searchText, currentPath)
286289
files.sortBy { it.getParentPath() }
287290

app/src/main/res/layout/activity_mimetypes.xml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,36 @@
55
android:layout_width="wrap_content"
66
android:layout_height="wrap_content">
77

8+
<com.simplemobiletools.commons.views.MyTextView
9+
android:id="@+id/mimetypes_placeholder"
10+
android:layout_width="match_parent"
11+
android:layout_height="wrap_content"
12+
android:layout_centerHorizontal="true"
13+
android:alpha="0.8"
14+
android:gravity="center"
15+
android:paddingStart="@dimen/activity_margin"
16+
android:paddingTop="@dimen/activity_margin"
17+
android:paddingEnd="@dimen/activity_margin"
18+
android:text="@string/no_items_found"
19+
android:textSize="@dimen/bigger_text_size"
20+
android:textStyle="italic"
21+
android:visibility="gone" />
22+
23+
<com.simplemobiletools.commons.views.MyTextView
24+
android:id="@+id/mimetypes_placeholder_2"
25+
android:layout_width="wrap_content"
26+
android:layout_height="wrap_content"
27+
android:layout_below="@+id/mimetypes_placeholder"
28+
android:layout_centerHorizontal="true"
29+
android:alpha="0.8"
30+
android:background="?attr/selectableItemBackground"
31+
android:gravity="center"
32+
android:padding="@dimen/activity_margin"
33+
android:text="@string/type_2_characters"
34+
android:textSize="@dimen/bigger_text_size"
35+
android:textStyle="italic"
36+
android:visibility="gone" />
37+
838
<com.simplemobiletools.commons.views.MyRecyclerView
939
android:id="@+id/mimetypes_list"
1040
android:layout_width="match_parent"

0 commit comments

Comments
 (0)