# HG changeset patch # User Da Risk # Date 1745861686 14400 # Node ID 4a652584013cf05183715b5a4090d949446fa741 # Parent f4443a561f384e7417a02959afa997f78d1de5b5 sample: create ios specific code diff -r f4443a561f38 -r 4a652584013c sample/build.gradle.kts --- a/sample/build.gradle.kts Sun Apr 27 17:37:41 2025 -0400 +++ b/sample/build.gradle.kts Mon Apr 28 13:34:46 2025 -0400 @@ -28,6 +28,7 @@ id("com.geekorum.build.source-license-checker") alias(libs.plugins.org.jetbrains.kotlin.compose.compiler) alias(libs.plugins.org.jetbrains.compose.multiplatform) + alias(libs.plugins.org.jetbrains.kotlinx.serialization) alias(libs.plugins.google.gms.oss.license) } diff -r f4443a561f38 -r 4a652584013c sample/src/appleMain/kotlin/PrebuiltLicensesViewModel.apple.kt --- a/sample/src/appleMain/kotlin/PrebuiltLicensesViewModel.apple.kt Sun Apr 27 17:37:41 2025 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -package com.geekorum.aboutoss.sampleapp - -actual fun androidx.lifecycle.viewmodel.CreationExtras.createPrebuildOpenSourceLicensesViewModel(): com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel { - TODO("Not yet implemented") -} \ No newline at end of file diff -r f4443a561f38 -r 4a652584013c sample/src/iosMain/kotlin/PrebuiltLicensesViewModel.ios.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/iosMain/kotlin/PrebuiltLicensesViewModel.ios.kt Mon Apr 28 13:34:46 2025 -0400 @@ -0,0 +1,38 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.lifecycle.viewmodel.CreationExtras +import com.geekorum.aboutoss.core.licensee.LicenseeLicenseInfoRepository +import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO + +actual fun CreationExtras.createPrebuildOpenSourceLicensesViewModel(): OpenSourceLicensesViewModel { + val licenseInfoRepository = LicenseeLicenseInfoRepository( + mainCoroutineDispatcher = Dispatchers.Main, + ioCoroutineDispatcher = Dispatchers.IO, + licenseeResourcePath = "compose-resources/app/cash/licensee/prebuilt_artifacts.json", + ) + + return OpenSourceLicensesViewModel(licenseInfoRepository) +} \ No newline at end of file diff -r f4443a561f38 -r 4a652584013c sample/src/iosMain/kotlin/SampleAppIos.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/iosMain/kotlin/SampleAppIos.kt Mon Apr 28 13:34:46 2025 -0400 @@ -0,0 +1,92 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.compose.runtime.Composable +import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel +import kotlinx.serialization.Serializable +import com.geekorum.aboutoss.ui.material.OpenSourceDependenciesNavHost as Material2OpenSourceDependenciesNavHost +import com.geekorum.aboutoss.ui.material3.OpenSourceDependenciesNavHost as Material3OpenSourceDependenciesNavHost + + +@Serializable +private object Home + +@Serializable +private object Material2 + +@Serializable +private object Material3 + + +@Composable +fun SampleAppIos() { + val navController = rememberNavController() + NavHost(navController = navController, startDestination = Home) { + composable { + SampleApp( + onMaterial2Click = { + navController.navigate(Material2) + }, + onMaterial3Click = { + navController.navigate(Material3) + } + ) + } + composable { + Material2Screen(navigateUp = { + navController.popBackStack() + }) + } + composable { + Material3Screen(navigateUp = { + navController.popBackStack() + }) + } + } +} + +@Composable +fun Material2Screen(navigateUp: () -> Unit) { + val viewModel: OpenSourceLicensesViewModel = viewModel(initializer = { + createPrebuildOpenSourceLicensesViewModel() + }) + Material2OpenSourceDependenciesNavHost( + openSourceLicensesViewModel = viewModel, + navigateUp = navigateUp + ) +} + +@Composable +fun Material3Screen(navigateUp: () -> Unit) { + val viewModel: OpenSourceLicensesViewModel = viewModel(initializer = { + createPrebuildOpenSourceLicensesViewModel() + }) + Material3OpenSourceDependenciesNavHost( + openSourceLicensesViewModel = viewModel, + navigateUp = navigateUp + ) +} \ No newline at end of file diff -r f4443a561f38 -r 4a652584013c sample/src/iosMain/kotlin/main.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/iosMain/kotlin/main.kt Mon Apr 28 13:34:46 2025 -0400 @@ -0,0 +1,32 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.compose.ui.window.ComposeUIViewController +import platform.UIKit.UIViewController + + +fun MainViewController(): UIViewController = + ComposeUIViewController { + SampleAppIos() + } +