diff --git a/app/build.gradle b/app/build.gradle index d4c97e3..f199b57 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + plugins { id 'com.android.application' id 'kotlin-android' @@ -68,7 +70,7 @@ android { buildTypes.debug.signingConfig signingConfigs.debug } - applicationVariants.all { variant -> + applicationVariants.configureEach { variant -> variant.outputs.each { output -> output.versionNameOverride "$versionName-$gitCommitHash" } @@ -76,10 +78,10 @@ android { } dependencies { - implementation 'androidx.core:core-ktx:1.12.0' + implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.activity:activity-compose:1.8.2' - implementation "androidx.navigation:navigation-compose:2.8.0-alpha04" + implementation 'androidx.activity:activity-compose:1.9.0' + implementation "androidx.navigation:navigation-compose:2.8.0-beta01" implementation "com.github.topjohnwu.libsu:core:5.0.4" implementation 'com.squareup.logcat:logcat:0.1' implementation 'com.google.android.gms:play-services-oss-licenses:17.0.1' @@ -102,16 +104,16 @@ dependencies { implementation "com.google.accompanist:accompanist-navigation-material:$accompanist_version" implementation "com.google.accompanist:accompanist-systemuicontroller:$accompanist_version" - def coroutines_version = "1.8.0" + def coroutines_version = "1.8.1" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" - def lifecycle_version = "2.7.0" + def lifecycle_version = "2.8.0" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" - implementation "androidx.datastore:datastore:1.0.0" + implementation "androidx.datastore:datastore:1.1.1" implementation "com.google.protobuf:protobuf-javalite:$protobuf_version" } @@ -131,15 +133,17 @@ protobuf { } } -tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - kotlinOptions { - freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn" - freeCompilerArgs += "-opt-in=androidx.compose.material.ExperimentalMaterialApi" - freeCompilerArgs += "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api" - freeCompilerArgs += "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi" - freeCompilerArgs += "-opt-in=androidx.compose.animation.ExperimentalAnimationApi" - freeCompilerArgs += "-opt-in=androidx.compose.ui.ExperimentalComposeUiApi" - freeCompilerArgs += "-opt-in=androidx.compose.ui.text.ExperimentalTextApi" - freeCompilerArgs += "-opt-in=com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi" +tasks.withType(KotlinCompile).configureEach { + compilerOptions { + freeCompilerArgs.addAll( + "-opt-in=kotlin.RequiresOptIn", + "-opt-in=androidx.compose.material.ExperimentalMaterialApi", + "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api", + "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi", + "-opt-in=androidx.compose.animation.ExperimentalAnimationApi", + "-opt-in=androidx.compose.ui.ExperimentalComposeUiApi", + "-opt-in=androidx.compose.ui.text.ExperimentalTextApi", + "-opt-in=com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi", + ) } } diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/activity/MainActivity.kt b/app/src/main/java/xyz/ivaniskandar/shouko/activity/MainActivity.kt index a1c7e79..1eaab9b 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/activity/MainActivity.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/activity/MainActivity.kt @@ -17,7 +17,7 @@ import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.sizeIn import androidx.compose.material.ModalBottomSheetValue import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.ArrowBack +import androidx.compose.material.icons.automirrored.rounded.ArrowBack import androidx.compose.material.icons.rounded.MoreVert import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.material3.CenterAlignedTopAppBar @@ -132,7 +132,7 @@ class MainActivity : ComponentActivity() { navigationIcon = if (currentRoute != null && currentRoute != Screen.Home.route) { { IconButton(onClick = { navController.popBackStack() }) { - Icon(imageVector = Icons.Rounded.ArrowBack, contentDescription = null) + Icon(imageVector = Icons.AutoMirrored.Rounded.ArrowBack, contentDescription = null) } } } else { {} }, @@ -257,7 +257,7 @@ class MainActivity : ComponentActivity() { } @Composable -fun getAppBarTitle(navController: NavController, navBackStackEntry: NavBackStackEntry?): String { +private fun getAppBarTitle(navController: NavController, navBackStackEntry: NavBackStackEntry?): String { return if (navBackStackEntry?.destination is BottomSheetNavigator.Destination) { // Keep previous destination title when showing bottom sheet getAppBarTitle(navController = navController, navBackStackEntry = navController.previousBackStackEntry) @@ -283,7 +283,7 @@ fun getAppBarTitle(navController: NavController, navBackStackEntry: NavBackStack } @Composable -fun MainActivityActions( +private fun MainActivityActions( navController: NavController, ) { val context = LocalContext.current diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/activity/PocketNoTouchyActivity.kt b/app/src/main/java/xyz/ivaniskandar/shouko/activity/PocketNoTouchyActivity.kt index f7a3ec4..ec1b2a4 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/activity/PocketNoTouchyActivity.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/activity/PocketNoTouchyActivity.kt @@ -113,7 +113,7 @@ class PocketNoTouchyActivity : ComponentActivity() { @Preview @Composable - fun DialogCardPreview() { + private fun DialogCardPreview() { ShoukoM3PreviewTheme(darkTheme = true) { Box(modifier = Modifier.background(Color.Black)) { DialogCard() diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/activity/TileBoardingActivity.kt b/app/src/main/java/xyz/ivaniskandar/shouko/activity/TileBoardingActivity.kt index 38f0249..9d43371 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/activity/TileBoardingActivity.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/activity/TileBoardingActivity.kt @@ -110,7 +110,7 @@ class TileBoardingActivity : ComponentActivity() { @Preview @Composable - fun APreview() { + private fun APreview() { ShoukoM3PreviewTheme { TileBoardingScreen(type = TadanoTileParentService.Type.COFFEE, onDismissRequest = {}) } diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/ComposeLifecycleUtils.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/ComposeLifecycleUtils.kt index 2ad59b4..c1229a8 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/ComposeLifecycleUtils.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/ComposeLifecycleUtils.kt @@ -2,9 +2,9 @@ package xyz.ivaniskandar.shouko.ui import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect -import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.compose.LocalLifecycleOwner @Composable fun ComposeLifecycleCallback( diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/Screen.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/Screen.kt index 37caaf9..157cd08 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/Screen.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/Screen.kt @@ -3,19 +3,19 @@ package xyz.ivaniskandar.shouko.ui import androidx.navigation.NavBackStackEntry sealed class Screen(val route: String) { - object Home : Screen("home") - object ReadLogsSetup : Screen("read_logs_setup") - object SecureSettingsSetup : Screen("secure_settings_setup") - object AssistantButtonSettings : Screen("assistant_button_settings") - object AssistantLaunchSelection : Screen("assistant_launch_selection") - object LockscreenShortcutSettings : Screen("lockscreen_shortcut_settings") - object LockscreenShortcutSelection : Screen("lockscreen_shortcut_selection/{key}") { + data object Home : Screen("home") + data object ReadLogsSetup : Screen("read_logs_setup") + data object SecureSettingsSetup : Screen("secure_settings_setup") + data object AssistantButtonSettings : Screen("assistant_button_settings") + data object AssistantLaunchSelection : Screen("assistant_launch_selection") + data object LockscreenShortcutSettings : Screen("lockscreen_shortcut_settings") + data object LockscreenShortcutSelection : Screen("lockscreen_shortcut_selection/{key}") { fun createRoute(key: String) = "lockscreen_shortcut_selection/$key" } - object AndroidAppLinkSettings : Screen("android_app_link_settings") - object ApprovedLinkTargetList : Screen("approved_link_target_list") - object UnapprovedLinkTargetList : Screen("unapproved_link_target_list") - object LinkTargetInfoSheet : Screen("link_target_info_sheet/{packageName}") { + data object AndroidAppLinkSettings : Screen("android_app_link_settings") + data object ApprovedLinkTargetList : Screen("approved_link_target_list") + data object UnapprovedLinkTargetList : Screen("unapproved_link_target_list") + data object LinkTargetInfoSheet : Screen("link_target_info_sheet/{packageName}") { fun createRoute(packageName: String) = "link_target_info_sheet/$packageName" fun getPackageName(backStackEntry: NavBackStackEntry): String { diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceCards.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceCards.kt index 03dea99..cf43322 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceCards.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceCards.kt @@ -93,7 +93,7 @@ fun WriteSettingsCard(visible: Boolean = true, onButtonClicked: () -> Unit) { @Preview @Composable -fun PreferenceCardsPreview() { +private fun PreferenceCardsPreview() { ShoukoM3PreviewTheme { Surface(color = MaterialTheme.colorScheme.background) { Column { diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceItems.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceItems.kt index 5333aa9..79e729a 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceItems.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/PreferenceItems.kt @@ -12,6 +12,7 @@ import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -97,12 +98,12 @@ fun SwitchPreference( @Preview @Composable -fun PreferenceItemsPreview() { +private fun PreferenceItemsPreview() { var darkTheme by remember { mutableStateOf(false) } ShoukoM3PreviewTheme(darkTheme = darkTheme) { Surface(color = MaterialTheme.colorScheme.background) { Column { - var count by remember { mutableStateOf(0) } + var count by remember { mutableIntStateOf(0) } Text(text = "Preference clicked $count time(s)") Preference(title = "Preference", subtitle = "With subtitle") { count += 1 } Preference(title = "Preference") { count += 1 } diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/SoftDivider.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/SoftDivider.kt index 1129a89..79f8f0b 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/SoftDivider.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/component/SoftDivider.kt @@ -1,6 +1,6 @@ package xyz.ivaniskandar.shouko.ui.component -import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -9,7 +9,7 @@ import androidx.compose.ui.Modifier fun SoftDivider( modifier: Modifier = Modifier, ) { - Divider( + HorizontalDivider( modifier = modifier, color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.12F), ) diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AndroidAppLink.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AndroidAppLink.kt index 93c1688..837e3f4 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AndroidAppLink.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AndroidAppLink.kt @@ -19,7 +19,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Launch +import androidx.compose.material.icons.automirrored.filled.Launch import androidx.compose.material.icons.outlined.Info import androidx.compose.material3.AlertDialog import androidx.compose.material3.ButtonDefaults @@ -180,7 +180,7 @@ fun CustomChooserToggle(checked: Boolean, onClick: () -> Unit) { @Preview @Composable -fun CustomChooserTogglePreview() { +private fun CustomChooserTogglePreview() { ShoukoM3PreviewTheme { CustomChooserToggle(checked = true) {} } @@ -242,7 +242,7 @@ fun LinkTargetList( } @Composable -fun LinkTargetListItem(item: LinkHandlerAppItem, onClick: () -> Unit) { +private fun LinkTargetListItem(item: LinkHandlerAppItem, onClick: () -> Unit) { ListItem( modifier = Modifier.clickable(onClick = onClick), leadingContent = { @@ -359,7 +359,7 @@ fun LinkTargetInfoSheet( .padding(top = 24.dp, bottom = 8.dp), ) { Icon( - Icons.Default.Launch, + Icons.AutoMirrored.Filled.Launch, contentDescription = null, modifier = Modifier.size(ButtonDefaults.IconSize), ) diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AssistantButton.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AssistantButton.kt index 536e69d..3185c86 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AssistantButton.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/AssistantButton.kt @@ -218,7 +218,7 @@ fun AssistantActionSelection( contentPadding = PaddingValues(bottom = contentPadding.calculateBottomPadding()), ) { item { CategoryHeader(title = stringResource(id = R.string.category_title_media_key)) } - items(MediaKeyAction.Key.values()) { item -> + items(MediaKeyAction.Key.entries.toTypedArray()) { item -> CommonActionRow( iconPainter = painterResource(id = item.iconResId), label = stringResource(id = item.labelResId), @@ -258,7 +258,7 @@ fun AssistantActionSelection( }, ) } - items(StatusBarAction.PanelType.values()) { item -> + items(StatusBarAction.PanelType.entries.toTypedArray()) { item -> CommonActionRow( iconVector = item.iconVector, label = stringResource(id = item.labelResId), diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/KeyguardUnlock.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/KeyguardUnlock.kt index 6938a2d..dfec27c 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/KeyguardUnlock.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/KeyguardUnlock.kt @@ -37,7 +37,7 @@ fun KeyguardUnlock(onClick: () -> Unit) { @Preview @Composable -fun KeyguardUnlockPreview() { +private fun KeyguardUnlockPreview() { ShoukoM3PreviewTheme { KeyguardUnlock {} } diff --git a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/PermissionSetup.kt b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/PermissionSetup.kt index eba6b44..3cb5c18 100644 --- a/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/PermissionSetup.kt +++ b/app/src/main/java/xyz/ivaniskandar/shouko/ui/destination/PermissionSetup.kt @@ -194,7 +194,7 @@ fun PermissionSetupNoRoot(command: String) { @Preview @Composable -fun ReadLogsPermissionSetupRootPreview() { +private fun ReadLogsPermissionSetupRootPreview() { ShoukoM3PreviewTheme { Surface(color = MaterialTheme.colorScheme.background) { PermissionSetup( @@ -210,7 +210,7 @@ fun ReadLogsPermissionSetupRootPreview() { @Preview @Composable -fun ReadLogsPermissionSetupNoRootPreview() { +private fun ReadLogsPermissionSetupNoRootPreview() { ShoukoM3PreviewTheme { Surface(color = MaterialTheme.colorScheme.background) { PermissionSetup( @@ -226,7 +226,7 @@ fun ReadLogsPermissionSetupNoRootPreview() { @Preview @Composable -fun WriteSettingsPermissionSetupNoRootPreview() { +private fun WriteSettingsPermissionSetupNoRootPreview() { ShoukoM3PreviewTheme { Surface(color = MaterialTheme.colorScheme.background) { PermissionSetup( diff --git a/build.gradle b/build.gradle index be83a32..008a9ce 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,9 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { - kotlin_version = "1.9.22" - compose_bom_version = '2024.03.00-alpha01' - compose_compiler_version = '1.5.10' + kotlin_version = "1.9.24" + compose_bom_version = '2024.05.00-alpha02' + compose_compiler_version = '1.5.14' protobuf_version = '3.25.3' } repositories { @@ -12,7 +12,7 @@ buildscript { maven { url 'https://jitpack.io' } } dependencies { - classpath 'com.android.tools.build:gradle:8.3.0' + classpath 'com.android.tools.build:gradle:8.4.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.android.gms:oss-licenses-plugin:0.10.6' classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.16.0' diff --git a/gradle.properties b/gradle.properties index 98bed16..2521752 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,5 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 # Android operating system, and which are packaged with your app"s APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 721d13f..877cef4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Mar 07 12:57:38 ICT 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle b/settings.gradle index dbc8870..9606539 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,5 +6,6 @@ dependencyResolutionManagement { maven { url 'https://jitpack.io' } } } + rootProject.name = "XPERI+" include ':app'