Refactor search, favorites and calendar widget

This commit is contained in:
MM20
2021-12-31 20:16:08 +01:00
parent 0193d4e495
commit a2ccef64ce
81 changed files with 1335 additions and 1671 deletions
@@ -4,6 +4,7 @@ import androidx.lifecycle.LiveData
import androidx.room.*
import de.mm20.launcher2.database.entities.FavoritesItemEntity
import de.mm20.launcher2.database.entities.WebsearchEntity
import kotlinx.coroutines.flow.Flow
@Dao
interface SearchDao {
@@ -18,7 +19,10 @@ interface SearchDao {
fun insertSkipExisting(items: FavoritesItemEntity)
@Query("SELECT * FROM Searchable WHERE pinned > 0 ORDER BY pinned DESC, launchCount DESC")
fun getFavorites() : LiveData<List<FavoritesItemEntity>>
fun getFavorites(): Flow<List<FavoritesItemEntity>>
@Query("SELECT * FROM Searchable WHERE pinned > 0 AND `key` LIKE 'calendar://%' ORDER BY pinned DESC, launchCount DESC")
fun getPinnedCalendarEvents(): Flow<List<FavoritesItemEntity>>
@Query("SELECT COUNT(key) as count FROM Searchable WHERE pinned = 1;")
@@ -44,14 +48,14 @@ interface SearchDao {
fun unpinFavorite(key: String)
@Query("DELETE FROM Searchable WHERE `key` = :key")
fun deleteByKey(key: String)
suspend fun deleteByKey(key: String)
@Query("UPDATE Searchable SET pinned = 0 WHERE `key` = :key")
fun unpinApp(key: String)
@Query("SELECT pinned FROM Searchable WHERE `key` = :key UNION SELECT 0 as pinned ORDER BY pinned DESC LIMIT 1")
fun isPinned(key: String): LiveData<Boolean>
fun isPinned(key: String): Flow<Boolean>
@Query("UPDATE Searchable SET hidden = 1, pinned = 0 WHERE `key` = :key")
@@ -67,19 +71,16 @@ interface SearchDao {
fun unhideItem(key: String)
@Query("SELECT hidden FROM Searchable WHERE `key` = :key UNION SELECT 0 as hidden ORDER BY hidden DESC LIMIT 1")
fun isHidden(key: String): LiveData<Boolean>
fun isHidden(key: String): Flow<Boolean>
@Query("SELECT `key` FROM SEARCHABLE WHERE hidden = 1")
fun getHiddenItemKeys(): LiveData<List<String>>
fun getHiddenItemKeys(): Flow<List<String>>
@Query("SELECT * FROM SEARCHABLE WHERE hidden = 1")
fun getHiddenItems(): LiveData<List<FavoritesItemEntity>>
fun getHiddenItems(): Flow<List<FavoritesItemEntity>>
@Query("SELECT * FROM Websearch ORDER BY label ASC")
fun getWebSearches(): List<WebsearchEntity>
@Query("SELECT * FROM Websearch ORDER BY label ASC")
fun getWebSearchesLiveData(): LiveData<List<WebsearchEntity>>
fun getWebSearches(): Flow<List<WebsearchEntity>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertWebsearch(websearch: WebsearchEntity)