From afd793fc856eacb4036fb2f0fd2c556e2fb849a5 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Mon, 21 Mar 2022 20:33:19 +0100 Subject: [PATCH] make AppShortcuts hideable --- appshortcuts/build.gradle.kts | 1 + .../appshortcuts/AppShortcutRepository.kt | 29 +++++++++------- .../de/mm20/launcher2/appshortcuts/Module.kt | 2 +- .../launcher/search/shortcut/ShortcutItem.kt | 33 ++++++++++++++++--- 4 files changed, 48 insertions(+), 17 deletions(-) diff --git a/appshortcuts/build.gradle.kts b/appshortcuts/build.gradle.kts index 56ca570c..770b0276 100644 --- a/appshortcuts/build.gradle.kts +++ b/appshortcuts/build.gradle.kts @@ -45,6 +45,7 @@ dependencies { implementation(project(":search")) implementation(project(":permissions")) + implementation(project(":hiddenitems")) implementation(project(":base")) implementation(project(":preferences")) implementation(project(":ktx")) diff --git a/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt b/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt index d8545395..33983261 100644 --- a/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt +++ b/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt @@ -7,6 +7,7 @@ import android.content.pm.PackageManager import android.os.Process import androidx.core.content.getSystemService import com.github.promeg.pinyinhelper.Pinyin +import de.mm20.launcher2.hiddenitems.HiddenItemsRepository import de.mm20.launcher2.permissions.PermissionGroup import de.mm20.launcher2.permissions.PermissionsManager import de.mm20.launcher2.preferences.LauncherDataStore @@ -32,6 +33,7 @@ interface AppShortcutRepository { internal class AppShortcutRepositoryImpl( private val context: Context, private val permissionsManager: PermissionsManager, + private val hiddenItemsRepository: HiddenItemsRepository, private val dataStore: LauncherDataStore, ) : AppShortcutRepository { @@ -107,18 +109,23 @@ internal class AppShortcutRepositoryImpl( val pm = context.packageManager - send(shortcuts.map { - val label = try { - pm.getApplicationInfo(it.`package`, 0).loadLabel(pm).toString() - } catch (e: PackageManager.NameNotFoundException) { - "" - } - AppShortcut( - context, - it, - label + + hiddenItemsRepository.hiddenItemsKeys.collectLatest { hidden -> + send( + shortcuts.mapNotNull { + val label = try { + pm.getApplicationInfo(it.`package`, 0).loadLabel(pm).toString() + } catch (e: PackageManager.NameNotFoundException) { + "" + } + AppShortcut( + context, + it, + label + ).takeIf { !hidden.contains(it.key) } + }.sorted() ) - }.sorted()) + } } } } diff --git a/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt b/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt index e3b727dd..ecedc77c 100644 --- a/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt +++ b/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt @@ -4,5 +4,5 @@ import org.koin.android.ext.koin.androidContext import org.koin.dsl.module val appShortcutsModule = module { - single { AppShortcutRepositoryImpl(androidContext(), get(), get()) } + single { AppShortcutRepositoryImpl(androidContext(), get(), get(), get()) } } \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt index f4153c50..db5a8a01 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt @@ -6,10 +6,7 @@ import androidx.compose.animation.core.* import androidx.compose.foundation.layout.* import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.ArrowBack -import androidx.compose.material.icons.rounded.Info -import androidx.compose.material.icons.rounded.Star -import androidx.compose.material.icons.rounded.StarOutline +import androidx.compose.material.icons.rounded.* import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -60,7 +57,12 @@ fun AppShortcutItem( .padding(16.dp) ) { val titleStyle by animateTextStyleAsState(if (showDetails) MaterialTheme.typography.titleMedium else MaterialTheme.typography.titleSmall) - Text(text = shortcut.label, style = titleStyle, maxLines = 1, overflow = TextOverflow.Ellipsis) + Text( + text = shortcut.label, + style = titleStyle, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) val textSpace by transition.animateDp(label = "textSpace") { if (it) 4.dp else 2.dp } @@ -123,6 +125,27 @@ fun AppShortcutItem( viewModel.openAppInfo(context) }) + val isHidden by viewModel.isHidden.collectAsState(false) + val hideAction = if (isHidden) { + DefaultToolbarAction( + label = stringResource(R.string.menu_unhide), + icon = Icons.Rounded.Visibility, + action = { + viewModel.unhide() + onBack() + } + ) + } else { + DefaultToolbarAction( + label = stringResource(R.string.menu_hide), + icon = Icons.Rounded.VisibilityOff, + action = { + viewModel.hide() + onBack() + }) + } + toolbarActions.add(hideAction) + Toolbar( leftActions = listOf( DefaultToolbarAction(