Optimized search
This commit is contained in:
1 parent
f040fa5c08
commit
fee0a016d8
3 files changed
+13
-10
No files matched your search
@@ -236,12 +236,12 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
|
|||||||
if (searchItem != null) {
|
if (searchItem != null) {
|
||||||
val searchView = searchItem.actionView as SearchView
|
val searchView = searchItem.actionView as SearchView
|
||||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||||
override fun onQueryTextSubmit(query: String?): Boolean {
|
override fun onQueryTextSubmit(query: String?): Boolean = false
|
||||||
mainViewModel.filterConfig(query.orEmpty())
|
|
||||||
|
override fun onQueryTextChange(newText: String?): Boolean {
|
||||||
|
mainViewModel.filterConfig(newText.orEmpty())
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onQueryTextChange(newText: String?): Boolean = false
|
|
||||||
})
|
})
|
||||||
|
|
||||||
searchView.setOnCloseListener {
|
searchView.setOnCloseListener {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
var subscriptionId: String = MmkvManager.settingsStorage.decodeString(AppConfig.CACHE_SUBSCRIPTION_ID, "").orEmpty()
|
var subscriptionId: String = MmkvManager.settingsStorage.decodeString(AppConfig.CACHE_SUBSCRIPTION_ID, "").orEmpty()
|
||||||
|
|
||||||
//var keywordFilter: String = MmkvManager.settingsStorage.decodeString(AppConfig.CACHE_KEYWORD_FILTER, "")?:""
|
//var keywordFilter: String = MmkvManager.settingsStorage.decodeString(AppConfig.CACHE_KEYWORD_FILTER, "")?:""
|
||||||
private var keywordFilter = ""
|
var keywordFilter = ""
|
||||||
val serversCache = mutableListOf<ServersCache>()
|
val serversCache = mutableListOf<ServersCache>()
|
||||||
val isRunning by lazy { MutableLiveData<Boolean>() }
|
val isRunning by lazy { MutableLiveData<Boolean>() }
|
||||||
val updateListAction by lazy { MutableLiveData<Int>() }
|
val updateListAction by lazy { MutableLiveData<Int>() }
|
||||||
@@ -170,7 +170,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
|
|
||||||
fun exportAllServer(): Int {
|
fun exportAllServer(): Int {
|
||||||
val serverListCopy =
|
val serverListCopy =
|
||||||
if (subscriptionId.isNullOrEmpty()) {
|
if (subscriptionId.isNullOrEmpty() && keywordFilter.isNullOrEmpty()) {
|
||||||
serverList
|
serverList
|
||||||
} else {
|
} else {
|
||||||
serversCache.map { it.guid }.toList()
|
serversCache.map { it.guid }.toList()
|
||||||
@@ -295,7 +295,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun removeAllServer() {
|
fun removeAllServer() {
|
||||||
if (subscriptionId.isNullOrEmpty()) {
|
if (subscriptionId.isNullOrEmpty() && keywordFilter.isNullOrEmpty()) {
|
||||||
MmkvManager.removeAllServer()
|
MmkvManager.removeAllServer()
|
||||||
} else {
|
} else {
|
||||||
val serversCopy = serversCache.toList()
|
val serversCopy = serversCache.toList()
|
||||||
@@ -306,7 +306,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun removeInvalidServer() {
|
fun removeInvalidServer() {
|
||||||
if (subscriptionId.isNullOrEmpty()) {
|
if (subscriptionId.isNullOrEmpty() && keywordFilter.isNullOrEmpty()) {
|
||||||
MmkvManager.removeInvalidServer("")
|
MmkvManager.removeInvalidServer("")
|
||||||
} else {
|
} else {
|
||||||
val serversCopy = serversCache.toList()
|
val serversCopy = serversCache.toList()
|
||||||
@@ -348,6 +348,9 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun filterConfig(keyword: String) {
|
fun filterConfig(keyword: String) {
|
||||||
|
if (keyword == keywordFilter) {
|
||||||
|
return
|
||||||
|
}
|
||||||
keywordFilter = keyword
|
keywordFilter = keyword
|
||||||
MmkvManager.settingsStorage.encode(AppConfig.CACHE_KEYWORD_FILTER, keywordFilter)
|
MmkvManager.settingsStorage.encode(AppConfig.CACHE_KEYWORD_FILTER, keywordFilter)
|
||||||
reloadServerList()
|
reloadServerList()
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/search_view"
|
android:id="@+id/search_view"
|
||||||
android:icon="@drawable/ic_description_24dp"
|
android:icon="@drawable/ic_outline_filter_alt_24"
|
||||||
android:title="@string/menu_item_search"
|
android:title="@string/menu_item_search"
|
||||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always|collapseActionView"/>
|
||||||
<item
|
<item
|
||||||
android:icon="@drawable/ic_add_24dp"
|
android:icon="@drawable/ic_add_24dp"
|
||||||
android:title="@string/menu_item_add_config"
|
android:title="@string/menu_item_add_config"
|
||||||
|
|||||||
Reference in new issue
Block a user