Seat each hour in its own cell (#113)

The timeline's hour lines become a per-hour grid, in the month grid's visual
language: 24 rounded cells on surfaceContainer, separated by a 2dp gap that
reveals the surface behind them, so the hour boundary is negative space rather
than a stroke. The column's Card takes surface and the container colour moves
onto the cells.

- `HourLines.kt` becomes `HourGrid.kt`: `hourGridCells` draws the cells in the
  same `drawBehind` the lines used, under the blocks and above the column.
- The cell corner is the event chip's 4dp, not the month grid's 12dp, and is
  clamped to half the shorter side so a fit-the-day sliver or a narrow week
  column can't round into a lozenge.
- The hour gutter's label lift comes off its own line height instead of a
  hardcoded -6dp, so label and seam line up at any font scale.
- The preference keeps its stored key and its string keys; only the English
  source text and the Kotlin names change (`showHourLines` → `showHourGrid`).

Block placement is not left untouched, as the issue expected: a block gives up
the same half-gap at each end the cells do, or an on-the-hour event overhangs
the seam into its neighbours' cells. That inset follows through to the drag —
the floating copy takes the same gap off, so it stays the size of the block it
lifted off (#267), and the grab is measured off the placement rather than the
seated position. An end cut at midnight keeps none of it and stays against the
column edge.

Closes #113
This commit is contained in:
2026-09-07 18:19:51 +02:00
parent 60f05a5c65
commit e720fd68ba
17 changed files with 390 additions and 99 deletions
+2 -2
View File
@@ -431,8 +431,8 @@
<string name="settings_time_format_24h">24-hour (14:00)</string>
<!-- %1$s is a sample time written the way the system currently writes it. -->
<string name="settings_time_format_auto_summary">Following the system: %1$s</string>
<string name="settings_hour_lines">Hour lines</string>
<string name="settings_hour_lines_summary">Show a separator line at each hour in week and day view</string>
<string name="settings_hour_lines">Hour grid</string>
<string name="settings_hour_lines_summary">Seat each hour in its own cell in week and day view</string>
<string name="settings_timeline_scale">Hour height</string>
<string name="settings_timeline_scale_hint">How much vertical space one hour takes in week and day view. Both views share this setting. You can also pinch the timeline with two fingers to set any height in between.</string>
<string name="timeline_scale_fit_day">Fit whole day</string>