diff --git a/next/src/main/kotlin/org/fdroid/MainActivity.kt b/next/src/main/kotlin/org/fdroid/MainActivity.kt index 7b9227d76..347acd7fd 100644 --- a/next/src/main/kotlin/org/fdroid/MainActivity.kt +++ b/next/src/main/kotlin/org/fdroid/MainActivity.kt @@ -9,8 +9,12 @@ import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts.RequestPermission import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.compose.collectAsStateWithLifecycle import dagger.hilt.android.AndroidEntryPoint +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_DYNAMIC_COLORS +import org.fdroid.settings.SettingsManager import org.fdroid.ui.Main +import javax.inject.Inject // Using [AppCompatActivity] and not [ComponentActivity] seems to be needed // for automatic theme changes when calling AppCompatDelegate.setDefaultNightMode() @@ -20,11 +24,17 @@ class MainActivity : AppCompatActivity() { val requestPermissionLauncher = registerForActivityResult(RequestPermission()) { isGranted -> } + @Inject + lateinit var settingsManager: SettingsManager + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { - Main { + val dynamicColors = settingsManager.dynamicColorFlow.collectAsStateWithLifecycle( + PREF_DEFAULT_DYNAMIC_COLORS + ).value + Main(dynamicColors) { // inform OnNewIntentListeners about the initial intent (otherwise would be missed) if (savedInstanceState == null && intent != null) { onNewIntent(intent) diff --git a/next/src/main/kotlin/org/fdroid/fdroid/ui/theme/Theme.kt b/next/src/main/kotlin/org/fdroid/fdroid/ui/theme/Theme.kt deleted file mode 120000 index 895916611..000000000 --- a/next/src/main/kotlin/org/fdroid/fdroid/ui/theme/Theme.kt +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../app/src/main/java/org/fdroid/fdroid/ui/theme/Theme.kt \ No newline at end of file diff --git a/next/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt b/next/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt index ef3848478..025912c99 100644 --- a/next/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt +++ b/next/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt @@ -10,6 +10,9 @@ object SettingsConstants { const val PREF_KEY_THEME = "theme" const val PREF_DEFAULT_THEME = "followSystem" + const val PREF_KEY_DYNAMIC_COLORS = "dynamicColors" + const val PREF_DEFAULT_DYNAMIC_COLORS = false + const val PREF_KEY_REPO_UPDATES = "repoUpdates" const val PREF_DEFAULT_REPO_UPDATES = true diff --git a/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt b/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt index fa95a4d35..f1b947d42 100644 --- a/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt +++ b/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt @@ -6,6 +6,7 @@ import androidx.core.content.edit import dagger.hilt.android.qualifiers.ApplicationContext import io.ktor.client.engine.ProxyBuilder import io.ktor.client.engine.ProxyConfig +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.distinctUntilChanged @@ -16,6 +17,7 @@ import mu.KotlinLogging import org.fdroid.database.AppListSortOrder import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_APP_LIST_SORT_ORDER import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_AUTO_UPDATES +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_DYNAMIC_COLORS import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_LAST_UPDATE_CHECK import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_PROXY import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_REPO_UPDATES @@ -23,6 +25,7 @@ import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_SHOW_INCOMPATIBLE import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_THEME import org.fdroid.settings.SettingsConstants.PREF_KEY_APP_LIST_SORT_ORDER import org.fdroid.settings.SettingsConstants.PREF_KEY_AUTO_UPDATES +import org.fdroid.settings.SettingsConstants.PREF_KEY_DYNAMIC_COLORS import org.fdroid.settings.SettingsConstants.PREF_KEY_IGNORED_APP_ISSUES import org.fdroid.settings.SettingsConstants.PREF_KEY_LAST_UPDATE_CHECK import org.fdroid.settings.SettingsConstants.PREF_KEY_PROXY @@ -51,6 +54,9 @@ class SettingsManager @Inject constructor( val prefsFlow by lazy { createPreferenceFlow(prefs) } val theme get() = prefs.getString(PREF_KEY_THEME, PREF_DEFAULT_THEME)!! val themeFlow = prefsFlow.map { it.get(PREF_KEY_THEME) }.distinctUntilChanged() + val dynamicColorFlow: Flow = prefsFlow.map { + it.get(PREF_KEY_DYNAMIC_COLORS) ?: PREF_DEFAULT_DYNAMIC_COLORS + }.distinctUntilChanged() val repoUpdates get() = prefs.getBoolean(PREF_KEY_REPO_UPDATES, PREF_DEFAULT_REPO_UPDATES) val repoUpdatesFlow get() = prefsFlow.map { it.get(PREF_KEY_REPO_UPDATES) }.distinctUntilChanged() diff --git a/next/src/main/kotlin/org/fdroid/ui/About.kt b/next/src/main/kotlin/org/fdroid/ui/About.kt index 82ee49c79..d41013ae7 100644 --- a/next/src/main/kotlin/org/fdroid/ui/About.kt +++ b/next/src/main/kotlin/org/fdroid/ui/About.kt @@ -36,7 +36,6 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.BuildConfig.VERSION_NAME import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.ui.utils.openUriSafe @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/Main.kt b/next/src/main/kotlin/org/fdroid/ui/Main.kt index 52b1554c0..2b672b065 100644 --- a/next/src/main/kotlin/org/fdroid/ui/Main.kt +++ b/next/src/main/kotlin/org/fdroid/ui/Main.kt @@ -29,7 +29,6 @@ import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_MEDIUM_LOW import com.viktormykhailiv.compose.hints.HintHost import org.fdroid.R import org.fdroid.database.AppListSortOrder -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.install.InstallConfirmationState import org.fdroid.ui.apps.AppWithIssueItem import org.fdroid.ui.apps.MyApps @@ -59,7 +58,7 @@ import org.fdroid.ui.settings.SettingsViewModel @OptIn(ExperimentalMaterial3AdaptiveApi::class) @Composable -fun Main(onListeningForIntent: () -> Unit = {}) { +fun Main(dynamicColors: Boolean, onListeningForIntent: () -> Unit = {}) { val backStack = rememberNavBackStack(NavigationKey.Discover) // set up intent routing by listening to new intents from activity val activity = (LocalActivity.current as ComponentActivity) @@ -194,7 +193,6 @@ fun Main(onListeningForIntent: () -> Unit = {}) { (backStack.last() as? NavigationKey.AppDetails)?.packageName } else null, onBackClicked = { backStack.removeLastOrNull() }, - modifier = Modifier, ) { packageName -> backStack.add(NavigationKey.AppDetails(packageName)) } @@ -300,7 +298,7 @@ fun Main(onListeningForIntent: () -> Unit = {}) { About { backStack.removeLastOrNull() } } } - FDroidContent { + FDroidContent(dynamicColors = dynamicColors) { HintHost { NavDisplay( backStack = backStack, diff --git a/next/src/main/kotlin/org/fdroid/ui/Theme.kt b/next/src/main/kotlin/org/fdroid/ui/Theme.kt new file mode 100644 index 000000000..bde49f2b8 --- /dev/null +++ b/next/src/main/kotlin/org/fdroid/ui/Theme.kt @@ -0,0 +1,184 @@ +package org.fdroid.ui + +import android.os.Build.VERSION.SDK_INT +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import org.fdroid.fdroid.ui.theme.backgroundLight +import org.fdroid.fdroid.ui.theme.errorContainerDark +import org.fdroid.fdroid.ui.theme.errorContainerLight +import org.fdroid.fdroid.ui.theme.errorDark +import org.fdroid.fdroid.ui.theme.errorLight +import org.fdroid.fdroid.ui.theme.inverseOnSurfaceDark +import org.fdroid.fdroid.ui.theme.inverseOnSurfaceLight +import org.fdroid.fdroid.ui.theme.inversePrimaryDark +import org.fdroid.fdroid.ui.theme.inversePrimaryLight +import org.fdroid.fdroid.ui.theme.inverseSurfaceDark +import org.fdroid.fdroid.ui.theme.inverseSurfaceLight +import org.fdroid.fdroid.ui.theme.onBackgroundDark +import org.fdroid.fdroid.ui.theme.onBackgroundLight +import org.fdroid.fdroid.ui.theme.onErrorContainerDark +import org.fdroid.fdroid.ui.theme.onErrorContainerLight +import org.fdroid.fdroid.ui.theme.onErrorDark +import org.fdroid.fdroid.ui.theme.onErrorLight +import org.fdroid.fdroid.ui.theme.onPrimaryContainerDark +import org.fdroid.fdroid.ui.theme.onPrimaryContainerLight +import org.fdroid.fdroid.ui.theme.onPrimaryDark +import org.fdroid.fdroid.ui.theme.onPrimaryLight +import org.fdroid.fdroid.ui.theme.onSecondaryContainerDark +import org.fdroid.fdroid.ui.theme.onSecondaryContainerLight +import org.fdroid.fdroid.ui.theme.onSecondaryDark +import org.fdroid.fdroid.ui.theme.onSecondaryLight +import org.fdroid.fdroid.ui.theme.onSurfaceDark +import org.fdroid.fdroid.ui.theme.onSurfaceLight +import org.fdroid.fdroid.ui.theme.onSurfaceVariantDark +import org.fdroid.fdroid.ui.theme.onSurfaceVariantLight +import org.fdroid.fdroid.ui.theme.onTertiaryContainerDark +import org.fdroid.fdroid.ui.theme.onTertiaryContainerLight +import org.fdroid.fdroid.ui.theme.onTertiaryDark +import org.fdroid.fdroid.ui.theme.onTertiaryLight +import org.fdroid.fdroid.ui.theme.outlineDark +import org.fdroid.fdroid.ui.theme.outlineLight +import org.fdroid.fdroid.ui.theme.outlineVariantDark +import org.fdroid.fdroid.ui.theme.outlineVariantLight +import org.fdroid.fdroid.ui.theme.primaryContainerDark +import org.fdroid.fdroid.ui.theme.primaryContainerLight +import org.fdroid.fdroid.ui.theme.primaryDark +import org.fdroid.fdroid.ui.theme.primaryLight +import org.fdroid.fdroid.ui.theme.scrimDark +import org.fdroid.fdroid.ui.theme.scrimLight +import org.fdroid.fdroid.ui.theme.secondaryContainerDark +import org.fdroid.fdroid.ui.theme.secondaryContainerLight +import org.fdroid.fdroid.ui.theme.secondaryDark +import org.fdroid.fdroid.ui.theme.secondaryLight +import org.fdroid.fdroid.ui.theme.surfaceBrightDark +import org.fdroid.fdroid.ui.theme.surfaceBrightLight +import org.fdroid.fdroid.ui.theme.surfaceContainerDark +import org.fdroid.fdroid.ui.theme.surfaceContainerHighDark +import org.fdroid.fdroid.ui.theme.surfaceContainerHighLight +import org.fdroid.fdroid.ui.theme.surfaceContainerHighestDark +import org.fdroid.fdroid.ui.theme.surfaceContainerHighestLight +import org.fdroid.fdroid.ui.theme.surfaceContainerLight +import org.fdroid.fdroid.ui.theme.surfaceContainerLowDark +import org.fdroid.fdroid.ui.theme.surfaceContainerLowLight +import org.fdroid.fdroid.ui.theme.surfaceContainerLowestDark +import org.fdroid.fdroid.ui.theme.surfaceContainerLowestLight +import org.fdroid.fdroid.ui.theme.surfaceDimDark +import org.fdroid.fdroid.ui.theme.surfaceDimLight +import org.fdroid.fdroid.ui.theme.surfaceLight +import org.fdroid.fdroid.ui.theme.surfaceVariantDark +import org.fdroid.fdroid.ui.theme.surfaceVariantLight +import org.fdroid.fdroid.ui.theme.tertiaryContainerDark +import org.fdroid.fdroid.ui.theme.tertiaryContainerLight +import org.fdroid.fdroid.ui.theme.tertiaryDark +import org.fdroid.fdroid.ui.theme.tertiaryLight + +// The followings are generated by the Material Theme Builder with modifications +// https://www.figma.com/community/plugin/1034969338659738588 +// Unused code are and themes with contrast are removed + +private val lightScheme = lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + outline = outlineLight, + outlineVariant = outlineVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + surfaceDim = surfaceDimLight, + surfaceBright = surfaceBrightLight, + surfaceContainerLowest = surfaceContainerLowestLight, + surfaceContainerLow = surfaceContainerLowLight, + surfaceContainer = surfaceContainerLight, + surfaceContainerHigh = surfaceContainerHighLight, + surfaceContainerHighest = surfaceContainerHighestLight, +) + +private val darkScheme = darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = Color.Black, // TODO + onBackground = onBackgroundDark, + surface = Color(0xff1e1e1e), // TODO + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + outline = outlineDark, + outlineVariant = outlineVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + surfaceDim = surfaceDimDark, + surfaceBright = surfaceBrightDark, + surfaceContainerLowest = surfaceContainerLowestDark, + surfaceContainerLow = surfaceContainerLowDark, + surfaceContainer = surfaceContainerDark, + surfaceContainerHigh = surfaceContainerHighDark, + surfaceContainerHighest = surfaceContainerHighestDark, +) + +@Composable +fun FDroidContent( + darkTheme: Boolean = isSystemInDarkTheme(), + dynamicColors: Boolean = false, + content: @Composable () -> Unit +) { + val colorScheme = when { + SDK_INT >= 31 && dynamicColors && darkTheme -> { + dynamicDarkColorScheme(LocalContext.current) + } + SDK_INT >= 31 && dynamicColors && !darkTheme -> { + dynamicLightColorScheme(LocalContext.current) + } + darkTheme -> darkScheme + else -> lightScheme + } + MaterialTheme( + colorScheme = colorScheme, + ) { + Surface(content = content) + } +} diff --git a/next/src/main/kotlin/org/fdroid/ui/apps/InstalledAppRow.kt b/next/src/main/kotlin/org/fdroid/ui/apps/InstalledAppRow.kt index 2f34bca2f..d89fdc115 100644 --- a/next/src/main/kotlin/org/fdroid/ui/apps/InstalledAppRow.kt +++ b/next/src/main/kotlin/org/fdroid/ui/apps/InstalledAppRow.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.BadgeIcon import org.fdroid.ui.utils.Names diff --git a/next/src/main/kotlin/org/fdroid/ui/apps/InstallingAppRow.kt b/next/src/main/kotlin/org/fdroid/ui/apps/InstallingAppRow.kt index 1b8cedf4c..ac6826d8f 100644 --- a/next/src/main/kotlin/org/fdroid/ui/apps/InstallingAppRow.kt +++ b/next/src/main/kotlin/org/fdroid/ui/apps/InstallingAppRow.kt @@ -20,8 +20,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.install.InstallState +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt b/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt index c3a61aafc..4d6488de5 100644 --- a/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt +++ b/next/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt @@ -43,9 +43,9 @@ import androidx.navigation3.runtime.NavKey import org.fdroid.R import org.fdroid.database.AppListSortOrder import org.fdroid.database.AppListSortOrder.LAST_UPDATED -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.install.InstallConfirmationState import org.fdroid.ui.BottomBar +import org.fdroid.ui.FDroidContent import org.fdroid.ui.NavigationKey import org.fdroid.ui.lists.TopSearchBar import org.fdroid.ui.utils.BigLoadingIndicator diff --git a/next/src/main/kotlin/org/fdroid/ui/apps/MyAppsList.kt b/next/src/main/kotlin/org/fdroid/ui/apps/MyAppsList.kt index 832254300..2b5970153 100644 --- a/next/src/main/kotlin/org/fdroid/ui/apps/MyAppsList.kt +++ b/next/src/main/kotlin/org/fdroid/ui/apps/MyAppsList.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R import org.fdroid.database.NotAvailable -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.getMyAppsInfo import org.fdroid.ui.utils.myAppsModel diff --git a/next/src/main/kotlin/org/fdroid/ui/apps/NotAvailableDialog.kt b/next/src/main/kotlin/org/fdroid/ui/apps/NotAvailableDialog.kt index d7bb62c89..d9cf84763 100644 --- a/next/src/main/kotlin/org/fdroid/ui/apps/NotAvailableDialog.kt +++ b/next/src/main/kotlin/org/fdroid/ui/apps/NotAvailableDialog.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.startActivitySafe @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/apps/UpdatableAppRow.kt b/next/src/main/kotlin/org/fdroid/ui/apps/UpdatableAppRow.kt index b84837b04..29ca70a8a 100644 --- a/next/src/main/kotlin/org/fdroid/ui/apps/UpdatableAppRow.kt +++ b/next/src/main/kotlin/org/fdroid/ui/apps/UpdatableAppRow.kt @@ -32,7 +32,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.BadgeIcon import org.fdroid.ui.utils.ExpandIconArrow diff --git a/next/src/main/kotlin/org/fdroid/ui/categories/CategoryChip.kt b/next/src/main/kotlin/org/fdroid/ui/categories/CategoryChip.kt index acd3fe678..9cfb486b3 100644 --- a/next/src/main/kotlin/org/fdroid/ui/categories/CategoryChip.kt +++ b/next/src/main/kotlin/org/fdroid/ui/categories/CategoryChip.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable fun CategoryChip( diff --git a/next/src/main/kotlin/org/fdroid/ui/categories/CategoryList.kt b/next/src/main/kotlin/org/fdroid/ui/categories/CategoryList.kt index 678f6fe2e..0e18ff70a 100644 --- a/next/src/main/kotlin/org/fdroid/ui/categories/CategoryList.kt +++ b/next/src/main/kotlin/org/fdroid/ui/categories/CategoryList.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation3.runtime.NavKey import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.NavigationKey import org.fdroid.ui.lists.AppListType diff --git a/next/src/main/kotlin/org/fdroid/ui/crash/Crash.kt b/next/src/main/kotlin/org/fdroid/ui/crash/Crash.kt index c869cbc1d..fdc57cd5b 100644 --- a/next/src/main/kotlin/org/fdroid/ui/crash/Crash.kt +++ b/next/src/main/kotlin/org/fdroid/ui/crash/Crash.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import kotlinx.coroutines.launch import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.utils.getLogName @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/crash/CrashActivity.kt b/next/src/main/kotlin/org/fdroid/ui/crash/CrashActivity.kt index 5f3372fba..891a1bac9 100644 --- a/next/src/main/kotlin/org/fdroid/ui/crash/CrashActivity.kt +++ b/next/src/main/kotlin/org/fdroid/ui/crash/CrashActivity.kt @@ -8,7 +8,7 @@ import androidx.activity.enableEdgeToEdge import mu.KotlinLogging import org.acra.ReportField import org.acra.dialog.CrashReportDialogHelper -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import java.io.IOException class CrashActivity : ComponentActivity() { diff --git a/next/src/main/kotlin/org/fdroid/ui/crash/CrashContent.kt b/next/src/main/kotlin/org/fdroid/ui/crash/CrashContent.kt index 6dc52d809..739f6a7a4 100644 --- a/next/src/main/kotlin/org/fdroid/ui/crash/CrashContent.kt +++ b/next/src/main/kotlin/org/fdroid/ui/crash/CrashContent.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable fun CrashContent( diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt b/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt index 5c2679534..26807650e 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AntiFeatures.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.ExpandableSection import org.fdroid.ui.utils.testApp diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt index e90fe6530..dd2c444c4 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetails.kt @@ -62,8 +62,8 @@ import androidx.compose.ui.unit.dp import androidx.core.os.LocaleListCompat import org.fdroid.LocaleChooser.getBestLocale import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.install.InstallState +import org.fdroid.ui.FDroidContent import org.fdroid.ui.NavigationKey import org.fdroid.ui.categories.CategoryChip import org.fdroid.ui.icons.License diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt index d41b10e6f..02e816bd2 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsHeader.kt @@ -57,8 +57,8 @@ import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import coil3.compose.AsyncImage import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.install.InstallState +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.InstalledBadge import org.fdroid.ui.utils.asRelativeTimeString diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsMenu.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsMenu.kt index 602ff1da2..18837858a 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsMenu.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsMenu.kt @@ -20,7 +20,7 @@ import androidx.compose.ui.platform.LocalResources import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.startActivitySafe import org.fdroid.ui.utils.testApp diff --git a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt index e87c4adf6..4ae495622 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/AppDetailsWarnings.kt @@ -25,8 +25,8 @@ import org.fdroid.database.KnownVulnerability import org.fdroid.database.NoCompatibleSigner import org.fdroid.database.NotAvailable import org.fdroid.database.UpdateInOtherRepo -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.index.v2.ANTI_FEATURE_KNOWN_VULNERABILITY +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.testApp @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/details/RepoChooser.kt b/next/src/main/kotlin/org/fdroid/ui/details/RepoChooser.kt index b32beb3d5..812310408 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/RepoChooser.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/RepoChooser.kt @@ -34,8 +34,8 @@ import androidx.core.os.LocaleListCompat import io.ktor.client.engine.ProxyConfig import org.fdroid.R import org.fdroid.database.Repository -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.index.IndexFormatVersion.TWO +import org.fdroid.ui.FDroidContent import org.fdroid.ui.repositories.RepoIcon import org.fdroid.ui.utils.FDroidOutlineButton @@ -175,7 +175,7 @@ private fun getRepoString(repo: Repository, isPreferred: Boolean) = buildAnnotat @Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) fun RepoChooserSingleRepoPreview() { val repo1 = Repository(1L, "1", 1L, TWO, "null", 1L, 1, 1L) - FDroidContent(pureBlack = true) { + FDroidContent { RepoChooser(listOf(repo1), 1L, 1L, null, {}, {}) } } @@ -186,7 +186,7 @@ fun RepoChooserPreview() { val repo1 = Repository(1L, "1", 1L, TWO, "null", 1L, 1, 1L) val repo2 = Repository(2L, "2", 2L, TWO, "null", 2L, 2, 2L) val repo3 = Repository(3L, "2", 3L, TWO, "null", 3L, 3, 3L) - FDroidContent(pureBlack = true) { + FDroidContent { RepoChooser(listOf(repo1, repo2, repo3), 1L, 1L, null, {}, {}) } } @@ -197,7 +197,7 @@ fun RepoChooserNightPreview() { val repo1 = Repository(1L, "1", 1L, TWO, "null", 1L, 1, 1L) val repo2 = Repository(2L, "2", 2L, TWO, "null", 2L, 2, 2L) val repo3 = Repository(3L, "2", 3L, TWO, "null", 3L, 3, 3L) - FDroidContent(pureBlack = true) { + FDroidContent { RepoChooser(listOf(repo1, repo2, repo3), 1L, 2L, null, {}, {}) } } diff --git a/next/src/main/kotlin/org/fdroid/ui/details/Screenshots.kt b/next/src/main/kotlin/org/fdroid/ui/details/Screenshots.kt index 01ca50a4a..d4d595f5c 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/Screenshots.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/Screenshots.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.testApp diff --git a/next/src/main/kotlin/org/fdroid/ui/details/TechnicalInfo.kt b/next/src/main/kotlin/org/fdroid/ui/details/TechnicalInfo.kt index eced4bd3f..a9b33ab99 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/TechnicalInfo.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/TechnicalInfo.kt @@ -13,7 +13,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.testApp @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt b/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt index aad72b2a9..c8dadc9a2 100644 --- a/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt +++ b/next/src/main/kotlin/org/fdroid/ui/details/Versions.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import org.fdroid.R import org.fdroid.database.AppVersion -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.ExpandIconChevron import org.fdroid.ui.utils.ExpandableSection import org.fdroid.ui.utils.FDroidOutlineButton diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/AppCarousel.kt b/next/src/main/kotlin/org/fdroid/ui/discover/AppCarousel.kt index 15b96e4ec..4b289c907 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/AppCarousel.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/AppCarousel.kt @@ -27,7 +27,7 @@ import androidx.compose.ui.semantics.hideFromAccessibility import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.InstalledBadge import org.fdroid.ui.utils.Names diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/AppsSearch.kt b/next/src/main/kotlin/org/fdroid/ui/discover/AppsSearch.kt index 296156d05..d8858ee2d 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/AppsSearch.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/AppsSearch.kt @@ -35,7 +35,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.NavigationKey import org.fdroid.ui.categories.CategoryChip import org.fdroid.ui.categories.CategoryItem diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt b/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt index cb26c5cd5..e3c9f22d7 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt @@ -43,8 +43,8 @@ import androidx.compose.ui.unit.dp import androidx.navigation3.runtime.NavKey import kotlinx.coroutines.launch import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.ui.BottomBar +import org.fdroid.ui.FDroidContent import org.fdroid.ui.MainOverFlowMenu import org.fdroid.ui.NavigationKey import org.fdroid.ui.categories.CategoryList diff --git a/next/src/main/kotlin/org/fdroid/ui/icons/License.kt b/next/src/main/kotlin/org/fdroid/ui/icons/License.kt index 9df37380c..58f44edb7 100644 --- a/next/src/main/kotlin/org/fdroid/ui/icons/License.kt +++ b/next/src/main/kotlin/org/fdroid/ui/icons/License.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.path import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent val License: ImageVector get() { diff --git a/next/src/main/kotlin/org/fdroid/ui/icons/PackageVariant.kt b/next/src/main/kotlin/org/fdroid/ui/icons/PackageVariant.kt index a62418010..58e31b823 100644 --- a/next/src/main/kotlin/org/fdroid/ui/icons/PackageVariant.kt +++ b/next/src/main/kotlin/org/fdroid/ui/icons/PackageVariant.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.graphics.vector.ImageVector.Builder import androidx.compose.ui.graphics.vector.path import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent val PackageVariant: ImageVector get() { diff --git a/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt b/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt index c02082776..3024de7bb 100644 --- a/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt +++ b/next/src/main/kotlin/org/fdroid/ui/lists/AppList.kt @@ -54,7 +54,7 @@ import com.viktormykhailiv.compose.hints.rememberHintAnchorState import com.viktormykhailiv.compose.hints.rememberHintController import org.fdroid.R import org.fdroid.database.AppListSortOrder -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.BigLoadingIndicator import org.fdroid.ui.utils.OnboardingCard import org.fdroid.ui.utils.getAppListInfo diff --git a/next/src/main/kotlin/org/fdroid/ui/lists/AppListRow.kt b/next/src/main/kotlin/org/fdroid/ui/lists/AppListRow.kt index 5e9f161f3..f234d1476 100644 --- a/next/src/main/kotlin/org/fdroid/ui/lists/AppListRow.kt +++ b/next/src/main/kotlin/org/fdroid/ui/lists/AppListRow.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.InstalledBadge diff --git a/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt b/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt index 33aed1b46..a3fbde1d8 100644 --- a/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt +++ b/next/src/main/kotlin/org/fdroid/ui/lists/AppsFilter.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R import org.fdroid.database.AppListSortOrder -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.categories.CategoryChip import org.fdroid.ui.categories.CategoryItem import org.fdroid.ui.icons.PackageVariant diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt index f97b47b65..097454d38 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/Repositories.kt @@ -36,7 +36,7 @@ import com.viktormykhailiv.compose.hints.rememberHint import com.viktormykhailiv.compose.hints.rememberHintAnchorState import com.viktormykhailiv.compose.hints.rememberHintController import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.BigLoadingIndicator import org.fdroid.ui.utils.OnboardingCard import org.fdroid.ui.utils.getHintOverlayColor diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/RepositoryRow.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/RepositoryRow.kt index 2a6da87fe..49d5f4c77 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/RepositoryRow.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/RepositoryRow.kt @@ -16,7 +16,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.AsyncShimmerImage import org.fdroid.ui.utils.BadgeIcon import org.fdroid.ui.utils.asRelativeTimeString diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoErrorScreen.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoErrorScreen.kt index 679b6c1d9..628dac0e3 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoErrorScreen.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoErrorScreen.kt @@ -26,13 +26,13 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.repo.AddRepoError import org.fdroid.repo.AddRepoError.ErrorType.INVALID_FINGERPRINT import org.fdroid.repo.AddRepoError.ErrorType.INVALID_INDEX import org.fdroid.repo.AddRepoError.ErrorType.IO_ERROR import org.fdroid.repo.AddRepoError.ErrorType.IS_ARCHIVE_REPO import org.fdroid.repo.AddRepoError.ErrorType.UNKNOWN_SOURCES_DISALLOWED +import org.fdroid.ui.FDroidContent import java.io.IOException @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoIntro.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoIntro.kt index 606ad7191..9ffb6eedb 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoIntro.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoIntro.kt @@ -67,8 +67,8 @@ import com.journeyapps.barcodescanner.ScanOptions import com.journeyapps.barcodescanner.ScanOptions.QR_CODE import kotlinx.coroutines.launch import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.repo.None +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.ExpandIconArrow import org.fdroid.ui.utils.FDroidButton import org.fdroid.ui.utils.FDroidOutlineButton diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoPreviewScreen.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoPreviewScreen.kt index 399f3217c..406e72b91 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoPreviewScreen.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoPreviewScreen.kt @@ -22,11 +22,11 @@ import io.ktor.client.engine.ProxyConfig import org.fdroid.R import org.fdroid.database.MinimalApp import org.fdroid.download.getImageModel -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.index.v2.FileV2 import org.fdroid.repo.FetchResult.IsNewRepoAndNewMirror import org.fdroid.repo.FetchResult.IsNewRepository import org.fdroid.repo.Fetching +import org.fdroid.ui.FDroidContent import org.fdroid.ui.lists.AppListItem import org.fdroid.ui.lists.AppListRow import org.fdroid.ui.utils.getRepository @@ -139,7 +139,7 @@ private fun Preview() { override fun getIcon(localeList: LocaleListCompat): FileV2? = null } - FDroidContent(pureBlack = true) { + FDroidContent { AddRepoPreviewScreen( Fetching(address, repo, listOf(app1, app2, app3), IsNewRepository), proxyConfig = null, diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoProgressScreen.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoProgressScreen.kt index 01ee331a4..80aae4260 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoProgressScreen.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/add/AddRepoProgressScreen.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable @OptIn(ExperimentalMaterial3ExpressiveApi::class) @@ -40,7 +40,7 @@ fun AddRepoProgressScreen(text: String, modifier: Modifier = Modifier) { @Preview @Composable private fun Preview() { - FDroidContent(pureBlack = true) { + FDroidContent { AddRepoProgressScreen(stringResource(R.string.repo_state_fetching)) } } diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/add/RepoPreviewHeader.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/add/RepoPreviewHeader.kt index 84a66fcb0..bbd2a33e8 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/add/RepoPreviewHeader.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/add/RepoPreviewHeader.kt @@ -26,13 +26,13 @@ import androidx.compose.ui.unit.dp import androidx.core.os.LocaleListCompat import io.ktor.client.engine.ProxyConfig import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.repo.FetchResult.IsExistingMirror import org.fdroid.repo.FetchResult.IsExistingRepository import org.fdroid.repo.FetchResult.IsNewMirror import org.fdroid.repo.FetchResult.IsNewRepoAndNewMirror import org.fdroid.repo.FetchResult.IsNewRepository import org.fdroid.repo.Fetching +import org.fdroid.ui.FDroidContent import org.fdroid.ui.repositories.RepoIcon import org.fdroid.ui.utils.FDroidButton import org.fdroid.ui.utils.asRelativeTimeString diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/details/BasicAuth.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/details/BasicAuth.kt index 79e25569b..171a3bda1 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/details/BasicAuth.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/details/BasicAuth.kt @@ -26,7 +26,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.FDroidOutlineButton @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/details/OfficialMirrors.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/details/OfficialMirrors.kt index 0f742da86..a1ff4a819 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/details/OfficialMirrors.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/details/OfficialMirrors.kt @@ -20,7 +20,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R import org.fdroid.download.Mirror -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.ExpandableSection @Composable diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetails.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetails.kt index e2ce9c315..a5b61abb5 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetails.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetails.kt @@ -38,8 +38,8 @@ import com.viktormykhailiv.compose.hints.rememberHint import com.viktormykhailiv.compose.hints.rememberHintAnchorState import com.viktormykhailiv.compose.hints.rememberHintController import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.repo.RepoUpdateWorker +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.BigLoadingIndicator import org.fdroid.ui.utils.OnboardingCard import org.fdroid.ui.utils.getHintOverlayColor diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsContent.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsContent.kt index 5f0282b3b..056d17220 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsContent.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsContent.kt @@ -20,7 +20,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R import org.fdroid.database.Repository -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.ExpandableSection import org.fdroid.ui.utils.getRepoDetailsInfo diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsHeader.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsHeader.kt index 22155f99d..23d4e02b6 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsHeader.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoDetailsHeader.kt @@ -29,7 +29,7 @@ import androidx.core.os.LocaleListCompat import io.ktor.client.engine.ProxyConfig import org.fdroid.R import org.fdroid.database.Repository -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.repositories.RepoIcon import org.fdroid.ui.utils.FDroidOutlineButton import org.fdroid.ui.utils.asRelativeTimeString diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoSettings.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoSettings.kt index 84d34d9bb..fcecb8f50 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoSettings.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/details/RepoSettings.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R import org.fdroid.database.Repository -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.ExpandableSection import org.fdroid.ui.utils.FDroidOutlineButton import org.fdroid.ui.utils.FDroidSwitchRow diff --git a/next/src/main/kotlin/org/fdroid/ui/repositories/details/UserMirrors.kt b/next/src/main/kotlin/org/fdroid/ui/repositories/details/UserMirrors.kt index cafcd81eb..73d9e4bd6 100644 --- a/next/src/main/kotlin/org/fdroid/ui/repositories/details/UserMirrors.kt +++ b/next/src/main/kotlin/org/fdroid/ui/repositories/details/UserMirrors.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R import org.fdroid.download.Mirror -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.ExpandableSection import org.fdroid.ui.utils.FDroidOutlineButton diff --git a/next/src/main/kotlin/org/fdroid/ui/settings/PreferenceProxy.kt b/next/src/main/kotlin/org/fdroid/ui/settings/PreferenceProxy.kt index 98cd7b57d..a8bb30fdb 100644 --- a/next/src/main/kotlin/org/fdroid/ui/settings/PreferenceProxy.kt +++ b/next/src/main/kotlin/org/fdroid/ui/settings/PreferenceProxy.kt @@ -24,9 +24,9 @@ import androidx.compose.ui.tooling.preview.Preview import me.zhanghai.compose.preference.ProvidePreferenceLocals import me.zhanghai.compose.preference.textFieldPreference import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_PROXY import org.fdroid.settings.SettingsConstants.PREF_KEY_PROXY +import org.fdroid.ui.FDroidContent import java.net.InetSocketAddress fun LazyListScope.preferenceProxy( diff --git a/next/src/main/kotlin/org/fdroid/ui/settings/Settings.kt b/next/src/main/kotlin/org/fdroid/ui/settings/Settings.kt index e29a477c5..ced709077 100644 --- a/next/src/main/kotlin/org/fdroid/ui/settings/Settings.kt +++ b/next/src/main/kotlin/org/fdroid/ui/settings/Settings.kt @@ -16,6 +16,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.BrightnessMedium +import androidx.compose.material.icons.filled.ColorLens import androidx.compose.material.icons.filled.Notifications import androidx.compose.material.icons.filled.Save import androidx.compose.material.icons.filled.SystemSecurityUpdate @@ -54,15 +55,17 @@ import me.zhanghai.compose.preference.preferenceCategory import me.zhanghai.compose.preference.rememberPreferenceState import me.zhanghai.compose.preference.switchPreference import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_AUTO_UPDATES +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_DYNAMIC_COLORS import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_PROXY import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_REPO_UPDATES import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_THEME import org.fdroid.settings.SettingsConstants.PREF_KEY_AUTO_UPDATES +import org.fdroid.settings.SettingsConstants.PREF_KEY_DYNAMIC_COLORS import org.fdroid.settings.SettingsConstants.PREF_KEY_PROXY import org.fdroid.settings.SettingsConstants.PREF_KEY_REPO_UPDATES import org.fdroid.settings.SettingsConstants.PREF_KEY_THEME +import org.fdroid.ui.FDroidContent import org.fdroid.ui.utils.asRelativeTimeString import org.fdroid.ui.utils.startActivitySafe import org.fdroid.utils.getLogName @@ -139,6 +142,23 @@ fun Settings( }, summary = { Text(text = "${themeToString(it)}") }, ) + if (SDK_INT >= 31) switchPreference( + key = PREF_KEY_DYNAMIC_COLORS, + defaultValue = PREF_DEFAULT_DYNAMIC_COLORS, + title = { + Text(stringResource(R.string.pref_dyn_colors_title)) + }, + icon = { + Icon( + imageVector = Icons.Default.ColorLens, + contentDescription = null, + modifier = Modifier.semantics { hideFromAccessibility() }, + ) + }, + summary = { + Text(text = stringResource(R.string.pref_dyn_colors_summary)) + }, + ) if (SDK_INT >= 33) preference( key = "languages", icon = { diff --git a/next/src/main/kotlin/org/fdroid/ui/utils/AsyncShimmerImage.kt b/next/src/main/kotlin/org/fdroid/ui/utils/AsyncShimmerImage.kt index 5634e4c46..8257aa8e7 100644 --- a/next/src/main/kotlin/org/fdroid/ui/utils/AsyncShimmerImage.kt +++ b/next/src/main/kotlin/org/fdroid/ui/utils/AsyncShimmerImage.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable fun AsyncShimmerImage( diff --git a/next/src/main/kotlin/org/fdroid/ui/utils/BadgeIcon.kt b/next/src/main/kotlin/org/fdroid/ui/utils/BadgeIcon.kt index 526464087..67a74fac5 100644 --- a/next/src/main/kotlin/org/fdroid/ui/utils/BadgeIcon.kt +++ b/next/src/main/kotlin/org/fdroid/ui/utils/BadgeIcon.kt @@ -22,7 +22,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable fun BadgeIcon( diff --git a/next/src/main/kotlin/org/fdroid/ui/utils/BigLoadingIndicator.kt b/next/src/main/kotlin/org/fdroid/ui/utils/BigLoadingIndicator.kt index e69b53db8..ab3acc151 100644 --- a/next/src/main/kotlin/org/fdroid/ui/utils/BigLoadingIndicator.kt +++ b/next/src/main/kotlin/org/fdroid/ui/utils/BigLoadingIndicator.kt @@ -10,7 +10,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable @OptIn(ExperimentalMaterial3ExpressiveApi::class) diff --git a/next/src/main/kotlin/org/fdroid/ui/utils/FDroidSwitchRow.kt b/next/src/main/kotlin/org/fdroid/ui/utils/FDroidSwitchRow.kt index 1ee1b475f..4be3f521a 100644 --- a/next/src/main/kotlin/org/fdroid/ui/utils/FDroidSwitchRow.kt +++ b/next/src/main/kotlin/org/fdroid/ui/utils/FDroidSwitchRow.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.semantics.Role import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable fun FDroidSwitchRow( diff --git a/next/src/main/kotlin/org/fdroid/ui/utils/OnboardingCard.kt b/next/src/main/kotlin/org/fdroid/ui/utils/OnboardingCard.kt index d337d8e2e..4ef3969cb 100644 --- a/next/src/main/kotlin/org/fdroid/ui/utils/OnboardingCard.kt +++ b/next/src/main/kotlin/org/fdroid/ui/utils/OnboardingCard.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.fdroid.R -import org.fdroid.fdroid.ui.theme.FDroidContent +import org.fdroid.ui.FDroidContent @Composable @OptIn(ExperimentalMaterial3Api::class) diff --git a/next/src/main/res/values/strings-next.xml b/next/src/main/res/values/strings-next.xml index 466fffbae..afc8afdac 100644 --- a/next/src/main/res/values/strings-next.xml +++ b/next/src/main/res/values/strings-next.xml @@ -126,6 +126,8 @@ Check for updates + Use system colors + Apply dynamic colors from your system settings Opens system language settings Download and update apps daily when the device isn\'t being used Auto-updates disabled • Apps will need to be updated manually