Android: Fix reader scrollbar visibility

Signed-off-by: Remy Chantenay <remy.chantenay@gmail.com>
This commit is contained in:
Remy Chantenay
2023-11-13 14:53:18 +01:00
parent a227d322fa
commit ba576b9d76
2 changed files with 34 additions and 13 deletions

View File

@ -1,12 +1,14 @@
package app.omnivore.omnivore.ui.reader
import HighlightColorPalette
import android.annotation.SuppressLint
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ShapeDrawable
import android.graphics.drawable.shapes.RoundRectShape
import android.os.Build
import android.util.Log
import android.view.*
import android.view.View.OnScrollChangeListener
@ -19,12 +21,8 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import app.omnivore.omnivore.R
import app.omnivore.omnivore.ui.components.HighlightColorPaletteMode
import com.google.gson.Gson
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@ -78,7 +76,27 @@ fun WebReader(
theme.backgroundColor
}
}
setBackgroundColor(bg.toInt());
setBackgroundColor(bg.toInt())
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val scrollbarColor = when (theme) {
Themes.SYSTEM -> {
if (isDarkMode) {
Color.WHITE
} else {
Color.BLACK
}
}
else -> {
theme.scrollbarColor
}
}
val rad = 8f
val shape = ShapeDrawable(RoundRectShape(floatArrayOf(rad, rad, rad, rad, rad, rad, rad, rad), null, null))
shape.paint.color = scrollbarColor.toInt()
verticalScrollbarThumbDrawable = shape
}
}
webViewClient = object : WebViewClient() {

View File

@ -44,13 +44,16 @@ data class AnnotationWebViewMessage(
val annotation: String?
)
enum class Themes(val themeKey: String, val backgroundColor: Long, val foregroundColor: Long) {
SYSTEM("System", 0xFF000000, 0xFF000000),
LIGHT("Light", 0xFFFFFFFF, 0xFF000000),
SEPIA("Sepia", 0xFFFBF0D9, 0xFF000000),
DARK("Dark", 0xFF2F3030, 0xFFFFFFFF),
APOLLO("Apollo", 0xFF6A6968, 0xFFFFFFFF),
BLACK("Black", 0xFF000000, 0xFFFFFFFF),
enum class Themes(val themeKey: String,
val backgroundColor: Long,
val foregroundColor: Long,
val scrollbarColor: Long) {
SYSTEM("System", 0xFF000000, 0xFF000000, 0xFF3A3939),
LIGHT("Light", 0xFFFFFFFF, 0xFF000000, 0xFF3A3939),
SEPIA("Sepia", 0xFFFBF0D9, 0xFF000000, 0xFF5F4B32),
DARK("Dark", 0xFF2F3030, 0xFFFFFFFF, 0xFFD8D7D7),
APOLLO("Apollo", 0xFF6A6968, 0xFFFFFFFF, 0xFFF3F3F3),
BLACK("Black", 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF),
}
@HiltViewModel