Compare commits

..
Author SHA1 Message Date
renovate-bot a1590e028c fix(deps): update dnsjava to v3.6.5 2026-10-26 20:52:39 +00:00
9 changed files with 17 additions and 33 deletions

No files matched your search

@@ -28,6 +28,7 @@ import de.jeanlucmakiola.agendula.data.di.LaunchHook
import de.jeanlucmakiola.agendula.domain.SmartList import de.jeanlucmakiola.agendula.domain.SmartList
import de.jeanlucmakiola.agendula.ui.imports.importIntentUri import de.jeanlucmakiola.agendula.ui.imports.importIntentUri
import de.jeanlucmakiola.agendula.ui.navigation.AppShortcuts import de.jeanlucmakiola.agendula.ui.navigation.AppShortcuts
import de.jeanlucmakiola.agendula.data.prefs.ThemeMode
import de.jeanlucmakiola.agendula.ui.RootScreen import de.jeanlucmakiola.agendula.ui.RootScreen
import de.jeanlucmakiola.agendula.ui.crash.CrashReportActivity import de.jeanlucmakiola.agendula.ui.crash.CrashReportActivity
import de.jeanlucmakiola.agendula.ui.navigation.NavRequest import de.jeanlucmakiola.agendula.ui.navigation.NavRequest
@@ -87,15 +88,15 @@ class MainActivity : ComponentActivity() {
setContent { setContent {
val settingsViewModel: SettingsViewModel = hiltViewModel() val settingsViewModel: SettingsViewModel = hiltViewModel()
val ui by settingsViewModel.state.collectAsStateWithLifecycle() val ui by settingsViewModel.state.collectAsStateWithLifecycle()
val darkTheme = ui.settings.themeMode.isDark(isSystemInDarkTheme()) val darkTheme = when (ui.settings.themeMode) {
ThemeMode.SYSTEM -> isSystemInDarkTheme()
ThemeMode.LIGHT -> false
ThemeMode.DARK -> true
}
val context = LocalContext.current val context = LocalContext.current
val use24Hour = ui.settings.timeFormat.is24Hour(DateFormat.is24HourFormat(context)) val use24Hour = ui.settings.timeFormat.is24Hour(DateFormat.is24HourFormat(context))
val firstDayOfWeek = ui.settings.weekStart ?: localeFirstDayOfWeek() val firstDayOfWeek = ui.settings.weekStart ?: localeFirstDayOfWeek()
AgendulaTheme( AgendulaTheme(darkTheme = darkTheme, dynamicColor = ui.settings.dynamicColor) {
darkTheme = darkTheme,
dynamicColor = ui.settings.dynamicColor,
pureBlack = ui.settings.themeMode.isPureBlack,
) {
CompositionLocalProvider( CompositionLocalProvider(
LocalUse24HourFormat provides use24Hour, LocalUse24HourFormat provides use24Hour,
LocalFirstDayOfWeek provides firstDayOfWeek, LocalFirstDayOfWeek provides firstDayOfWeek,
@@ -31,18 +31,7 @@ import kotlinx.coroutines.flow.map
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
/** [BLACK] is dark with pure-black surfaces, for AMOLED screens. */ enum class ThemeMode { SYSTEM, LIGHT, DARK }
enum class ThemeMode {
SYSTEM, LIGHT, DARK, BLACK;
fun isDark(systemDark: Boolean): Boolean = when (this) {
SYSTEM -> systemDark
LIGHT -> false
DARK, BLACK -> true
}
val isPureBlack: Boolean get() = this == BLACK
}
/** Clock convention: AUTO follows the device's 24-hour switch. */ /** Clock convention: AUTO follows the device's 24-hour switch. */
enum class TimeFormatPref { AUTO, TWELVE_HOUR, TWENTY_FOUR_HOUR } enum class TimeFormatPref { AUTO, TWELVE_HOUR, TWENTY_FOUR_HOUR }
@@ -140,7 +140,6 @@ internal fun AppearanceScreen(
options = ThemeMode.entries, options = ThemeMode.entries,
selected = state.settings.themeMode, selected = state.settings.themeMode,
label = { stringResource(themeLabel(it)) }, label = { stringResource(themeLabel(it)) },
summary = { if (it == ThemeMode.BLACK) stringResource(R.string.settings_theme_black_summary) else null },
onSelect = viewModel::setThemeMode, onSelect = viewModel::setThemeMode,
onDismiss = { showTheme = false }, onDismiss = { showTheme = false },
) )
@@ -168,5 +167,4 @@ private fun themeLabel(mode: ThemeMode): Int = when (mode) {
ThemeMode.SYSTEM -> R.string.settings_theme_system ThemeMode.SYSTEM -> R.string.settings_theme_system
ThemeMode.LIGHT -> R.string.settings_theme_light ThemeMode.LIGHT -> R.string.settings_theme_light
ThemeMode.DARK -> R.string.settings_theme_dark ThemeMode.DARK -> R.string.settings_theme_dark
ThemeMode.BLACK -> R.string.settings_theme_black
} }
@@ -15,7 +15,6 @@ import de.jeanlucmakiola.floret.identity.FloretExpressiveTheme
fun AgendulaTheme( fun AgendulaTheme(
darkTheme: Boolean = isSystemInDarkTheme(), darkTheme: Boolean = isSystemInDarkTheme(),
dynamicColor: Boolean = true, dynamicColor: Boolean = true,
pureBlack: Boolean = false,
content: @Composable () -> Unit, content: @Composable () -> Unit,
) { ) {
FloretExpressiveTheme( FloretExpressiveTheme(
@@ -23,7 +22,6 @@ fun AgendulaTheme(
darkScheme = AgendulaDarkFallback, darkScheme = AgendulaDarkFallback,
darkTheme = darkTheme, darkTheme = darkTheme,
dynamicColor = dynamicColor, dynamicColor = dynamicColor,
pureBlack = pureBlack,
typography = AgendulaTypography, typography = AgendulaTypography,
content = content, content = content,
) )
@@ -39,6 +39,7 @@ import dagger.hilt.android.AndroidEntryPoint
import de.jeanlucmakiola.agendula.R import de.jeanlucmakiola.agendula.R
import de.jeanlucmakiola.agendula.data.prefs.Settings import de.jeanlucmakiola.agendula.data.prefs.Settings
import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs
import de.jeanlucmakiola.agendula.data.prefs.ThemeMode
import de.jeanlucmakiola.agendula.data.tasks.TasksRepository import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
import de.jeanlucmakiola.agendula.domain.SavedFilter import de.jeanlucmakiola.agendula.domain.SavedFilter
import de.jeanlucmakiola.agendula.domain.SmartList import de.jeanlucmakiola.agendula.domain.SmartList
@@ -134,12 +135,12 @@ class TaskWidgetConfigActivity : ComponentActivity() {
rowColor = parseWidgetRowColor(state[WIDGET_ROW_COLOR_KEY]) rowColor = parseWidgetRowColor(state[WIDGET_ROW_COLOR_KEY])
selectedListIds = parseWidgetListIds(state[WIDGET_LIST_IDS_KEY]) selectedListIds = parseWidgetListIds(state[WIDGET_LIST_IDS_KEY])
} }
val dark = settings.themeMode.isDark(isSystemInDarkTheme()) val dark = when (settings.themeMode) {
AgendulaTheme( ThemeMode.SYSTEM -> isSystemInDarkTheme()
darkTheme = dark, ThemeMode.LIGHT -> false
dynamicColor = settings.dynamicColor, ThemeMode.DARK -> true
pureBlack = settings.themeMode.isPureBlack, }
) { AgendulaTheme(darkTheme = dark, dynamicColor = settings.dynamicColor) {
Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.surface) {} Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.surface) {}
WidgetFilterPicker( WidgetFilterPicker(
kind = kind, kind = kind,
@@ -82,7 +82,7 @@ internal fun effectiveThemeMode(appThemeMode: ThemeMode, override: WidgetThemeMo
override ?: when (appThemeMode) { override ?: when (appThemeMode) {
ThemeMode.SYSTEM -> WidgetThemeMode.SYSTEM ThemeMode.SYSTEM -> WidgetThemeMode.SYSTEM
ThemeMode.LIGHT -> WidgetThemeMode.LIGHT ThemeMode.LIGHT -> WidgetThemeMode.LIGHT
ThemeMode.DARK, ThemeMode.BLACK -> WidgetThemeMode.DARK ThemeMode.DARK -> WidgetThemeMode.DARK
} }
/** The smart lists a widget can show, in picker order. */ /** The smart lists a widget can show, in picker order. */
-2
View File
@@ -448,8 +448,6 @@
<string name="settings_theme_system">Follow system</string> <string name="settings_theme_system">Follow system</string>
<string name="settings_theme_light">Light</string> <string name="settings_theme_light">Light</string>
<string name="settings_theme_dark">Dark</string> <string name="settings_theme_dark">Dark</string>
<string name="settings_theme_black">Black</string>
<string name="settings_theme_black_summary">Dark with pure black backgrounds, for AMOLED screens</string>
<string name="settings_dynamic_color">Dynamic colour</string> <string name="settings_dynamic_color">Dynamic colour</string>
<string name="settings_dynamic_color_hint">Use colours from your wallpaper</string> <string name="settings_dynamic_color_hint">Use colours from your wallpaper</string>
<string name="settings_section_reminders">Notifications</string> <string name="settings_section_reminders">Notifications</string>
@@ -210,7 +210,6 @@ class WidgetDataTest {
fun `no override resolves to whatever the app's own theme means`() { fun `no override resolves to whatever the app's own theme means`() {
assertThat(readyWithTheme(ThemeMode.DARK).effectiveThemeMode(null)).isEqualTo(WidgetThemeMode.DARK) assertThat(readyWithTheme(ThemeMode.DARK).effectiveThemeMode(null)).isEqualTo(WidgetThemeMode.DARK)
assertThat(readyWithTheme(ThemeMode.SYSTEM).effectiveThemeMode(null)).isEqualTo(WidgetThemeMode.SYSTEM) assertThat(readyWithTheme(ThemeMode.SYSTEM).effectiveThemeMode(null)).isEqualTo(WidgetThemeMode.SYSTEM)
assertThat(readyWithTheme(ThemeMode.BLACK).effectiveThemeMode(null)).isEqualTo(WidgetThemeMode.DARK)
} }
@Test @Test
+1 -1
View File
@@ -54,7 +54,7 @@ xpp3 = "1.1.6"
# Parses the raw SRV/TXT answers for RFC 6764 discovery; the lookup itself goes # Parses the raw SRV/TXT answers for RFC 6764 discovery; the lookup itself goes
# through Android's DnsResolver, so it follows the network and Private DNS. # through Android's DnsResolver, so it follows the network and Private DNS.
# BSD-3 — it goes on the attribution screen with the rest. # BSD-3 — it goes on the attribution screen with the rest.
dnsjava = "3.6.3" dnsjava = "3.6.5"
# WebDAV-Push delivery. The connector only: DAVx5 also ships the embedded FCM # WebDAV-Push delivery. The connector only: DAVx5 also ships the embedded FCM
# distributor, which pulls in Play Services and would get us flagged on F-Droid. # distributor, which pulls in Play Services and would get us flagged on F-Droid.
unifiedpush = "3.3.5" unifiedpush = "3.3.5"