diff --git a/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidget.kt b/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidget.kt index 4c3a2cf..ce6ab78 100644 --- a/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidget.kt +++ b/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidget.kt @@ -36,15 +36,20 @@ class NoteWidget : GlanceAppWidget() { companion object { // Responsive Breakpoints โ€” schmale + breite Spalten - val SIZE_SMALL = DpSize(110.dp, 80.dp) // Schmal+kurz: nur Titel - val SIZE_NARROW_MEDIUM = DpSize(110.dp, 110.dp) // Schmal+mittel: Vorschau - val SIZE_NARROW_LARGE = DpSize(110.dp, 250.dp) // Schmal+groรŸ: voller Inhalt - val SIZE_WIDE_MEDIUM = DpSize(250.dp, 110.dp) // Breit+mittel: Vorschau - val SIZE_WIDE_LARGE = DpSize(250.dp, 250.dp) // Breit+groรŸ: voller Inhalt + val SIZE_SMALL = DpSize(110.dp, 80.dp) // Schmal+kurz: nur Titel + val SIZE_NARROW_MEDIUM = DpSize(110.dp, 110.dp) // Schmal+mittel: Vorschau + val SIZE_NARROW_SCROLL = DpSize(110.dp, 150.dp) // ๐Ÿ†• v1.8.1: Schmal+scroll (Standard 3x2) + val SIZE_NARROW_LARGE = DpSize(110.dp, 250.dp) // Schmal+groรŸ: voller Inhalt + val SIZE_WIDE_MEDIUM = DpSize(250.dp, 110.dp) // Breit+mittel: Vorschau + val SIZE_WIDE_SCROLL = DpSize(250.dp, 150.dp) // ๐Ÿ†• v1.8.1: Breit+scroll (Standard 3x2 breit) + val SIZE_WIDE_LARGE = DpSize(250.dp, 250.dp) // Breit+groรŸ: voller Inhalt } override val sizeMode = SizeMode.Responsive( - setOf(SIZE_SMALL, SIZE_NARROW_MEDIUM, SIZE_NARROW_LARGE, SIZE_WIDE_MEDIUM, SIZE_WIDE_LARGE) + setOf( + SIZE_SMALL, SIZE_NARROW_MEDIUM, SIZE_NARROW_SCROLL, SIZE_NARROW_LARGE, + SIZE_WIDE_MEDIUM, SIZE_WIDE_SCROLL, SIZE_WIDE_LARGE + ) ) override val stateDefinition = PreferencesGlanceStateDefinition diff --git a/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidgetContent.kt b/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidgetContent.kt index 89eb842..ecb967e 100644 --- a/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidgetContent.kt +++ b/android/app/src/main/java/dev/dettmer/simplenotes/widget/NoteWidgetContent.kt @@ -52,6 +52,7 @@ import dev.dettmer.simplenotes.ui.editor.ComposeNoteEditorActivity // โ”€โ”€ Size Classification โ”€โ”€ private val WIDGET_HEIGHT_SMALL_THRESHOLD = 110.dp +private val WIDGET_HEIGHT_SCROLL_THRESHOLD = 150.dp // ๐Ÿ†• v1.8.1: Scrollbare Ansicht private val WIDGET_SIZE_MEDIUM_THRESHOLD = 250.dp // ๐Ÿ†• v1.8.0: Increased preview lengths for better text visibility @@ -59,11 +60,16 @@ private const val TEXT_PREVIEW_COMPACT_LENGTH = 120 private const val TEXT_PREVIEW_FULL_LENGTH = 300 private fun DpSize.toSizeClass(): WidgetSizeClass = when { - height < WIDGET_HEIGHT_SMALL_THRESHOLD -> WidgetSizeClass.SMALL - width < WIDGET_SIZE_MEDIUM_THRESHOLD && height < WIDGET_SIZE_MEDIUM_THRESHOLD -> WidgetSizeClass.NARROW_MED - width < WIDGET_SIZE_MEDIUM_THRESHOLD -> WidgetSizeClass.NARROW_TALL - height < WIDGET_SIZE_MEDIUM_THRESHOLD -> WidgetSizeClass.WIDE_MED - else -> WidgetSizeClass.WIDE_TALL + height < WIDGET_HEIGHT_SMALL_THRESHOLD -> WidgetSizeClass.SMALL + + // ๐Ÿ†• v1.8.1: Neue ScrollView-Schwelle bei 150dp Hรถhe + width < WIDGET_SIZE_MEDIUM_THRESHOLD && height < WIDGET_HEIGHT_SCROLL_THRESHOLD -> WidgetSizeClass.NARROW_MED + width < WIDGET_SIZE_MEDIUM_THRESHOLD && height < WIDGET_SIZE_MEDIUM_THRESHOLD -> WidgetSizeClass.NARROW_SCROLL + width < WIDGET_SIZE_MEDIUM_THRESHOLD -> WidgetSizeClass.NARROW_TALL + + height < WIDGET_HEIGHT_SCROLL_THRESHOLD -> WidgetSizeClass.WIDE_MED + height < WIDGET_SIZE_MEDIUM_THRESHOLD -> WidgetSizeClass.WIDE_SCROLL + else -> WidgetSizeClass.WIDE_TALL } @Composable @@ -177,14 +183,28 @@ fun NoteWidgetContent( } } - WidgetSizeClass.NARROW_TALL -> Box(modifier = contentClickModifier) { + // ๐Ÿ†• v1.8.1 (IMPL_09): Scrollbare GrรถรŸe (150dp+ Hรถhe) + WidgetSizeClass.NARROW_SCROLL, + WidgetSizeClass.NARROW_TALL -> { when (note.noteType) { - NoteType.TEXT -> TextNoteFullView(note) - NoteType.CHECKLIST -> ChecklistFullView( - note = note, - isLocked = isLocked, - glanceId = glanceId - ) + NoteType.TEXT -> Box(modifier = contentClickModifier) { + TextNoteFullView(note) + } + NoteType.CHECKLIST -> { + // ๐Ÿ†• v1.8.1: Locked: Click -> Options | Unlocked: kein Click -> Scroll frei + val checklistBoxModifier = if (isLocked) { + contentClickModifier + } else { + GlanceModifier.fillMaxSize() + } + Box(modifier = checklistBoxModifier) { + ChecklistFullView( + note = note, + isLocked = isLocked, + glanceId = glanceId + ) + } + } } } @@ -200,14 +220,28 @@ fun NoteWidgetContent( } } - WidgetSizeClass.WIDE_TALL -> Box(modifier = contentClickModifier) { + // ๐Ÿ†• v1.8.1 (IMPL_09): Scrollbare GrรถรŸe (150dp+ Hรถhe) + WidgetSizeClass.WIDE_SCROLL, + WidgetSizeClass.WIDE_TALL -> { when (note.noteType) { - NoteType.TEXT -> TextNoteFullView(note) - NoteType.CHECKLIST -> ChecklistFullView( - note = note, - isLocked = isLocked, - glanceId = glanceId - ) + NoteType.TEXT -> Box(modifier = contentClickModifier) { + TextNoteFullView(note) + } + NoteType.CHECKLIST -> { + // ๐Ÿ†• v1.8.1: Locked: Click -> Options | Unlocked: kein Click -> Scroll frei + val checklistBoxModifier = if (isLocked) { + contentClickModifier + } else { + GlanceModifier.fillMaxSize() + } + Box(modifier = checklistBoxModifier) { + ChecklistFullView( + note = note, + isLocked = isLocked, + glanceId = glanceId + ) + } + } } } } diff --git a/android/app/src/main/java/dev/dettmer/simplenotes/widget/WidgetSizeClass.kt b/android/app/src/main/java/dev/dettmer/simplenotes/widget/WidgetSizeClass.kt index 872040d..3c15848 100644 --- a/android/app/src/main/java/dev/dettmer/simplenotes/widget/WidgetSizeClass.kt +++ b/android/app/src/main/java/dev/dettmer/simplenotes/widget/WidgetSizeClass.kt @@ -4,11 +4,14 @@ package dev.dettmer.simplenotes.widget * ๐Ÿ†• v1.8.0: Size classification for responsive Note Widget layouts * * Determines which layout variant to use based on widget dimensions. + * ๐Ÿ†• v1.8.1: Added NARROW_SCROLL and WIDE_SCROLL for scrollable mid-size widgets */ enum class WidgetSizeClass { - SMALL, // Nur Titel - NARROW_MED, // Schmal, Vorschau - NARROW_TALL, // Schmal, voller Inhalt - WIDE_MED, // Breit, Vorschau - WIDE_TALL // Breit, voller Inhalt + SMALL, // Nur Titel + NARROW_MED, // Schmal, Vorschau (CompactView) + NARROW_SCROLL, // ๐Ÿ†• v1.8.1: Schmal, scrollbare Liste (150dp+) + NARROW_TALL, // Schmal, voller Inhalt + WIDE_MED, // Breit, Vorschau (CompactView) + WIDE_SCROLL, // ๐Ÿ†• v1.8.1: Breit, scrollbare Liste (150dp+) + WIDE_TALL // Breit, voller Inhalt }