Add app shortcut search
This commit is contained in:
@@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.asLiveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import de.mm20.launcher2.applications.AppRepository
|
||||
import de.mm20.launcher2.appshortcuts.AppShortcutRepository
|
||||
import de.mm20.launcher2.calculator.CalculatorRepository
|
||||
import de.mm20.launcher2.calendar.CalendarRepository
|
||||
import de.mm20.launcher2.contacts.ContactRepository
|
||||
@@ -36,6 +37,7 @@ class SearchVM : ViewModel(), KoinComponent {
|
||||
private val calendarRepository: CalendarRepository by inject()
|
||||
private val contactRepository: ContactRepository by inject()
|
||||
private val appRepository: AppRepository by inject()
|
||||
private val appShortcutRepository: AppShortcutRepository by inject()
|
||||
private val wikipediaRepository: WikipediaRepository by inject()
|
||||
private val unitConverterRepository: UnitConverterRepository by inject()
|
||||
private val calculatorRepository: CalculatorRepository by inject()
|
||||
@@ -52,6 +54,7 @@ class SearchVM : ViewModel(), KoinComponent {
|
||||
}
|
||||
|
||||
val appResults = MutableLiveData<List<Application>>(emptyList())
|
||||
val appShortcutResults = MutableLiveData<List<AppShortcut>>(emptyList())
|
||||
val fileResults = MutableLiveData<List<File>>(emptyList())
|
||||
val contactResults = MutableLiveData<List<Contact>>(emptyList())
|
||||
val calendarResults = MutableLiveData<List<CalendarEvent>>(emptyList())
|
||||
@@ -124,6 +127,11 @@ class SearchVM : ViewModel(), KoinComponent {
|
||||
websearchResults.postValue(it)
|
||||
}
|
||||
}
|
||||
jobs += async {
|
||||
appShortcutRepository.search(query).collectLatest {
|
||||
appShortcutResults.postValue(it)
|
||||
}
|
||||
}
|
||||
jobs.map { it.await() }
|
||||
isSearching.postValue(false)
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.compose.ui.unit.dp
|
||||
import de.mm20.launcher2.ui.MdcLauncherTheme
|
||||
import de.mm20.launcher2.ui.base.ProvideSettings
|
||||
import de.mm20.launcher2.ui.launcher.search.apps.AppResults
|
||||
import de.mm20.launcher2.ui.launcher.search.appshortcuts.AppShortcutResults
|
||||
import de.mm20.launcher2.ui.launcher.search.calculator.CalculatorResults
|
||||
import de.mm20.launcher2.ui.launcher.search.calendar.CalendarResults
|
||||
import de.mm20.launcher2.ui.launcher.search.contacts.ContactResults
|
||||
@@ -44,6 +45,7 @@ class SearchView @JvmOverloads constructor(
|
||||
) {
|
||||
FavoritesResults()
|
||||
AppResults()
|
||||
AppShortcutResults()
|
||||
UnitConverterResults()
|
||||
CalculatorResults()
|
||||
CalendarResults()
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package de.mm20.launcher2.ui.launcher.search.appshortcuts
|
||||
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.foundation.layout.ColumnScope
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.livedata.observeAsState
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import de.mm20.launcher2.ui.component.LauncherCard
|
||||
import de.mm20.launcher2.ui.launcher.search.SearchVM
|
||||
import de.mm20.launcher2.ui.launcher.search.common.SearchResultGrid
|
||||
|
||||
@Composable
|
||||
fun ColumnScope.AppShortcutResults() {
|
||||
val viewModel: SearchVM = viewModel()
|
||||
val apps by viewModel.appShortcutResults.observeAsState(emptyList())
|
||||
|
||||
AnimatedVisibility(apps.isNotEmpty()) {
|
||||
LauncherCard(
|
||||
modifier = Modifier.padding(bottom = 8.dp)
|
||||
) {
|
||||
SearchResultGrid(items = apps)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user