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