Update libraries
This commit is contained in:
parent
73e17486a1
commit
c014c143ed
2
.idea/kotlinc.xml
generated
2
.idea/kotlinc.xml
generated
@ -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>
|
||||
@ -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()
|
||||
}
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -401,7 +401,7 @@ fun PullDownScaffold(
|
||||
) {
|
||||
VerticalPager(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
beyondBoundsPageCount = 1,
|
||||
outOfBoundsPageCount = 1,
|
||||
state = pagerState,
|
||||
reverseLayout = true,
|
||||
userScrollEnabled = false,
|
||||
|
||||
@ -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)
|
||||
},
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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)
|
||||
}
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user