Convert to use window size class
This commit is contained in:
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))
|
||||
|
||||
Reference in new issue
Block a user