Convert to use window size class

This commit is contained in:
tarsin committed 2023-03-26 18:34:59 +08:00
1 parent 2f2b440196
commit 32a770b9b5
6 files changed
+23 -58

No files matched your search

@@ -34,11 +34,6 @@ import eu.kanade.tachiyomi.util.view.setSecureScreen
import rikka.insets.WindowInsetsHelper
import rikka.layoutinflater.view.LayoutInflaterFactory
enum class ScreenDimension(val screenDimensionType: Int) {
ScreenRotationLandscape(1),
ScreenRotationPortrait(2)
}
abstract class EhActivity : AppCompatActivity() {
@StyleRes
fun getThemeStyleRes(): Int {
@@ -91,20 +86,4 @@ abstract class EhActivity : AppCompatActivity() {
if (Settings.notificationRequired) return
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
fun getScreenDimension(): ScreenDimension {
var dm = applicationContext?.resources?.displayMetrics
var screenWidth = dm?.widthPixels
var screenHeight = dm?.heightPixels
var screenDimensionStatus = ScreenDimension.ScreenRotationLandscape
if (screenWidth != null) {
screenDimensionStatus = if (screenWidth > screenHeight!!)
ScreenDimension.ScreenRotationLandscape
else {
ScreenDimension.ScreenRotationPortrait
}
}
return screenDimensionStatus
}
}
@@ -29,6 +29,8 @@ import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -55,7 +57,6 @@ import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.EhUtils
import com.hippo.ehviewer.ui.ScreenDimension
import com.hippo.util.ExceptionUtils
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
@@ -66,7 +67,7 @@ import okhttp3.Cookie
import java.util.Locale
@Composable
fun CookieSignInScene(currentScreenDimension: ScreenDimension) {
fun CookieSignInScene(windowSizeClass: WindowSizeClass) {
val navController = LocalNavController.current
val clipboardManager = LocalClipboardManager.current
val focusManager = LocalFocusManager.current
@@ -184,8 +185,8 @@ fun CookieSignInScene(currentScreenDimension: ScreenDimension) {
}
}
when (currentScreenDimension) {
ScreenDimension.ScreenRotationPortrait -> Box(
when (windowSizeClass.widthSizeClass) {
WindowWidthSizeClass.Compact, WindowWidthSizeClass.Medium -> Box(
contentAlignment = Alignment.Center
) {
Scaffold(
@@ -316,7 +317,7 @@ fun CookieSignInScene(currentScreenDimension: ScreenDimension) {
}
}
ScreenDimension.ScreenRotationLandscape -> Box(
WindowWidthSizeClass.Expanded -> Box(
contentAlignment = Alignment.Center
) {
Scaffold(
@@ -327,6 +328,7 @@ fun CookieSignInScene(currentScreenDimension: ScreenDimension) {
Row(
Modifier
.padding(dimensionResource(id = R.dimen.keyline_margin))
.padding(padding)
.fillMaxSize()
.verticalScroll(rememberScrollState()),
verticalAlignment = Alignment.CenterVertically
@@ -2,6 +2,7 @@ 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
import androidx.compose.runtime.compositionLocalOf
@@ -25,15 +26,15 @@ import kotlinx.coroutines.launch
class LoginActivity : EhActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var currentScreenDimension = getScreenDimension()
setContent {
val windowSizeClass = calculateWindowSizeClass(this)
Mdc3Theme {
val navController = rememberNavController()
CompositionLocalProvider(LocalNavController provides navController) {
NavHost(navController = navController, startDestination = SIGN_IN_ROUTE_NAME) {
composable(SIGN_IN_ROUTE_NAME) {
SignInScreen(currentScreenDimension)
SignInScreen(windowSizeClass)
}
composable(WEBVIEW_SIGN_IN_ROUTE_NAME) {
@@ -41,7 +42,7 @@ class LoginActivity : EhActivity() {
}
composable(COOKIE_SIGN_IN_ROUTE_NAME) {
CookieSignInScene(currentScreenDimension)
CookieSignInScene(windowSizeClass)
}
composable(SELECT_SITE_ROUTE_NAME) {
@@ -31,6 +31,8 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -60,7 +62,6 @@ import com.hippo.ehviewer.UrlOpener
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.EhUtils
import com.hippo.ehviewer.ui.ScreenDimension
import com.hippo.util.ExceptionUtils
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
@@ -69,7 +70,7 @@ import kotlinx.coroutines.Job
import rikka.core.util.ContextUtils.requireActivity
@Composable
fun SignInScreen(currentScreenDimension: ScreenDimension) {
fun SignInScreen(windowSizeClass: WindowSizeClass) {
val navController = LocalNavController.current
val coroutineScope = rememberCoroutineScope()
val focusManager = LocalFocusManager.current
@@ -131,8 +132,8 @@ fun SignInScreen(currentScreenDimension: ScreenDimension) {
when (currentScreenDimension) {
ScreenDimension.ScreenRotationPortrait -> Box(
when (windowSizeClass.widthSizeClass) {
WindowWidthSizeClass.Compact, WindowWidthSizeClass.Medium -> Box(
contentAlignment = Alignment.Center
) {
Column(
@@ -311,7 +312,7 @@ fun SignInScreen(currentScreenDimension: ScreenDimension) {
}
}
ScreenDimension.ScreenRotationLandscape -> Box(
WindowWidthSizeClass.Expanded -> Box(
contentAlignment = Alignment.Center
) {
Row(
@@ -35,7 +35,6 @@ import androidx.navigation.NavOptions
import androidx.navigation.fragment.NavHostFragment
import com.hippo.ehviewer.R
import com.hippo.ehviewer.ui.MainActivity
import com.hippo.ehviewer.ui.ScreenDimension
import rikka.core.res.resolveDrawable
abstract class BaseScene : Fragment() {
@@ -237,28 +236,9 @@ abstract class BaseScene : Fragment() {
NavHostFragment.findNavController(this).navigate(id, args, options)
}
fun getScreenDimension(): ScreenDimension {
var dm = context?.resources?.displayMetrics
var screenWidth = dm?.widthPixels
var screenHeight = dm?.heightPixels
var screenDimensionStatus = ScreenDimension.ScreenRotationLandscape
if (screenWidth != null) {
screenDimensionStatus = if (screenWidth > screenHeight!!)
ScreenDimension.ScreenRotationLandscape
else {
ScreenDimension.ScreenRotationPortrait
}
}
return screenDimensionStatus
}
companion object {
const val LENGTH_SHORT = 0
const val LENGTH_LONG = 1
const val KEY_DRAWER_VIEW_STATE = "com.hippo.ehviewer.ui.scene.BaseScene:DRAWER_VIEW_STATE"
}
}
@@ -86,6 +86,8 @@ import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -153,7 +155,6 @@ import com.hippo.ehviewer.spider.SpiderQueen.Companion.MODE_READ
import com.hippo.ehviewer.ui.CommonOperations
import com.hippo.ehviewer.ui.GalleryInfoBottomSheet
import com.hippo.ehviewer.ui.MainActivity
import com.hippo.ehviewer.ui.ScreenDimension
import com.hippo.ehviewer.ui.scene.GalleryListScene.Companion.toStartArgs
import com.hippo.ehviewer.ui.widget.CrystalCard
import com.hippo.ehviewer.ui.widget.EhAsyncPreview
@@ -508,8 +509,9 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener {
contentPadding: PaddingValues,
modifier: Modifier
) {
when (getScreenDimension()) {
ScreenDimension.ScreenRotationPortrait -> LazyVerticalGrid(
val windowSizeClass = calculateWindowSizeClass(requireActivity())
when (windowSizeClass.widthSizeClass) {
WindowWidthSizeClass.Medium, WindowWidthSizeClass.Compact -> LazyVerticalGrid(
columns = GridCells.Adaptive(Settings.thumbSizeDp),
contentPadding = contentPadding,
modifier = modifier.padding(horizontal = dimensionResource(id = R.dimen.keyline_margin))
@@ -562,7 +564,7 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener {
}
}
ScreenDimension.ScreenRotationLandscape -> LazyVerticalGrid(
WindowWidthSizeClass.Expanded -> LazyVerticalGrid(
columns = GridCells.Adaptive(Settings.thumbSizeDp),
contentPadding = contentPadding,
modifier = modifier.padding(horizontal = dimensionResource(id = R.dimen.keyline_margin))