From 3d7210ec08b4a21e4af21c2270eaf1ff4658a063 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sun, 9 Jul 2023 15:40:37 +0800 Subject: [PATCH] Prepare to rewrite FavScene with Compose --- .../ehviewer/ui/scene/ComposeFavScene.kt | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt new file mode 100644 index 000000000..74d5aa8ef --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt @@ -0,0 +1,67 @@ +package com.hippo.ehviewer.ui.scene + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.compose.foundation.clickable +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material3.ElevatedCard +import androidx.compose.material3.ListItem +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.currentRecomposeScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.res.stringResource +import com.hippo.ehviewer.R +import com.hippo.ehviewer.Settings +import com.hippo.ehviewer.ui.setMD3Content + +class ComposeFavScene : SearchBarScene() { + override fun onCreateViewWithToolbar( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ) = ComposeView(inflater.context).apply { + setMD3Content { + } + } + + override fun onCreateDrawerView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ): View { + return ComposeView(inflater.context).apply { + setMD3Content { + ElevatedCard { + val scope = currentRecomposeScope + LaunchedEffect(Unit) { + Settings.favChangesFlow.collect { + scope.invalidate() + } + } + val faves = arrayOf( + stringResource(id = R.string.local_favorites) to Settings.favLocalCount, + stringResource(id = R.string.cloud_favorites) to Settings.favCloudCount, + *Settings.favCat.zip(Settings.favCount.toTypedArray()).toTypedArray(), + ) + TopAppBar(title = { Text(text = stringResource(id = R.string.collections)) }) + LazyColumn { + itemsIndexed(faves) { index, (name, count) -> + ListItem( + headlineContent = { Text(text = name) }, + trailingContent = { Text(text = count.toString(), style = MaterialTheme.typography.bodyLarge) }, + modifier = Modifier.clickable { }, + ) + } + } + } + } + } + } +}