mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
refactor(ui): Migrate from Fragments to Jetpack Compose
Replace Fragment-based UI with Jetpack Compose screens, adopting Navigation3 for type-safe routing and Material3 theming throughout. - Replace all Fragments/ViewHolders with Compose screens and cards - Introduce NavigationController with Navigation3 runtime - Add CapodTheme with Material3 design system - Migrate PopUpWindow overlay to ComposeView with proper lifecycle - Rewrite WidgetConfigurationActivity in Compose - Add reusable settings composables (switch, slider, list preference) - Update Kotlin to 2.2.10, add Compose BOM 2025.06.01 - Fix reactive state for unmatched devices toggle - Add safety timeout for BT device enumeration - Fix profile name validation error message
This commit is contained in:
@@ -20,5 +20,7 @@ repositories {
|
||||
dependencies {
|
||||
implementation("com.android.tools.build:gradle:9.0.1")
|
||||
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.10")
|
||||
implementation("org.jetbrains.kotlin:compose-compiler-gradle-plugin:2.2.10")
|
||||
implementation("org.jetbrains.kotlin:kotlin-serialization:2.2.10")
|
||||
implementation("com.squareup:javapoet:1.13.0")
|
||||
}
|
||||
|
||||
@@ -71,9 +71,7 @@ fun DependencyHandlerScope.addOkio() {
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.addNavigation() {
|
||||
implementation("androidx.navigation:navigation-fragment-ktx:${Versions.AndroidX.Navigation.core}")
|
||||
implementation("androidx.navigation:navigation-ui-ktx:${Versions.AndroidX.Navigation.core}")
|
||||
androidTestImplementation("androidx.navigation:navigation-testing:${Versions.AndroidX.Navigation.core}")
|
||||
implementation("androidx.navigation:navigation-common:${Versions.AndroidX.Navigation.core}")
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.addBaseAndroid() {
|
||||
@@ -84,7 +82,7 @@ fun DependencyHandlerScope.addBaseAndroid() {
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.addBaseAndroidUi() {
|
||||
implementation("androidx.appcompat:appcompat:1.6.1")
|
||||
implementation("androidx.appcompat:appcompat:1.7.1")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.1.3")
|
||||
|
||||
implementation("androidx.activity:activity-ktx:1.8.0")
|
||||
@@ -100,6 +98,38 @@ fun DependencyHandlerScope.addBaseAndroidUi() {
|
||||
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVers")
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.addCompose() {
|
||||
val composeBom = platform("androidx.compose:compose-bom:${Versions.Compose.bom}")
|
||||
implementation(composeBom)
|
||||
androidTestImplementation(composeBom)
|
||||
|
||||
implementation("androidx.compose.material3:material3")
|
||||
implementation("androidx.compose.material:material-icons-extended")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview")
|
||||
debugImplementation("androidx.compose.ui:ui-tooling")
|
||||
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
|
||||
debugImplementation("androidx.compose.ui:ui-test-manifest")
|
||||
|
||||
implementation("androidx.activity:activity-compose:1.12.1")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5")
|
||||
|
||||
implementation("androidx.hilt:hilt-navigation-compose:1.3.0-alpha01")
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.addNavigation3() {
|
||||
implementation("androidx.navigation3:navigation3-runtime:${Versions.Navigation3.core}")
|
||||
implementation("androidx.navigation3:navigation3-ui:${Versions.Navigation3.core}")
|
||||
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0")
|
||||
|
||||
implementation("androidx.compose.material3.adaptive:adaptive-navigation3:1.3.0-alpha06")
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.addSerialization() {
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:${Versions.Serialization.core}")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:${Versions.Serialization.core}")
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.addTesting() {
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
object Versions {
|
||||
object Kotlin {
|
||||
const val core = "2.1.20"
|
||||
const val core = "2.2.10"
|
||||
const val coroutines = "1.8.0"
|
||||
}
|
||||
|
||||
@@ -13,4 +13,16 @@ object Versions {
|
||||
const val core = "2.9.3"
|
||||
}
|
||||
}
|
||||
|
||||
object Compose {
|
||||
const val bom = "2025.06.01"
|
||||
}
|
||||
|
||||
object Navigation3 {
|
||||
const val core = "1.0.0"
|
||||
}
|
||||
|
||||
object Serialization {
|
||||
const val core = "1.9.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user