All checks were successful
CI / ci (push) Successful in 12m38s
Release — F-Droid repo + Gitea release / ci (push) Successful in 2m19s
Release — F-Droid repo + Gitea release / build-and-deploy (push) Successful in 10m1s
Release — F-Droid repo + Gitea release / gitea-release (push) Successful in 8s
Bundles the unreleased Tier 2/3 work into one release: - Home-screen widgets (Glance): an "Upcoming" agenda widget and a month-grid widget, both reusing the in-app grouping/layout (groupAgendaDays, layoutMonthWeeks) via a Hilt WidgetEntryPoint, honouring hidden-calendar filters and refreshing on PROVIDER_CHANGED / date rollover. - App shortcut: launcher long-press "New event", routed through the shared WidgetNavRequest.Create channel into the create-event form. - Agenda view and jump-to-date (already merged via #3/#4) are documented here as part of the shipped version. Bumps versionCode 20500 / versionName 2.5.0, moves the CHANGELOG Unreleased section under [2.5.0], updates ROADMAP/STATE, and adds EN+DE strings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
37 lines
1.4 KiB
Kotlin
37 lines
1.4 KiB
Kotlin
package de.jeanlucmakiola.calendula.widget
|
|
|
|
import android.os.Build
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.glance.GlanceTheme
|
|
import androidx.glance.material3.ColorProviders
|
|
import de.jeanlucmakiola.calendula.ui.theme.CalendulaDarkFallback
|
|
import de.jeanlucmakiola.calendula.ui.theme.CalendulaLightFallback
|
|
|
|
/**
|
|
* Brand fallback for devices without Material You dynamic colour (API < 31).
|
|
* Reuses the exact same hand-tuned schemes as the in-app theme
|
|
* ([CalendulaLightFallback] / [CalendulaDarkFallback]) so a widget on an older
|
|
* device matches the app surface-for-surface.
|
|
*/
|
|
private val CalendulaGlanceColors = ColorProviders(
|
|
light = CalendulaLightFallback,
|
|
dark = CalendulaDarkFallback,
|
|
)
|
|
|
|
/**
|
|
* Glance equivalent of `CalendulaTheme`. On API 31+ it follows the system's
|
|
* Material You palette (so the widget matches the home screen / the app's
|
|
* dynamic colour); below that it falls back to the brand scheme. Either way the
|
|
* widget draws only from M3 colour-role tokens (`GlanceTheme.colors.*`) — never
|
|
* a hardcoded colour — so it tracks light/dark automatically.
|
|
*/
|
|
@Composable
|
|
fun CalendulaGlanceTheme(content: @Composable () -> Unit) {
|
|
val colors = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
|
GlanceTheme.colors
|
|
} else {
|
|
CalendulaGlanceColors
|
|
}
|
|
GlanceTheme(colors = colors, content = content)
|
|
}
|