From 05680afcd5cbc920253856b69826fc38abf10be6 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sat, 29 Jan 2022 19:26:29 +0100 Subject: [PATCH] Remove ComposeActivity --- ui/src/main/AndroidManifest.xml | 11 -- .../launcher2/ui/activity/ComposeActivity.kt | 121 ------------ .../ui/screens/LauncherMainScreen.kt | 148 --------------- .../screens/settings/SettingsAboutScreen.kt | 170 ----------------- .../settings/SettingsAccountsScreen.kt | 173 ------------------ .../screens/settings/SettingsBadgesScreen.kt | 17 -- .../screens/settings/SettingsLicenseScreen.kt | 93 ---------- .../ui/screens/settings/SettingsMainScreen.kt | 72 -------- 8 files changed, 805 deletions(-) delete mode 100644 ui/src/main/java/de/mm20/launcher2/ui/activity/ComposeActivity.kt delete mode 100644 ui/src/main/java/de/mm20/launcher2/ui/screens/LauncherMainScreen.kt delete mode 100644 ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAboutScreen.kt delete mode 100644 ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAccountsScreen.kt delete mode 100644 ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsBadgesScreen.kt delete mode 100644 ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsLicenseScreen.kt delete mode 100644 ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsMainScreen.kt diff --git a/ui/src/main/AndroidManifest.xml b/ui/src/main/AndroidManifest.xml index 76ce4d3b..1ab54c37 100644 --- a/ui/src/main/AndroidManifest.xml +++ b/ui/src/main/AndroidManifest.xml @@ -30,17 +30,6 @@ android:resource="@xml/debug_shortcuts" /> - - - - (android.R.id.content).doOnLayout { - windowSize = Size(it.width.toFloat(), it.height.toFloat()) - } - - if (windowSize.height <= 0 || windowSize.width <= 0) return@setContent - - val colorSchemePreference = Settings.AppearanceSettings.ColorScheme.Default - - val colorScheme = when (colorSchemePreference) { - Settings.AppearanceSettings.ColorScheme.BlackAndWhite -> BlackWhiteColorPalette() - else -> DefaultColorPalette() - } - - - - ProvideWindowInsets { - CompositionLocalProvider( - LocalAppWidgetHost provides widgetHost, - LocalWindowSize provides windowSize, - LocalColorScheme provides colorScheme, - LocalNavController provides navController - ) { - LauncherTheme { - AnimatedNavHost( - navController = navController, - startDestination = "home", - exitTransition = { fadeOut(tween(300, 300)) }, - enterTransition = { fadeIn(tween(200)) }, - popEnterTransition = { fadeIn(tween(0)) }, - popExitTransition = { fadeOut(tween(200)) }, - ) { - composable("home") { - LauncherMainScreen() - } - composable("settings") { - SettingsMainScreen() - } - composable("settings/about") { - SettingsAboutScreen() - } - composable("settings/badges") { - SettingsBadgesScreen() - } - composable("settings/accounts") { - SettingsAccountScreen() - } - composable("settings/appearance") { - AppearanceSettingsScreen() - } - composable( - "settings/license?library={libraryName}", - arguments = listOf(navArgument("libraryName") { - nullable = true - }) - ) { - SettingsLicenseScreen(it.arguments?.getString("libraryName")) - } - } - } - } - } - } - } - - override fun onStart() { - super.onStart() - widgetHost.startListening() - } - - override fun onStop() { - super.onStop() - widgetHost.stopListening() - } -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/screens/LauncherMainScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/screens/LauncherMainScreen.kt deleted file mode 100644 index 9b5c9c31..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/screens/LauncherMainScreen.kt +++ /dev/null @@ -1,148 +0,0 @@ -package de.mm20.launcher2.ui.screens - -import androidx.activity.compose.BackHandler -import androidx.compose.animation.ExperimentalAnimationApi -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.foundation.rememberScrollState -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.* -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import com.google.accompanist.insets.systemBarsPadding -import com.google.accompanist.pager.ExperimentalPagerApi -import com.google.accompanist.pager.HorizontalPager -import com.google.accompanist.pager.rememberPagerState -import com.google.accompanist.systemuicontroller.rememberSystemUiController -import de.mm20.launcher2.ui.component.NavBarEffects -import de.mm20.launcher2.ui.component.SearchBar -import de.mm20.launcher2.ui.component.SearchColumn -import de.mm20.launcher2.ui.component.WidgetColumn -import de.mm20.launcher2.ui.locals.LocalWindowSize -import de.mm20.launcher2.ui.toPixels -import kotlinx.coroutines.InternalCoroutinesApi -import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.launch - -@OptIn( - ExperimentalAnimationApi::class, - ExperimentalPagerApi::class, - InternalCoroutinesApi::class -) -@Composable -fun LauncherMainScreen() { - - val systemUiController = rememberSystemUiController() - - val pagerState = rememberPagerState() - val searchColumnState = rememberLazyListState() - val widgetColumnState = rememberScrollState() - - val isLightTheme = androidx.compose.material.MaterialTheme.colors.isLight - - val windowHeight = LocalWindowSize.current.height - - LaunchedEffect(pagerState) { - val offsetFlow = snapshotFlow { pagerState.currentPageOffset + pagerState.currentPage } - val scrollFlow = snapshotFlow { widgetColumnState.value } - - offsetFlow.combine(scrollFlow) { pageOffset, scrollValue -> - pageOffset > 0.5f || scrollValue > windowHeight / 2 - }.collect { proposeDarkIcons -> - if (proposeDarkIcons) { - systemUiController.setSystemBarsColor( - color = Color.Transparent, - isNavigationBarContrastEnforced = false, - darkIcons = isLightTheme - ) - } else { - systemUiController.setStatusBarColor( - color = Color.Transparent, - darkIcons = false //TODO Add preference to control that - ) - systemUiController.setNavigationBarColor( - color = Color.Transparent, - navigationBarContrastEnforced = false, - darkIcons = false //TODO Add preference to control that - ) - } - } - } - - var searchBarOffset by remember { mutableStateOf(0f) } - - var lastWidgetScrollPosition by remember { mutableStateOf(0) } - - searchBarOffset = run { - val lastScrollPos = lastWidgetScrollPosition - val scrollPos = widgetColumnState.value - lastWidgetScrollPosition = scrollPos - (searchBarOffset - (lastScrollPos - scrollPos) / 100.dp.toPixels()).coerceIn(0f, 1f) - } - - val scope = rememberCoroutineScope() - - - Box( - modifier = Modifier - .fillMaxSize() - ) { - BackHandler { - scope.launch { - if (pagerState.currentPage > 0) { - pagerState.animateScrollToPage(0) - } else if (widgetColumnState.value > 0) { - widgetColumnState.animateScrollTo(0) - } - } - } - NavBarEffects( - modifier = Modifier.fillMaxSize() - ) - HorizontalPager( - state = pagerState, - modifier = Modifier.fillMaxSize(), - count = 2 - ) { page -> - when (page) { - 0 -> WidgetColumn( - modifier = Modifier.fillMaxSize(), - scrollState = widgetColumnState - ) - 1 -> SearchColumn( - modifier = Modifier.fillMaxSize(), - listState = searchColumnState - ) - } - } - val scope = rememberCoroutineScope() - SearchBar( - modifier = Modifier - .systemBarsPadding() - .padding(8.dp), - pagerState = pagerState, - widgetColumnState = widgetColumnState, - offScreen = searchBarOffset, - onFocus = { - scope.launch { - pagerState.animateScrollToPage(1) - } - } - ) - } - -} - -enum class Page { - Home, Search -} - -enum class SwipeState { - Initial, - Swiping -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAboutScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAboutScreen.kt deleted file mode 100644 index 3fa9475e..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAboutScreen.kt +++ /dev/null @@ -1,170 +0,0 @@ -package de.mm20.launcher2.ui.screens.settings - -import android.content.Intent -import android.net.Uri -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Info -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.runtime.Composable -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource -import androidx.core.content.FileProvider -import de.mm20.launcher2.crashreporter.CrashReporter -import de.mm20.launcher2.debug.DebugInformationDumper -import de.mm20.launcher2.ktx.tryStartActivity -import de.mm20.launcher2.licenses.OpenSourceLicenses -import de.mm20.launcher2.ui.R -import de.mm20.launcher2.ui.component.preferences.Preference -import de.mm20.launcher2.ui.component.preferences.PreferenceCategory -import de.mm20.launcher2.ui.component.preferences.PreferenceScreen -import de.mm20.launcher2.ui.icons.Fdroid -import de.mm20.launcher2.ui.icons.GitHub -import de.mm20.launcher2.ui.icons.Telegram -import de.mm20.launcher2.ui.locals.LocalNavController -import kotlinx.coroutines.launch -import java.io.File - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun SettingsAboutScreen() { - val context = LocalContext.current - val navController = LocalNavController.current - val scope = rememberCoroutineScope() - PreferenceScreen( - title = stringResource(id = R.string.preference_screen_about), - ) { - item { - PreferenceCategory { - val version = context.packageManager.getPackageInfo( - context.packageName, - 0 - ).versionName - Preference( - title = stringResource(id = R.string.preference_version), - summary = version - ) - } - } - item { - PreferenceCategory(title = stringResource(id = R.string.preference_category_license)) { - Preference( - icon = Icons.Rounded.Info, - title = stringResource(id = R.string.preference_about_license), - summary = stringResource(id = R.string.preference_about_license_summary), - onClick = { - navController?.navigate("settings/license") - } - ) - } - } - item { - PreferenceCategory(title = stringResource(id = R.string.preference_category_links)) { - Preference( - icon = Icons.Rounded.Telegram, - title = stringResource(id = R.string.preference_about_telegram), - summary = "t.me/Kvaesitso", - onClick = { - context.startActivity(Intent(Intent.ACTION_VIEW).apply { - data = Uri.parse("https://t.me/Kvaesitso") - }) - } - ) - Preference( - icon = Icons.Rounded.Fdroid, - title = stringResource(id = R.string.preference_about_fdroid), - summary = "github.com/MM2-0/fdroid", - onClick = { - context.startActivity(Intent(Intent.ACTION_VIEW).apply { - data = - Uri.parse("https://raw.githubusercontent.com/MM2-0/fdroid/master/fdroid/repo") - }) - } - ) - Preference( - icon = Icons.Rounded.GitHub, - title = "GitHub", - summary = "github.com/MM2-0/Kvaesitso", - onClick = { - context.startActivity(Intent(Intent.ACTION_VIEW).apply { - data = Uri.parse("https://github.com/MM2-0/Kvaesitso") - }) - } - ) - } - } - item { - PreferenceCategory(title = stringResource(id = R.string.preference_category_debug)) { - Preference( - title = stringResource(id = R.string.preference_crash_reporter), - onClick = { - context.startActivity(CrashReporter.getLaunchIntent()) - } - ) - Preference( - title = stringResource(id = R.string.preference_export_debug), - onClick = { - scope.launch { - val path = DebugInformationDumper().dump(context) - /*val result = scaffoldState.snackbarHostState.showSnackbar( - context.getString(R.string.debug_export_information_file, path), - actionLabel = context.getString(R.string.menu_share), - duration = SnackbarDuration.Long - ) - if (result == SnackbarResult.ActionPerformed) { - context.tryStartActivity(Intent(Intent.ACTION_SEND).apply { - type = "text/plain" - putExtra( - Intent.EXTRA_STREAM, FileProvider.getUriForFile( - context, - context.applicationContext.packageName + ".fileprovider", - File(path) - ) - ) - }) - }*/ - } - } - ) - Preference( - title = stringResource(id = R.string.preference_export_databases), - onClick = { - scope.launch { - val path = DebugInformationDumper().exportDatabases(context) - /*val result = scaffoldState.snackbarHostState.showSnackbar( - context.getString(R.string.debug_export_information_file, path), - actionLabel = context.getString(R.string.menu_share), - duration = SnackbarDuration.Long - ) - if (result == SnackbarResult.ActionPerformed) { - context.tryStartActivity(Intent(Intent.ACTION_SEND).apply { - type = "application/x-sqlite3" - putExtra( - Intent.EXTRA_STREAM, FileProvider.getUriForFile( - context, - context.applicationContext.packageName + ".fileprovider", - File(path) - ) - ) - }) - }*/ - } - } - ) - } - } - item { - PreferenceCategory(title = stringResource(id = R.string.preference_category_licenses)) { - for (library in OpenSourceLicenses.sortedBy { it.name.lowercase() }) { - Preference( - title = library.name, - summary = library.description, - onClick = { - navController?.navigate("settings/license?library=${library.name}") - } - ) - } - } - } - } -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAccountsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAccountsScreen.kt deleted file mode 100644 index de4f93f3..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsAccountsScreen.kt +++ /dev/null @@ -1,173 +0,0 @@ -package de.mm20.launcher2.ui.screens.settings - -import android.app.Activity -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.runtime.* -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource -import de.mm20.launcher2.gservices.GoogleAccount -import de.mm20.launcher2.gservices.GoogleApiHelper -import de.mm20.launcher2.msservices.MicrosoftGraphApiHelper -import de.mm20.launcher2.msservices.MsUser -import de.mm20.launcher2.nextcloud.NcUser -import de.mm20.launcher2.nextcloud.NextcloudApiHelper -import de.mm20.launcher2.owncloud.OcUser -import de.mm20.launcher2.owncloud.OwncloudClient -import de.mm20.launcher2.ui.R -import de.mm20.launcher2.ui.component.preferences.Preference -import de.mm20.launcher2.ui.component.preferences.PreferenceCategory -import de.mm20.launcher2.ui.component.preferences.PreferenceScreen -import kotlinx.coroutines.launch - -@Composable -fun SettingsAccountScreen() { - val context = LocalContext.current - val scope = rememberCoroutineScope() - PreferenceScreen(title = stringResource(id = R.string.preference_screen_services)) { - item { - PreferenceCategory(title = stringResource(id = R.string.preference_category_services_nextcloud)) { - val client = remember { NextcloudApiHelper(context) } - var account by remember { mutableStateOf(null) } - LaunchedEffect(null) { - account = client.getLoggedInUser() - } - - val launcher = - rememberLauncherForActivityResult(contract = ActivityResultContracts.StartActivityForResult()) { - scope.launch { - account = client.getLoggedInUser() - } - } - - Preference( - title = account?.let { - stringResource(id = R.string.preference_signin_logout) - } ?: stringResource(id = R.string.preference_nextcloud_signin), - summary = account?.let { - stringResource( - id = R.string.preference_signin_user, - it.displayName - ) - } ?: stringResource(id = R.string.preference_nextcloud_signin_summary), - onClick = { - if (account == null) { - launcher.launch(client.getLoginIntent()) - } else { - scope.launch { - client.logout() - account = null - } - } - } - ) - } - PreferenceCategory(title = stringResource(id = R.string.preference_category_services_owncloud)) { - val client = remember { OwncloudClient(context) } - var account by remember { mutableStateOf(null) } - LaunchedEffect(null) { - account = client.getLoggedInUser() - } - - val launcher = - rememberLauncherForActivityResult(contract = ActivityResultContracts.StartActivityForResult()) { - scope.launch { - account = client.getLoggedInUser() - } - } - - Preference( - title = account?.let { - stringResource(id = R.string.preference_signin_logout) - } ?: stringResource(id = R.string.preference_owncloud_signin), - summary = account?.let { - stringResource( - id = R.string.preference_signin_user, - it.displayName - ) - } ?: stringResource(id = R.string.preference_owncloud_signin_summary), - onClick = { - if (account == null) { - launcher.launch(client.getLoginIntent()) - } else { - scope.launch { - client.logout() - account = null - } - } - } - ) - } - PreferenceCategory(title = stringResource(id = R.string.preference_category_services_google)) { - val client = remember { GoogleApiHelper.getInstance(context) } - var account by remember { mutableStateOf(null) } - LaunchedEffect(null) { - account = client.getAccount() - } - Preference( - title = account?.let { - stringResource(id = R.string.preference_signin_logout) - } ?: stringResource(id = R.string.preference_google_signin), - summary = if (client.isAvailable()) { - account?.let { - stringResource( - id = R.string.preference_signin_user, - it.name - ) - } ?: stringResource(id = R.string.preference_google_signin_summary) - } else { - stringResource(id = R.string.feature_not_available, stringResource(R.string.app_name)) - }, - onClick = { - if (account == null) { - scope.launch { - client.login(context as Activity) - account = client.getAccount() - } - } else { - client.logout() - account = null - } - }, - enabled = client.isAvailable() - ) - } - PreferenceCategory(title = stringResource(id = R.string.preference_category_services_microsoft)) { - val client = remember { MicrosoftGraphApiHelper.getInstance(context) } - var account by remember { mutableStateOf(null) } - LaunchedEffect(null) { - account = client.getUser() - } - Preference( - title = account?.let { - stringResource(id = R.string.preference_signin_logout) - } ?: stringResource(id = R.string.preference_ms_signin), - summary = if (client.isAvailable()) { - account?.let { - stringResource( - id = R.string.preference_signin_user, - it.name - ) - } ?: stringResource(id = R.string.preference_ms_signin_summary) - } else { - stringResource(id = R.string.feature_not_available, stringResource(R.string.app_name)) - }, - onClick = { - if (account == null) { - scope.launch { - client.login(context as Activity) - account = client.getUser() - } - } else { - scope.launch { - client.logout() - account = null - } - } - }, - enabled = client.isAvailable() - ) - } - } - } -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsBadgesScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsBadgesScreen.kt deleted file mode 100644 index 9724569a..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsBadgesScreen.kt +++ /dev/null @@ -1,17 +0,0 @@ -package de.mm20.launcher2.ui.screens.settings - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.res.stringResource -import de.mm20.launcher2.ui.R -import de.mm20.launcher2.ui.component.preferences.PreferenceScreen - -@Composable -fun SettingsBadgesScreen() { - val scope = rememberCoroutineScope() - PreferenceScreen( - title = stringResource(id = R.string.preference_screen_badges) - ) { - - } -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsLicenseScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsLicenseScreen.kt deleted file mode 100644 index bc801cfb..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsLicenseScreen.kt +++ /dev/null @@ -1,93 +0,0 @@ -package de.mm20.launcher2.ui.screens.settings - -import android.content.Intent -import android.net.Uri -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Icon -import androidx.compose.material3.LocalContentColor -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.OpenInBrowser -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import de.mm20.launcher2.licenses.AppLicense -import de.mm20.launcher2.licenses.OpenSourceLicenses -import de.mm20.launcher2.ui.R -import de.mm20.launcher2.ui.component.preferences.PreferenceCategory -import de.mm20.launcher2.ui.component.preferences.PreferenceScreen - -@Composable -fun SettingsLicenseScreen(libraryName: String? = null) { - val context = LocalContext.current - val library = if (libraryName == null) { - AppLicense.get(context) - } else { - OpenSourceLicenses.first { it.name == libraryName } - } - PreferenceScreen(title = stringResource(id = R.string.preference_screen_about)) { - item { - PreferenceCategory { - Column( - modifier = Modifier.padding(16.dp) - ) { - Text(text = library.name, style = MaterialTheme.typography.titleMedium) - library.description?.let { Text(text = it) } - } - CompositionLocalProvider( - LocalContentColor provides MaterialTheme.colorScheme.primary - ) { - Row( - modifier = Modifier - .fillMaxWidth() - .clickable { - context.startActivity(Intent(Intent.ACTION_VIEW).apply { - data = Uri.parse(library.url) - }) - } - .padding(all = 16.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Icon(imageVector = Icons.Rounded.OpenInBrowser, contentDescription = null) - Text( - modifier = Modifier.padding(start = 8.dp), - text = stringResource(id = R.string.open_webpage), - style = MaterialTheme.typography.labelMedium - ) - } - } - } - } - item { - PreferenceCategory { - Column( - modifier = Modifier.padding(16.dp) - ) { - Text( - text = stringResource(id = library.licenseName), - style = MaterialTheme.typography.titleMedium - ) - library.copyrightNote?.let { - Text( - text = it, - modifier = Modifier.padding(vertical = 4.dp) - ) - } - Text( - text = context.resources.openRawResource(library.licenseText).reader() - .readText() - ) - } - } - } - } -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsMainScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsMainScreen.kt deleted file mode 100644 index 5490fb53..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/screens/settings/SettingsMainScreen.kt +++ /dev/null @@ -1,72 +0,0 @@ -package de.mm20.launcher2.ui.screens.settings - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.* -import androidx.compose.runtime.Composable -import androidx.compose.ui.res.stringResource -import de.mm20.launcher2.ui.R -import de.mm20.launcher2.ui.component.preferences.Preference -import de.mm20.launcher2.ui.component.preferences.PreferenceCategory -import de.mm20.launcher2.ui.component.preferences.PreferenceScreen -import de.mm20.launcher2.ui.icons.NotificationBadge -import de.mm20.launcher2.ui.locals.LocalNavController - -@Composable -fun SettingsMainScreen() { - val navController = LocalNavController.current - PreferenceScreen( - title = stringResource(id = R.string.title_activity_settings) - ) { - item { - PreferenceCategory { - Preference( - icon = Icons.Rounded.Palette, - title = stringResource(id = R.string.preference_screen_appearance), - summary = stringResource(id = R.string.preference_screen_appearance_summary), - onClick = { - navController?.navigate("settings/appearance") - } - ) - Preference( - icon = Icons.Rounded.Search, - title = stringResource(id = R.string.preference_screen_search), - summary = stringResource(id = R.string.preference_screen_search_summary) - ) - Preference( - icon = Icons.Rounded.NotificationBadge, - title = stringResource(id = R.string.preference_screen_badges), - summary = stringResource(id = R.string.preference_screen_badges_summary), - onClick = { - navController?.navigate("settings/badges") - } - ) - Preference( - icon = Icons.Rounded.LightMode, - title = stringResource(id = R.string.preference_screen_weatherwidget), - summary = stringResource(id = R.string.preference_screen_weather_summary) - ) - Preference( - icon = Icons.Rounded.Today, - title = stringResource(id = R.string.preference_screen_calendarwidget), - summary = stringResource(id = R.string.preference_screen_calendar_summary) - ) - Preference( - icon = Icons.Rounded.AccountBox, - title = stringResource(id = R.string.preference_screen_services), - summary = stringResource(id = R.string.preference_screen_services_summary), - onClick = { - navController?.navigate("settings/accounts") - } - ) - Preference( - icon = Icons.Rounded.Info, - title = stringResource(id = R.string.preference_screen_about), - summary = stringResource(id = R.string.preference_screen_about_summary), - onClick = { - navController?.navigate("settings/about") - } - ) - } - } - } -} \ No newline at end of file