Update Dependencies

Re-add package and notarize workflow tasks
Update code for Compose updates
This commit is contained in:
Syer10
2021-10-22 15:17:09 -04:00
parent c4e13fb5cb
commit b82c849d56
14 changed files with 94 additions and 80 deletions

View File

@@ -30,7 +30,7 @@ jobs:
arch: x64
os: macOS-latest
shell: bash
build: packageUberJarForCurrentOS # packageDmg notarizeDmg
build: packageUberJarForCurrentOS packageDmg notarizeDmg
setupCl: ./scripts/SetupClUnix.sh
- runtime: win-x64

View File

@@ -8,10 +8,10 @@ import org.jmailen.gradle.kotlinter.tasks.FormatTask
import org.jmailen.gradle.kotlinter.tasks.LintTask
plugins {
kotlin("jvm") version "1.5.30"
kotlin("kapt") version "1.5.30"
kotlin("plugin.serialization") version "1.5.30"
id("org.jetbrains.compose") version "1.0.0-alpha4-build328"
kotlin("jvm") version "1.5.31"
kotlin("kapt") version "1.5.31"
kotlin("plugin.serialization") version "1.5.31"
id("org.jetbrains.compose") version "1.0.0-beta1"
id("com.github.gmazzo.buildconfig") version "3.0.3"
id("org.jmailen.kotlinter") version "3.6.0"
id("com.github.ben-manes.versions") version "0.39.0"
@@ -33,8 +33,8 @@ dependencies {
implementation(compose.materialIconsExtended)
implementation(compose("org.jetbrains.compose.ui:ui-util"))
implementation("ca.gosyer:compose-router:0.24.2-jetbrains-2")
implementation("ca.gosyer:accompanist-pager:0.14.0")
implementation("ca.gosyer:accompanist-flowlayout:0.14.0")
implementation("ca.gosyer:accompanist-pager:0.18.1")
implementation("ca.gosyer:accompanist-flowlayout:0.18.1")
// UI (Swing)
implementation("com.github.weisj:darklaf-core:2.7.3")
@@ -58,7 +58,7 @@ dependencies {
kapt("com.github.stephanenicolas.toothpick:toothpick-compiler:$toothpickVersion")
// Http client
val ktorVersion = "1.6.3"
val ktorVersion = "1.6.4"
implementation("io.ktor:ktor-client-core:$ktorVersion")
implementation("io.ktor:ktor-client-okhttp:$ktorVersion")
implementation("io.ktor:ktor-client-serialization:$ktorVersion")

View File

@@ -6,10 +6,10 @@
package ca.gosyer.data.ui.model
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowPlacement
import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.WindowSize
import kotlinx.serialization.Serializable
@Serializable
@@ -26,13 +26,13 @@ data class WindowSettings(
if (maximized == true) {
return WindowGet(
WindowPosition.PlatformDefault,
WindowSize(800.dp, 600.dp),
DpSize(800.dp, 600.dp),
WindowPlacement.Maximized
)
} else if (fullscreen == true) {
return WindowGet(
WindowPosition.PlatformDefault,
WindowSize(800.dp, 600.dp),
DpSize(800.dp, 600.dp),
WindowPlacement.Fullscreen
)
}
@@ -42,7 +42,7 @@ data class WindowSettings(
} else {
WindowPosition.PlatformDefault
}
val size = WindowSize((width ?: 800).dp, (height ?: 600).dp)
val size = DpSize((width ?: 800).dp, (height ?: 600).dp)
return WindowGet(
offset,
size,
@@ -60,7 +60,7 @@ data class WindowSettings(
data class WindowGet(
val offset: WindowPosition,
val size: WindowSize,
val size: DpSize,
val placement: WindowPlacement
)
}

View File

@@ -29,10 +29,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.KeyEvent
import androidx.compose.ui.input.key.key
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.WindowSize
import androidx.compose.ui.window.rememberWindowState
import ca.gosyer.common.di.AppScope
import ca.gosyer.data.translation.XmlResourceBundle
@@ -46,7 +46,7 @@ import kotlinx.coroutines.DelicateCoroutinesApi
@Suppress("FunctionName")
fun WindowDialog(
title: String = "Dialog",
size: WindowSize = WindowSize(400.dp, 200.dp),
size: DpSize = DpSize(400.dp, 200.dp),
onCloseRequest: (() -> Unit)? = null,
forceFocus: Boolean = true,
showNegativeButton: Boolean = true,
@@ -130,7 +130,7 @@ fun WindowDialog(
@OptIn(DelicateCoroutinesApi::class)
fun WindowDialog(
title: String = "Dialog",
size: WindowSize = WindowSize(400.dp, 200.dp),
size: DpSize = DpSize(400.dp, 200.dp),
onCloseRequest: (() -> Unit)? = null,
forceFocus: Boolean = true,
keyboardShortcuts: Map<Key, (KeyEvent) -> Boolean> = emptyMap(),

View File

@@ -6,12 +6,11 @@
package ca.gosyer.ui.base.components
import androidx.compose.foundation.BoxWithTooltip
import androidx.compose.foundation.TooltipArea
import androidx.compose.foundation.TooltipPlacement
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.unit.DpOffset
@@ -21,15 +20,13 @@ import androidx.compose.ui.unit.dp
fun BoxWithTooltipSurface(
tooltip: @Composable () -> Unit,
modifier: Modifier = Modifier,
contentAlignment: Alignment = Alignment.TopStart,
propagateMinConstraints: Boolean = false,
delay: Int = 500,
offset: TooltipPlacement = TooltipPlacement.CursorPoint(
delayMillis: Int = 500,
tooltipPlacement: TooltipPlacement = TooltipPlacement.CursorPoint(
offset = DpOffset(0.dp, 16.dp)
),
content: @Composable () -> Unit
) {
BoxWithTooltip(
TooltipArea(
{
Surface(
modifier = Modifier.shadow(4.dp),
@@ -39,10 +36,8 @@ fun BoxWithTooltipSurface(
)
},
modifier,
contentAlignment,
propagateMinConstraints,
delay,
offset,
delayMillis,
tooltipPlacement,
content
)
}

View File

@@ -62,10 +62,10 @@ import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.input.pointer.PointerInputScope
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.util.fastForEachIndexed
import androidx.compose.ui.window.WindowSize
import ca.gosyer.ui.base.WindowDialog
import kotlinx.coroutines.flow.MutableStateFlow
import kotlin.math.round
@@ -81,7 +81,7 @@ fun ColorPickerDialog(
WindowDialog(
onCloseRequest = onCloseRequest,
size = WindowSize(300.dp, 520.dp),
size = DpSize(300.dp, 520.dp),
title = title,
content = {
val showPresetsState by showPresets.collectAsState()

View File

@@ -7,7 +7,6 @@
package ca.gosyer.ui.base.components
import androidx.compose.foundation.ContextMenuItem
import androidx.compose.foundation.ExperimentalDesktopApi
import androidx.compose.foundation.MouseClickScope
import androidx.compose.foundation.mouseClickable
import androidx.compose.material.CursorDropdownMenu
@@ -28,7 +27,6 @@ import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.SemanticsPropertyKey
import androidx.compose.ui.semantics.semantics
@OptIn(ExperimentalDesktopApi::class)
fun Modifier.contextMenuClickable(
items: () -> List<ContextMenuItem>,
onClickLabel: String? = null,
@@ -75,7 +73,6 @@ fun Modifier.contextMenuClickable(
)
}
@OptIn(ExperimentalDesktopApi::class)
fun Modifier.combinedMouseClickable(
enabled: Boolean = true,
onClickLabel: String? = null,
@@ -116,7 +113,6 @@ fun Modifier.combinedMouseClickable(
}
}
@OptIn(ExperimentalDesktopApi::class)
private object DesktopSemanticsActions {
val onRightClick = ActionPropertyKey<MouseClickScope.() -> Boolean>("OnRightClick")
val onMiddleClick = ActionPropertyKey<MouseClickScope.() -> Boolean>("OnMiddleClick")

View File

@@ -235,8 +235,8 @@ fun <T> ChoiceDialog(
WindowDialog(
onCloseRequest = onCloseRequest,
buttons = buttons,
title = title,
content = {
title = title
) {
LazyColumn(Modifier.fillMaxSize()) {
items(items) { (value, text) ->
Row(
@@ -260,7 +260,6 @@ fun <T> ChoiceDialog(
}
}
}
)
}
@Composable

View File

@@ -7,15 +7,20 @@
package ca.gosyer.ui.base.theme
import androidx.compose.desktop.DesktopMaterialTheme
import androidx.compose.foundation.LocalScrollbarStyle
import androidx.compose.foundation.ScrollbarStyle
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.Colors
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.luminance
import androidx.compose.ui.graphics.takeOrElse
import androidx.compose.ui.unit.dp
import ca.gosyer.data.ui.UiPreferences
import ca.gosyer.data.ui.model.ThemeMode
import ca.gosyer.ui.base.vm.ViewModel
@@ -36,7 +41,19 @@ fun AppTheme(content: @Composable () -> Unit) {
val colors = vm.getColors()
/*val systemUiController = rememberSystemUiController()*/
DesktopMaterialTheme(colors = colors, content = content)
MaterialTheme(colors = colors) {
CompositionLocalProvider(
LocalScrollbarStyle provides ScrollbarStyle(
minimalHeight = 16.dp,
thickness = 8.dp,
shape = MaterialTheme.shapes.small,
hoverDurationMillis = 300,
unhoverColor = MaterialTheme.colors.onSurface.copy(alpha = 0.12f),
hoverColor = MaterialTheme.colors.onSurface.copy(alpha = 0.50f)
),
content = content
)
}
}
private class AppThemeViewModel @Inject constructor(

View File

@@ -42,9 +42,9 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.WindowSize
import androidx.compose.ui.window.rememberWindowState
import ca.gosyer.build.BuildConfig
import ca.gosyer.data.models.Extension
@@ -66,7 +66,7 @@ import java.util.Locale
@OptIn(DelicateCoroutinesApi::class)
fun openExtensionsMenu() {
launchApplication {
val state = rememberWindowState(size = WindowSize(550.dp, 700.dp))
val state = rememberWindowState(size = DpSize(550.dp, 700.dp))
ThemedWindow(::exitApplication, state, title = BuildConfig.NAME) {
Surface {
ExtensionsMenu()

View File

@@ -7,7 +7,8 @@
package ca.gosyer.ui.sources
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.BoxWithTooltip
import androidx.compose.foundation.TooltipArea
import androidx.compose.foundation.TooltipPlacement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -34,6 +35,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import ca.gosyer.build.BuildConfig
import ca.gosyer.ui.base.components.ActionIcon
@@ -133,7 +135,7 @@ fun SourcesMenu(bundle: Bundle, onSourceSettingsClick: (Long) -> Unit, onMangaCl
Surface(elevation = 1.dp) {
LazyColumn(Modifier.fillMaxHeight().width(64.dp)) {
items(sourceTabs) { source ->
BoxWithTooltip(
TooltipArea(
{
Surface(
modifier = Modifier.shadow(4.dp),
@@ -143,7 +145,10 @@ fun SourcesMenu(bundle: Bundle, onSourceSettingsClick: (Long) -> Unit, onMangaCl
Text(source?.name ?: stringResource("sources_home"), modifier = Modifier.padding(10.dp))
}
},
modifier = Modifier.size(64.dp)
modifier = Modifier.size(64.dp),
tooltipPlacement = TooltipPlacement.CursorPoint(
offset = DpOffset(0.dp, 16.dp)
)
) {
Box(Modifier.fillMaxSize()) {
val modifier = Modifier

View File

@@ -6,7 +6,7 @@
package ca.gosyer.ui.sources.components
import androidx.compose.foundation.BoxWithTooltip
import androidx.compose.foundation.TooltipArea
import androidx.compose.foundation.VerticalScrollbar
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
@@ -97,7 +97,7 @@ fun SourceItem(
serverUrl: String,
onSourceClicked: (Source) -> Unit
) {
BoxWithTooltip(
TooltipArea(
{
Surface(
modifier = Modifier.shadow(4.dp),

View File

@@ -7,19 +7,19 @@
package ca.gosyer.util.compose
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.toComposeImageBitmap
import ca.gosyer.data.server.Http
import io.ktor.client.request.HttpRequestBuilder
import io.ktor.client.request.get
import io.ktor.utils.io.ByteReadChannel
import io.ktor.utils.io.jvm.javaio.copyTo
import org.jetbrains.skija.Image
import org.jetbrains.skia.Image
import java.io.ByteArrayOutputStream
import java.nio.file.Path
import kotlin.io.path.readBytes
fun imageFromFile(file: Path): ImageBitmap {
return Image.makeFromEncoded(file.readBytes()).asImageBitmap()
return Image.makeFromEncoded(file.readBytes()).toComposeImageBitmap()
}
suspend fun imageFromUrl(client: Http, url: String, block: HttpRequestBuilder.() -> Unit): ImageBitmap {
@@ -27,5 +27,5 @@ suspend fun imageFromUrl(client: Http, url: String, block: HttpRequestBuilder.()
client.get<ByteReadChannel>(url, block).copyTo(it)
it.toByteArray()
}
return Image.makeFromEncoded(bytes).asImageBitmap()
return Image.makeFromEncoded(bytes).toComposeImageBitmap()
}

View File

@@ -29,6 +29,7 @@ fun ThemedWindow(
title: String = "Untitled",
icon: Painter? = null,
undecorated: Boolean = false,
transparent: Boolean = false,
resizable: Boolean = true,
enabled: Boolean = true,
focusable: Boolean = true,
@@ -39,18 +40,19 @@ fun ThemedWindow(
) {
val resources = remember { AppScope.getInstance<XmlResourceBundle>() }
Window(
onCloseRequest,
state,
visible,
title,
icon,
undecorated,
resizable,
enabled,
focusable,
alwaysOnTop,
onPreviewKeyEvent,
onKeyEvent
onCloseRequest = onCloseRequest,
state = state,
visible = visible,
title = title,
icon = icon,
undecorated = undecorated,
transparent = transparent,
resizable = resizable,
enabled = enabled,
focusable = focusable,
alwaysOnTop = alwaysOnTop,
onPreviewKeyEvent = onPreviewKeyEvent,
onKeyEvent = onKeyEvent
) {
setIcon()
CompositionLocalProvider(