Always use setMD3Content
This commit is contained in:
1 parent
a57e91cd0a
commit
aa2073194d
6 files changed
+162
-171
No files matched your search
@@ -1,7 +1,6 @@
|
||||
package com.hippo.ehviewer.ui.login
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.SideEffect
|
||||
@@ -14,45 +13,43 @@ import androidx.navigation.NavController
|
||||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.google.accompanist.themeadapter.material3.Mdc3Theme
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhCookieStore
|
||||
import com.hippo.ehviewer.client.EhEngine
|
||||
import com.hippo.ehviewer.client.EhUrl
|
||||
import com.hippo.ehviewer.ui.EhActivity
|
||||
import com.hippo.ehviewer.ui.widget.setMD3Content
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class LoginActivity : EhActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContent {
|
||||
setMD3Content {
|
||||
val windowSizeClass = calculateWindowSizeClass(this)
|
||||
Mdc3Theme {
|
||||
val navController = rememberNavController()
|
||||
val navController = rememberNavController()
|
||||
|
||||
CompositionLocalProvider(LocalNavController provides navController) {
|
||||
NavHost(navController = navController, startDestination = SIGN_IN_ROUTE_NAME) {
|
||||
composable(SIGN_IN_ROUTE_NAME) {
|
||||
SignInScreen(windowSizeClass)
|
||||
}
|
||||
CompositionLocalProvider(LocalNavController provides navController) {
|
||||
NavHost(navController = navController, startDestination = SIGN_IN_ROUTE_NAME) {
|
||||
composable(SIGN_IN_ROUTE_NAME) {
|
||||
SignInScreen(windowSizeClass)
|
||||
}
|
||||
|
||||
composable(WEBVIEW_SIGN_IN_ROUTE_NAME) {
|
||||
WebviewSignInScreen()
|
||||
}
|
||||
composable(WEBVIEW_SIGN_IN_ROUTE_NAME) {
|
||||
WebviewSignInScreen()
|
||||
}
|
||||
|
||||
composable(COOKIE_SIGN_IN_ROUTE_NAME) {
|
||||
CookieSignInScene(windowSizeClass)
|
||||
}
|
||||
composable(COOKIE_SIGN_IN_ROUTE_NAME) {
|
||||
CookieSignInScene(windowSizeClass)
|
||||
}
|
||||
|
||||
composable(SELECT_SITE_ROUTE_NAME) {
|
||||
val selectSite by remember { mutableStateOf(Settings.selectSite) }
|
||||
if (selectSite) {
|
||||
SelectSiteScreen()
|
||||
} else {
|
||||
SideEffect {
|
||||
finish()
|
||||
}
|
||||
composable(SELECT_SITE_ROUTE_NAME) {
|
||||
val selectSite by remember { mutableStateOf(Settings.selectSite) }
|
||||
if (selectSite) {
|
||||
SelectSiteScreen()
|
||||
} else {
|
||||
SideEffect {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
||||
import arrow.core.partially1
|
||||
import com.google.accompanist.themeadapter.material3.Mdc3Theme
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import com.hippo.app.BaseDialogBuilder
|
||||
import com.hippo.app.CheckBoxDialogBuilder
|
||||
@@ -69,6 +68,7 @@ import com.hippo.ehviewer.download.DownloadService
|
||||
import com.hippo.ehviewer.download.DownloadService.Companion.clear
|
||||
import com.hippo.ehviewer.spider.SpiderDen
|
||||
import com.hippo.ehviewer.ui.widget.EhAsyncThumb
|
||||
import com.hippo.ehviewer.ui.widget.setMD3Content
|
||||
import com.hippo.unifile.UniFile
|
||||
import com.hippo.view.ViewTransition
|
||||
import com.hippo.widget.FabLayout
|
||||
@@ -861,19 +861,17 @@ class DownloadsScene :
|
||||
private val height = (Settings.listThumbSize * 3).pxToDp.dp
|
||||
|
||||
fun bind(info: DownloadInfo) {
|
||||
binding.thumb.setContent {
|
||||
Mdc3Theme {
|
||||
Card(
|
||||
onClick = ::onClick.partially1(binding.thumb),
|
||||
) {
|
||||
EhAsyncThumb(
|
||||
model = info.thumb,
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = Modifier
|
||||
.height(height)
|
||||
.aspectRatio(0.6666667F),
|
||||
)
|
||||
}
|
||||
binding.thumb.setMD3Content {
|
||||
Card(
|
||||
onClick = ::onClick.partially1(binding.thumb),
|
||||
) {
|
||||
EhAsyncThumb(
|
||||
model = info.thumb,
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = Modifier
|
||||
.height(height)
|
||||
.aspectRatio(0.6666667F),
|
||||
)
|
||||
}
|
||||
}
|
||||
binding.title.text = EhUtils.getSuitableTitle(info)
|
||||
|
||||
@@ -115,7 +115,6 @@ import arrow.core.partially1
|
||||
import coil.Coil.imageLoader
|
||||
import coil.annotation.ExperimentalCoilApi
|
||||
import coil.imageLoader
|
||||
import com.google.accompanist.themeadapter.material3.Mdc3Theme
|
||||
import com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.hippo.app.BaseDialogBuilder
|
||||
@@ -163,6 +162,7 @@ import com.hippo.ehviewer.ui.widget.CrystalCard
|
||||
import com.hippo.ehviewer.ui.widget.EhAsyncPreview
|
||||
import com.hippo.ehviewer.ui.widget.GalleryDetailHeaderCard
|
||||
import com.hippo.ehviewer.ui.widget.GalleryDetailRating
|
||||
import com.hippo.ehviewer.ui.widget.setMD3Content
|
||||
import com.hippo.ehviewer.widget.GalleryRatingBar
|
||||
import com.hippo.ehviewer.widget.GalleryRatingBar.OnUserRateListener
|
||||
import com.hippo.text.URLImageGetter
|
||||
@@ -407,103 +407,101 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener {
|
||||
downloadManager.addDownloadInfoListener(this)
|
||||
(requireActivity() as MainActivity).mShareUrl = galleryDetailUrl
|
||||
return ComposeView(requireContext()).apply {
|
||||
setContent {
|
||||
Mdc3Theme {
|
||||
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
|
||||
Scaffold(
|
||||
topBar = {
|
||||
LargeTopAppBar(
|
||||
title = {
|
||||
composeBindingGI?.let {
|
||||
Text(
|
||||
text = EhUtils.getSuitableTitle(it),
|
||||
maxLines = 2,
|
||||
)
|
||||
}
|
||||
},
|
||||
navigationIcon = {
|
||||
IconButton(onClick = {
|
||||
findNavController().popBackStack()
|
||||
}) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.ArrowBack,
|
||||
contentDescription = null,
|
||||
)
|
||||
}
|
||||
},
|
||||
scrollBehavior = scrollBehavior,
|
||||
actions = {
|
||||
var dropdown by remember { mutableStateOf(false) }
|
||||
IconButton(onClick = { dropdown = !dropdown }) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.MoreVert,
|
||||
contentDescription = null,
|
||||
)
|
||||
}
|
||||
DropdownMenu(
|
||||
expanded = dropdown,
|
||||
onDismissRequest = { dropdown = false },
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(id = R.string.action_add_tag)) },
|
||||
onClick = {
|
||||
dropdown = false
|
||||
actionAddTag()
|
||||
},
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(id = R.string.refresh)) },
|
||||
onClick = {
|
||||
dropdown = false
|
||||
actionRefresh()
|
||||
},
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(id = R.string.open_in_other_app)) },
|
||||
onClick = {
|
||||
dropdown = false
|
||||
actionOpenInOtherApp()
|
||||
},
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
},
|
||||
) {
|
||||
Surface {
|
||||
if (getDetailError.isNotBlank()) {
|
||||
Column(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center,
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(id = R.drawable.big_sad_pandroid),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.clickable(onClick = ::actionRefresh),
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
setMD3Content {
|
||||
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
|
||||
Scaffold(
|
||||
topBar = {
|
||||
LargeTopAppBar(
|
||||
title = {
|
||||
composeBindingGI?.let {
|
||||
Text(
|
||||
text = getDetailError,
|
||||
modifier = Modifier.widthIn(max = 228.dp),
|
||||
text = EhUtils.getSuitableTitle(it),
|
||||
maxLines = 2,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
val gi = composeBindingGI
|
||||
if (gi != null) {
|
||||
GalleryDetailContent(
|
||||
galleryInfo = gi,
|
||||
galleryDetail = composeBindingGD,
|
||||
contentPadding = it,
|
||||
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
|
||||
},
|
||||
navigationIcon = {
|
||||
IconButton(onClick = {
|
||||
findNavController().popBackStack()
|
||||
}) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.ArrowBack,
|
||||
contentDescription = null,
|
||||
)
|
||||
} else {
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
CircularProgressIndicator()
|
||||
}
|
||||
}
|
||||
},
|
||||
scrollBehavior = scrollBehavior,
|
||||
actions = {
|
||||
var dropdown by remember { mutableStateOf(false) }
|
||||
IconButton(onClick = { dropdown = !dropdown }) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.MoreVert,
|
||||
contentDescription = null,
|
||||
)
|
||||
}
|
||||
DropdownMenu(
|
||||
expanded = dropdown,
|
||||
onDismissRequest = { dropdown = false },
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(id = R.string.action_add_tag)) },
|
||||
onClick = {
|
||||
dropdown = false
|
||||
actionAddTag()
|
||||
},
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(id = R.string.refresh)) },
|
||||
onClick = {
|
||||
dropdown = false
|
||||
actionRefresh()
|
||||
},
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(text = stringResource(id = R.string.open_in_other_app)) },
|
||||
onClick = {
|
||||
dropdown = false
|
||||
actionOpenInOtherApp()
|
||||
},
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
},
|
||||
) {
|
||||
Surface {
|
||||
if (getDetailError.isNotBlank()) {
|
||||
Column(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center,
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(id = R.drawable.big_sad_pandroid),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.clickable(onClick = ::actionRefresh),
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
Text(
|
||||
text = getDetailError,
|
||||
modifier = Modifier.widthIn(max = 228.dp),
|
||||
)
|
||||
}
|
||||
} else {
|
||||
val gi = composeBindingGI
|
||||
if (gi != null) {
|
||||
GalleryDetailContent(
|
||||
galleryInfo = gi,
|
||||
galleryDetail = composeBindingGD,
|
||||
contentPadding = it,
|
||||
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
|
||||
)
|
||||
} else {
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
CircularProgressIndicator()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import com.google.accompanist.themeadapter.material3.Mdc3Theme
|
||||
import com.hippo.drawable.TriangleDrawable
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhUtils
|
||||
@@ -35,6 +34,7 @@ import com.hippo.ehviewer.databinding.ItemGalleryGridBinding
|
||||
import com.hippo.ehviewer.databinding.ItemGalleryListBinding
|
||||
import com.hippo.ehviewer.download.DownloadManager
|
||||
import com.hippo.ehviewer.ui.widget.EhAsyncThumb
|
||||
import com.hippo.ehviewer.ui.widget.setMD3Content
|
||||
import eu.kanade.tachiyomi.util.system.pxToDp
|
||||
|
||||
internal abstract class GalleryHolder(binding: ViewBinding) :
|
||||
@@ -52,17 +52,15 @@ internal class ListGalleryHolder(
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun bind(galleryInfo: GalleryInfo) {
|
||||
binding.run {
|
||||
thumb.setContent {
|
||||
Mdc3Theme {
|
||||
Card {
|
||||
EhAsyncThumb(
|
||||
model = galleryInfo.thumb,
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = Modifier
|
||||
.height(height)
|
||||
.aspectRatio(0.6666667F),
|
||||
)
|
||||
}
|
||||
thumb.setMD3Content {
|
||||
Card {
|
||||
EhAsyncThumb(
|
||||
model = galleryInfo.thumb,
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = Modifier
|
||||
.height(height)
|
||||
.aspectRatio(0.6666667F),
|
||||
)
|
||||
}
|
||||
}
|
||||
title.text = EhUtils.getSuitableTitle(galleryInfo)
|
||||
@@ -102,14 +100,12 @@ internal class GridGalleryHolder(private val binding: ItemGalleryGridBinding) :
|
||||
override fun bind(galleryInfo: GalleryInfo) {
|
||||
binding.run {
|
||||
val aspect = (galleryInfo.thumbWidth.toFloat() / galleryInfo.thumbHeight).coerceIn(0.33F, 1.5F)
|
||||
thumb.setContent {
|
||||
Mdc3Theme {
|
||||
EhAsyncThumb(
|
||||
model = galleryInfo.thumb,
|
||||
modifier = Modifier.aspectRatio(aspect),
|
||||
contentScale = ContentScale.Crop,
|
||||
)
|
||||
}
|
||||
thumb.setMD3Content {
|
||||
EhAsyncThumb(
|
||||
model = galleryInfo.thumb,
|
||||
modifier = Modifier.aspectRatio(aspect),
|
||||
contentScale = ContentScale.Crop,
|
||||
)
|
||||
}
|
||||
var drawable = category.background
|
||||
val color = EhUtils.getCategoryColor(galleryInfo.category)
|
||||
|
||||
@@ -14,10 +14,10 @@ import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import arrow.core.partially1
|
||||
import com.google.accompanist.themeadapter.material3.Mdc3Theme
|
||||
import com.hippo.ehviewer.client.data.GalleryPreview
|
||||
import com.hippo.ehviewer.ui.widget.CrystalCard
|
||||
import com.hippo.ehviewer.ui.widget.EhAsyncPreview
|
||||
import com.hippo.ehviewer.ui.widget.setMD3Content
|
||||
|
||||
class GalleryPreviewsAdapter(private val onClick: (GalleryPreview) -> Unit) : ListAdapter<GalleryPreview, GalleryPreviewsAdapter.ComposeHolder>(PreviewDiffCallback) {
|
||||
class ComposeHolder(val composeView: ComposeView) : RecyclerView.ViewHolder(composeView)
|
||||
@@ -31,26 +31,24 @@ class GalleryPreviewsAdapter(private val onClick: (GalleryPreview) -> Unit) : Li
|
||||
|
||||
override fun onBindViewHolder(holder: ComposeHolder, position: Int) {
|
||||
val it = getItem(position)
|
||||
holder.composeView.setContent {
|
||||
Mdc3Theme {
|
||||
Column(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
) {
|
||||
Box(contentAlignment = Alignment.Center) {
|
||||
CrystalCard(
|
||||
onClick = onClick.partially1(it),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.aspectRatio(0.6666667F),
|
||||
) {
|
||||
EhAsyncPreview(
|
||||
model = it,
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
)
|
||||
}
|
||||
holder.composeView.setMD3Content {
|
||||
Column(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
) {
|
||||
Box(contentAlignment = Alignment.Center) {
|
||||
CrystalCard(
|
||||
onClick = onClick.partially1(it),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.aspectRatio(0.6666667F),
|
||||
) {
|
||||
EhAsyncPreview(
|
||||
model = it,
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
)
|
||||
}
|
||||
Text((it.position + 1).toString())
|
||||
}
|
||||
Text((it.position + 1).toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.hippo.ehviewer.ui.widget
|
||||
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import com.google.accompanist.themeadapter.material3.Mdc3Theme
|
||||
|
||||
// To make sure compose theme and legacy view theme are in sync, we only use Mdc3Theme
|
||||
fun ComposeView.setMD3Content(content: @Composable () -> Unit) = setContent { Mdc3Theme(content = content) }
|
||||
fun ComponentActivity.setMD3Content(content: @Composable () -> Unit) = setContent { Mdc3Theme(content = content) }
|
||||
Reference in new issue
Block a user