diff --git a/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivityViewModel.kt b/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivityViewModel.kt index 069e2b95cf..05145d9e5f 100644 --- a/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivityViewModel.kt +++ b/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivityViewModel.kt @@ -51,6 +51,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import org.slf4j.LoggerFactory import java.io.File +import java.util.Locale class MainActivityViewModel(val applicationContext: Application) : AndroidViewModel(applicationContext) { @@ -116,9 +117,41 @@ class MainActivityViewModel(val applicationContext: Application) : mainActivity: MainActivity, query: String, ): LiveData> { + val currentMainFragment = mainActivity.currentMainFragment + val currentMainFragmentViewModel = currentMainFragment?.mainFragmentViewModel + val openMode = currentMainFragmentViewModel?.openMode ?: OpenMode.FILE + + if (openMode == OpenMode.CUSTOM || openMode == OpenMode.TRASH_BIN) { + val results = + currentMainFragmentViewModel + ?.listElements + ?.asSequence() + ?.filter { !it.isBack && !it.header } + ?.mapNotNull { item -> + val fileName = item.title + val start = + fileName.lowercase(Locale.getDefault()).indexOf( + query.lowercase(Locale.getDefault()), + ) + + if (start >= 0) { + SearchResult(item.generateBaseFile(), start until start + query.length) + } else { + null + } + } + ?.toList() + ?: emptyList() + + val liveData = MutableLiveData>(results) + lastSearchLiveData = liveData + lastSearchJob = null + return liveData + } + val searchParameters = createSearchParameters(mainActivity) - val path = mainActivity.currentMainFragment?.currentPath ?: "" + val path = currentMainFragment?.currentPath ?: "" val basicSearch = BasicSearch(query, path, searchParameters, this.applicationContext)