Compare commits
1 Commits
93df6d6d62
...
chore/fdro
| Author | SHA1 | Date | |
|---|---|---|---|
| 6abfef00f2 |
@@ -28,8 +28,8 @@ android {
|
|||||||
// which builds this version and then creates the matching vX.Y.Z tag +
|
// which builds this version and then creates the matching vX.Y.Z tag +
|
||||||
// release itself (versionCode is pinned to MAJOR*10000 + MINOR*100 +
|
// release itself (versionCode is pinned to MAJOR*10000 + MINOR*100 +
|
||||||
// PATCH from versionName, e.g. 2.7.2 -> 20702). See docs/RELEASING.md.
|
// PATCH from versionName, e.g. 2.7.2 -> 20702). See docs/RELEASING.md.
|
||||||
versionCode = 21200
|
versionCode = 21102
|
||||||
versionName = "2.12.0"
|
versionName = "2.11.2"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -692,7 +692,6 @@ private fun DayColumnCard(
|
|||||||
EventBlock(
|
EventBlock(
|
||||||
block = block,
|
block = block,
|
||||||
dark = dark,
|
dark = dark,
|
||||||
height = height,
|
|
||||||
onClick = { onEventClick(block.event) },
|
onClick = { onEventClick(block.event) },
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.offset(x = laneWidth * block.lane, y = top)
|
.offset(x = laneWidth * block.lane, y = top)
|
||||||
@@ -713,7 +712,6 @@ private fun DayColumnCard(
|
|||||||
private fun EventBlock(
|
private fun EventBlock(
|
||||||
block: TimedBlock,
|
block: TimedBlock,
|
||||||
dark: Boolean,
|
dark: Boolean,
|
||||||
height: Dp,
|
|
||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
@@ -722,22 +720,7 @@ private fun EventBlock(
|
|||||||
val locale = currentLocale()
|
val locale = currentLocale()
|
||||||
val timeLabel = "${minToHm(block.startMin, use24Hour, locale)}–" +
|
val timeLabel = "${minToHm(block.startMin, use24Hour, locale)}–" +
|
||||||
minToHm(block.endMin, use24Hour, locale)
|
minToHm(block.endMin, use24Hour, locale)
|
||||||
// Only full-width (non-overlapping) blocks that are tall enough show the time.
|
val showTime = block.endMin - block.startMin >= 45
|
||||||
// On narrow overlapping columns we drop it so the title can wrap to fill the
|
|
||||||
// whole block, mirroring Google Calendar.
|
|
||||||
val showTime = block.endMin - block.startMin >= 45 && block.laneCount == 1
|
|
||||||
val density = LocalDensity.current
|
|
||||||
val titleLineHeight = with(density) {
|
|
||||||
MaterialTheme.typography.labelMedium.lineHeight.toDp()
|
|
||||||
}
|
|
||||||
val timeLineHeight = with(density) {
|
|
||||||
MaterialTheme.typography.labelSmall.lineHeight.toDp()
|
|
||||||
}
|
|
||||||
// Wrap the title across as many lines as the block can fit (minus the 2.dp
|
|
||||||
// top/bottom padding and the reserved time line) instead of clipping it to a
|
|
||||||
// single character on slim, overlapping blocks.
|
|
||||||
val contentHeight = height - 4.dp - if (showTime) timeLineHeight else 0.dp
|
|
||||||
val titleMaxLines = (contentHeight / titleLineHeight).toInt().coerceAtLeast(1)
|
|
||||||
Box(
|
Box(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.background(pastelize(block.event.color, dark), RoundedCornerShape(4.dp))
|
.background(pastelize(block.event.color, dark), RoundedCornerShape(4.dp))
|
||||||
@@ -749,15 +732,18 @@ private fun EventBlock(
|
|||||||
Text(
|
Text(
|
||||||
text = title,
|
text = title,
|
||||||
style = MaterialTheme.typography.labelMedium,
|
style = MaterialTheme.typography.labelMedium,
|
||||||
maxLines = titleMaxLines,
|
maxLines = if (showTime) 1 else 2,
|
||||||
overflow = TextOverflow.Ellipsis,
|
overflow = TextOverflow.Ellipsis,
|
||||||
color = Color.Black.copy(alpha = 0.85f),
|
color = Color.Black.copy(alpha = 0.85f),
|
||||||
)
|
)
|
||||||
if (showTime) {
|
if (showTime) {
|
||||||
|
// Narrow columns can't fit "13:00–14:00" on one line, so let it
|
||||||
|
// wrap to a second line (after the dash) instead of clipping the
|
||||||
|
// end time.
|
||||||
Text(
|
Text(
|
||||||
text = timeLabel,
|
text = timeLabel,
|
||||||
style = MaterialTheme.typography.labelSmall,
|
style = MaterialTheme.typography.labelSmall,
|
||||||
maxLines = 1,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis,
|
overflow = TextOverflow.Ellipsis,
|
||||||
color = Color.Black.copy(alpha = 0.6f),
|
color = Color.Black.copy(alpha = 0.6f),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -48,6 +48,19 @@ Builds:
|
|||||||
# No NDK / no flavors. The release buildType applies a signingConfig only
|
# No NDK / no flavors. The release buildType applies a signingConfig only
|
||||||
# when key.properties exists; on the buildserver it does not, so this
|
# when key.properties exists; on the buildserver it does not, so this
|
||||||
# produces the unsigned APK F-Droid compares against our binary.
|
# produces the unsigned APK F-Droid compares against our binary.
|
||||||
|
#
|
||||||
|
# DO NOT add `submodules: true` here ahead of need. fdroidserver's
|
||||||
|
# initsubmodules() RAISES NoSubmodulesException ("No git submodules
|
||||||
|
# available") on any build entry whose commit has no `.gitmodules`, so
|
||||||
|
# `submodules: true` is a HARD BUILD FAILURE — not a no-op — on every
|
||||||
|
# release before the floret-kit submodule lands. (Verified 2026-06-28: it
|
||||||
|
# broke the fdroid build / checkupdates / check-source-code jobs on
|
||||||
|
# fdroiddata MR !41553; confirmed locally with the fdroidserver-master
|
||||||
|
# fetchsrclibs path.) Add `submodules: true` ONLY in the recipe entry that
|
||||||
|
# targets the FIRST release actually shipping the `floret-kit` git submodule
|
||||||
|
# (composite build via `includeBuild("floret-kit")`, core-time refactor on
|
||||||
|
# branch `chore/floret-kit-core-time`) — and only there. From that entry on
|
||||||
|
# it becomes the AutoUpdateMode template and propagates to future builds.
|
||||||
|
|
||||||
# SHA-256 of our app signing certificate (public; embedded in every published
|
# SHA-256 of our app signing certificate (public; embedded in every published
|
||||||
# APK). Locks F-Droid to publish only binaries signed with our key.
|
# APK). Locks F-Droid to publish only binaries signed with our key.
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
### Changed
|
|
||||||
- Readable titles on overlapping events. In the week and day views, events that
|
|
||||||
overlap split a day into slim columns where the title used to be clipped to a
|
|
||||||
character or two. The title now wraps across as many lines as the block can
|
|
||||||
fit, and the time is hidden on those narrow blocks so the name can fill the
|
|
||||||
space — so you can tell events apart without opening each one. Thanks to @ptab
|
|
||||||
for the suggestion ([#13]).
|
|
||||||
Reference in New Issue
Block a user