Update libraries

This commit is contained in:
MM20 2024-02-03 22:47:05 +01:00
parent 73e17486a1
commit c014c143ed
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
13 changed files with 236 additions and 102 deletions

2
.idea/kotlinc.xml generated
View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.9.0" />
<option name="version" value="1.9.22" />
</component>
</project>

View File

@ -2,6 +2,7 @@ package de.mm20.launcher2.ui.component
import androidx.activity.compose.BackHandler
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.exponentialDecay
import androidx.compose.animation.core.spring
import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.AnchoredDraggableState
@ -26,7 +27,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
@ -55,7 +55,6 @@ import androidx.compose.ui.input.nestedscroll.NestedScrollSource
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.IntRect
@ -63,9 +62,7 @@ import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.Velocity
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.PopupPositionProvider
import androidx.compose.ui.window.PopupProperties
import de.mm20.launcher2.ui.ktx.toPixels
import de.mm20.launcher2.ui.overlays.LocalZIndex
import de.mm20.launcher2.ui.overlays.Overlay
@ -93,7 +90,8 @@ fun BottomSheetDialog(
initialValue = SwipeState.Dismiss,
positionalThreshold = { it * 0.5f },
velocityThreshold = { 200f },
animationSpec = spring(),
snapAnimationSpec = spring(),
decayAnimationSpec = exponentialDecay(),
confirmValueChange = {
it != SwipeState.Dismiss || dismissible()
}

View File

@ -398,15 +398,12 @@ fun PagerScaffold(
modifier = Modifier
.fillMaxSize()
.nestedScroll(pagerNestedScrollConnection),
beyondBoundsPageCount = 1,
outOfBoundsPageCount = 1,
reverseLayout = reverse == (LocalLayoutDirection.current == LayoutDirection.Ltr),
state = pagerState,
userScrollEnabled = false,//!isWidgetEditMode,
flingBehavior = PagerDefaults.flingBehavior(
state = pagerState,
lowVelocityAnimationSpec = spring(
stiffness = Spring.StiffnessMediumLow,
),
pagerSnapDistance = remember {
object : PagerSnapDistance {
override fun calculateTargetPage(

View File

@ -401,7 +401,7 @@ fun PullDownScaffold(
) {
VerticalPager(
modifier = Modifier.fillMaxSize(),
beyondBoundsPageCount = 1,
outOfBoundsPageCount = 1,
state = pagerState,
reverseLayout = true,
userScrollEnabled = false,

View File

@ -52,9 +52,10 @@ fun ColumnScope.SearchBarActions(
} else AssistChipDefaults.assistChipColors(),
border = if (it == highlightedAction) {
AssistChipDefaults.assistChipBorder(
true,
borderColor = MaterialTheme.colorScheme.secondary,
)
} else AssistChipDefaults.assistChipBorder(),
} else AssistChipDefaults.assistChipBorder(true),
onClick = {
it.start(context)
},

View File

@ -44,10 +44,12 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.OutlinedCard
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.PlainTooltipBox
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.rememberPlainTooltipState
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
@ -366,10 +368,15 @@ fun ColumnScope.ConfigureAppWidget(
verticalAlignment = Alignment.CenterVertically
) {
val scope = rememberCoroutineScope()
val tooltipState = rememberPlainTooltipState()
PlainTooltipBox(
tooltipState = tooltipState,
tooltip = { Text(stringResource(R.string.widget_config_appwidget_resize_hint)) }
val tooltipState = rememberTooltipState()
TooltipBox(
state = tooltipState,
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = {
PlainTooltip {
Text(stringResource(R.string.widget_config_appwidget_resize_hint))
}
}
) {
Box(
modifier = Modifier

View File

@ -42,13 +42,17 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.IconButtonDefaults
import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.PlainTooltipBox
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.Slider
import androidx.compose.material3.Text
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -78,6 +82,7 @@ import de.mm20.launcher2.ui.launcher.transitions.EnterHomeTransitionParams
import de.mm20.launcher2.ui.locals.LocalCardStyle
import de.mm20.launcher2.ui.locals.LocalWindowSize
import de.mm20.launcher2.widgets.MusicWidget
import kotlinx.coroutines.launch
import kotlin.math.min
@Composable
@ -354,11 +359,29 @@ fun CustomActions(
val usedSlots = 1 + (if (actions.skipToPrevious) 1 else 0) + (if (actions.skipToNext) 1 else 0)
val slots = 5 - usedSlots
val scope = rememberCoroutineScope()
for (i in 0 until min(actions.customActions.size, slots - 1)) {
val action = actions.customActions[i]
PlainTooltipBox(tooltip = { Text(action.name.toString()) }) {
val tooltipState = rememberTooltipState()
TooltipBox(
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
state = tooltipState,
tooltip = {
PlainTooltip {
Text(action.name.toString())
}
},
) {
IconButton(
modifier = Modifier.tooltipTrigger(),
modifier = Modifier.combinedClickable(
onClick = {},
onLongClick = {
scope.launch {
tooltipState.show()
}
}
),
onClick = {
onActionSelected(action)
}
@ -399,10 +422,26 @@ fun CustomActions(
}
}
} else if (slots == actions.customActions.size) {
val tooltipState = rememberTooltipState()
val action = actions.customActions.last()
PlainTooltipBox(tooltip = { Text(action.name.toString()) }) {
TooltipBox(
state = tooltipState,
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = {
PlainTooltip {
Text(action.name.toString())
}
}
) {
IconButton(
modifier = Modifier.tooltipTrigger(),
modifier = Modifier.combinedClickable(
onClick = {},
onLongClick = {
scope.launch {
tooltipState.show()
}
}
),
onClick = {
onActionSelected(action)
}

View File

@ -43,18 +43,22 @@ import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.PlainTooltipBox
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarResult
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -89,6 +93,8 @@ fun NotesWidget(
val snackbarHostState = LocalSnackbarHostState.current
val lifecycleOwner = LocalLifecycleOwner.current
val scope = rememberCoroutineScope()
var showConflictResolveSheet by remember { mutableStateOf(false) }
var readWriteErrorSheetText by remember { mutableStateOf<String?>(null) }
@ -174,14 +180,20 @@ fun NotesWidget(
Row(
modifier = Modifier.padding(8.dp),
) {
PlainTooltipBox(tooltip = {
Text(
stringResource(
if (widget.config.linkedFile == null) R.string.note_widget_link_file
else R.string.note_widget_action_unlink_file
)
)
}) {
val tooltipState = rememberTooltipState()
TooltipBox(
state = tooltipState,
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = {
PlainTooltip {
Text(
stringResource(
if (widget.config.linkedFile == null) R.string.note_widget_link_file
else R.string.note_widget_action_unlink_file
)
)
}
}) {
IconButton(
onClick = {
if (widget.config.linkedFile == null) {
@ -192,8 +204,14 @@ fun NotesWidget(
viewModel.unlinkFile(context)
}
},
modifier = Modifier
.tooltipTrigger()
modifier = Modifier.combinedClickable(
onClick = {},
onLongClick = {
scope.launch {
tooltipState.show()
}
}
)
) {
Icon(
if (widget.config.linkedFile == null) Icons.Rounded.Link
@ -203,13 +221,26 @@ fun NotesWidget(
}
}
if (isLastWidget == false) {
PlainTooltipBox(tooltip = { Text(stringResource(R.string.notes_widget_action_dismiss)) }) {
TooltipBox(
state = tooltipState,
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = {
PlainTooltip {
Text(stringResource(R.string.notes_widget_action_dismiss))
}
}) {
IconButton(
onClick = {
viewModel.dismissNote()
},
modifier = Modifier
.tooltipTrigger()
modifier = Modifier.combinedClickable(
onClick = {},
onLongClick = {
scope.launch {
tooltipState.show()
}
}
)
) {
Icon(Icons.Rounded.Delete, null)
}

View File

@ -24,7 +24,6 @@ fun ColorSwatch(
color: Color,
modifier: Modifier = Modifier,
selected: Boolean = false,
onClick: (() -> Unit)? = null
) {
val darkTheme = LocalDarkTheme.current
val iconColor = Color(Hct.fromInt(color.toArgb()).let {
@ -48,7 +47,6 @@ fun ColorSwatch(
Box(
modifier = modifier
.clip(CircleShape)
.clickable(enabled = onClick != null, onClick = onClick ?: {})
.border(
if (selected) 4.dp else 1.dp,
borderColor,

View File

@ -3,6 +3,7 @@ package de.mm20.launcher2.ui.settings.colorscheme
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.expandVertically
import androidx.compose.animation.shrinkVertically
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
@ -15,13 +16,17 @@ import androidx.compose.material.icons.rounded.SettingsSuggest
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.PlainTooltipBox
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -46,13 +51,28 @@ fun CorePaletteColorPreference(
) {
var showDialog by remember { mutableStateOf(false) }
PlainTooltipBox(tooltip = { Text(title) }) {
val scope = rememberCoroutineScope()
val tooltipState = rememberTooltipState()
TooltipBox(
state = tooltipState,
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = {
PlainTooltip {
Text(title)
}
},
) {
ColorSwatch(
color = Color(value ?: defaultValue),
modifier = modifier
.size(48.dp)
.tooltipTrigger(),
onClick = { showDialog = true },
.combinedClickable(
onClick = { showDialog = true },
onLongClick = {
onValueChange(null)
}
),
)
}

View File

@ -3,6 +3,8 @@ package de.mm20.launcher2.ui.settings.colorscheme
import androidx.compose.animation.AnimatedContent
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@ -23,17 +25,21 @@ import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.PlainTooltipBox
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.SegmentedButton
import androidx.compose.material3.SegmentedButtonDefaults
import androidx.compose.material3.SingleChoiceSegmentedButtonRow
import androidx.compose.material3.Slider
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -59,6 +65,7 @@ import de.mm20.launcher2.ui.component.colorpicker.HctColorPicker
import de.mm20.launcher2.ui.component.colorpicker.rememberHctColorPickerState
import de.mm20.launcher2.ui.ktx.hct
import hct.Hct
import kotlinx.coroutines.launch
import kotlin.math.roundToInt
import de.mm20.launcher2.themes.Color as ThemeColor
@ -73,13 +80,26 @@ fun ThemeColorPreference(
) {
var showDialog by remember { mutableStateOf(false) }
PlainTooltipBox(tooltip = { Text(title) }) {
val scope = rememberCoroutineScope()
val tooltipState = rememberTooltipState()
TooltipBox(
state = tooltipState,
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = { PlainTooltip { Text(title) } }
) {
ColorSwatch(
color = Color((value ?: defaultValue).get(corePalette)),
modifier = modifier
.size(48.dp)
.tooltipTrigger(),
onClick = { showDialog = true },
.combinedClickable(
onClick = { showDialog = true },
onLongClick = {
scope.launch {
tooltipState.show()
}
}
),
)
}
@ -180,14 +200,14 @@ fun ThemeColorPreference(
),
modifier = Modifier
.padding(8.dp)
.size(64.dp),
.size(64.dp)
.clickable {
currentValue = ColorRef(
CorePaletteColor.Primary,
tone.roundToInt()
)
},
selected = themeColor.color == CorePaletteColor.Primary,
onClick = {
currentValue = ColorRef(
CorePaletteColor.Primary,
tone.roundToInt()
)
},
)
Spacer(modifier = Modifier.weight(1f))
ColorSwatch(
@ -198,14 +218,14 @@ fun ThemeColorPreference(
),
modifier = Modifier
.padding(8.dp)
.size(64.dp),
.size(64.dp)
.clickable {
currentValue = ColorRef(
CorePaletteColor.Secondary,
tone.roundToInt()
)
},
selected = themeColor.color == CorePaletteColor.Secondary,
onClick = {
currentValue = ColorRef(
CorePaletteColor.Secondary,
tone.roundToInt()
)
},
)
Spacer(modifier = Modifier.weight(1f))
ColorSwatch(
@ -216,14 +236,14 @@ fun ThemeColorPreference(
),
modifier = Modifier
.padding(8.dp)
.size(64.dp),
.size(64.dp)
.clickable {
currentValue = ColorRef(
CorePaletteColor.Tertiary,
tone.roundToInt()
)
},
selected = themeColor.color == CorePaletteColor.Tertiary,
onClick = {
currentValue = ColorRef(
CorePaletteColor.Tertiary,
tone.roundToInt()
)
},
)
}
Row(
@ -237,14 +257,14 @@ fun ThemeColorPreference(
),
modifier = Modifier
.padding(8.dp)
.size(64.dp),
.size(64.dp)
.clickable {
currentValue = ColorRef(
CorePaletteColor.Neutral,
tone.roundToInt()
)
},
selected = themeColor.color == CorePaletteColor.Neutral,
onClick = {
currentValue = ColorRef(
CorePaletteColor.Neutral,
tone.roundToInt()
)
},
)
Spacer(modifier = Modifier.weight(1f))
ColorSwatch(
@ -255,14 +275,14 @@ fun ThemeColorPreference(
),
modifier = Modifier
.padding(8.dp)
.size(64.dp),
.size(64.dp)
.clickable {
currentValue = ColorRef(
CorePaletteColor.NeutralVariant,
tone.roundToInt()
)
},
selected = themeColor.color == CorePaletteColor.NeutralVariant,
onClick = {
currentValue = ColorRef(
CorePaletteColor.NeutralVariant,
tone.roundToInt()
)
},
)
Spacer(modifier = Modifier.weight(1f))
ColorSwatch(
@ -273,14 +293,14 @@ fun ThemeColorPreference(
),
modifier = Modifier
.padding(8.dp)
.size(64.dp),
.size(64.dp)
.clickable {
currentValue = ColorRef(
CorePaletteColor.Error,
tone.roundToInt()
)
},
selected = themeColor.color == CorePaletteColor.Error,
onClick = {
currentValue = ColorRef(
CorePaletteColor.Error,
tone.roundToInt()
)
},
)
}
Row(

View File

@ -6,6 +6,7 @@ import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@ -24,15 +25,19 @@ import androidx.compose.material3.FilledIconToggleButton
import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.PlainTooltipBox
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -65,6 +70,7 @@ import de.mm20.launcher2.ui.component.preferences.SliderPreference
import de.mm20.launcher2.ui.component.preferences.SwitchPreference
import de.mm20.launcher2.ui.component.preferences.label
import de.mm20.launcher2.ui.component.preferences.value
import kotlinx.coroutines.launch
@Composable
fun IconsSettingsScreen() {
@ -257,9 +263,26 @@ fun IconsSettingsScreen() {
modifier = Modifier
.padding(12.dp)
) {
PlainTooltipBox(tooltip = { Text(stringResource(R.string.icon_pack_dynamic_colors)) }) {
val tooltipState = rememberTooltipState()
val scope = rememberCoroutineScope()
TooltipBox(
state = tooltipState,
positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),
tooltip = {
PlainTooltip {
Text(stringResource(R.string.icon_pack_dynamic_colors))
}
},
) {
FilledIconToggleButton(
modifier = Modifier.tooltipTrigger(),
modifier = Modifier.combinedClickable(
onClick = {},
onLongClick = {
scope.launch {
tooltipState.show()
}
}
),
checked = icons?.iconPackThemed == true,
onCheckedChange = {
viewModel.setIconPackThemed(it)

View File

@ -8,25 +8,25 @@ android-gradle-plugin = "8.2.2"
protobuf-gradle-plugin = "0.9.4"
ksp-gradle-plugin = "1.9.0-1.0.13"
kotlin = "1.9.0"
kotlin = "1.9.22"
kotlinx-coroutines = "1.7.3"
kotlinx-immutable = "0.3.5"
kotlinx-serialization = "1.5.1"
jetbrains-markdown = "0.4.1"
androidx-compose = "1.6.0-alpha07"
androidx-compose-material3 = "1.2.0-alpha09"
androidx-compose-compiler = "1.5.2"
androidx-lifecycle = "2.6.2"
androidx-compose = "1.7.0-alpha01"
androidx-compose-material3 = "1.2.0-rc01"
androidx-compose-compiler = "1.5.8"
androidx-lifecycle = "2.7.0"
androidx-core = "1.12.0"
androidx-appcompat = "1.7.0-alpha03"
androidx-activity = "1.8.0"
androidx-work = "2.8.1"
androidx-browser = "1.6.0"
androidx-activity = "1.8.2"
androidx-work = "2.9.0"
androidx-browser = "1.7.0"
androidx-palette = "1.0.0"
androidx-media2 = "1.2.1"
androidx-room = "2.5.2"
androidx-media2 = "1.3.0"
androidx-room = "2.6.1"
accompanist = "0.33.2-alpha"
coil = "2.3.0"