--- a/core/src/main/java/com/geekorum/aboutoss/core/LicenseInfoRepository.kt	Thu Apr 13 20:57:29 2023 -0400
+++ b/core/src/main/java/com/geekorum/aboutoss/core/LicenseInfoRepository.kt	Fri Apr 14 15:38:51 2023 -0400
@@ -25,6 +25,9 @@
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.withContext
 
+/**
+ * Retrieve License information stored in application resources
+ */
 class LicenseInfoRepository(
     private val appContext: Context,
     private val mainCoroutineDispatcher: CoroutineDispatcher,
--- a/ui/common/src/main/java/com/geekorum/aboutoss/ui/common/OpenSourceLicensesViewModel.kt	Thu Apr 13 20:57:29 2023 -0400
+++ b/ui/common/src/main/java/com/geekorum/aboutoss/ui/common/OpenSourceLicensesViewModel.kt	Fri Apr 14 15:38:51 2023 -0400
@@ -37,6 +37,9 @@
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.stateIn
 
+/**
+ * Manage opensource license information and allow to display them in an UI
+ */
 class OpenSourceLicensesViewModel constructor(
     private val licenseInfoRepository: LicenseInfoRepository,
     private val browserLauncher: BrowserLauncher,
--- a/ui/material2/src/main/java/com/geekorum/aboutoss/ui/material/OpenSourceDependenciesListScreen.kt	Thu Apr 13 20:57:29 2023 -0400
+++ b/ui/material2/src/main/java/com/geekorum/aboutoss/ui/material/OpenSourceDependenciesListScreen.kt	Fri Apr 14 15:38:51 2023 -0400
@@ -52,6 +52,13 @@
 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
 import com.geekorum.aboutoss.ui.common.R as commonR
 
+/**
+ * Display the list of dependencies used in the application
+ *
+ * @param viewModel the [OpenSourceLicensesViewModel] to use
+ * @param onDependencyClick lambda to execute on click on one dependency item
+ * @param onUpClick lambda to execute on click on the up arrow
+ */
 @Composable
 fun OpenSourceDependenciesListScreen(
     viewModel: OpenSourceLicensesViewModel,
@@ -66,6 +73,13 @@
     )
 }
 
+/**
+ * Display the list of dependencies used in the application
+ *
+ * @param dependencies the list of dependencies
+ * @param onDependencyClick lambda to execute on click on one dependency item
+ * @param onUpClick lambda to execute on click on the up arrow
+ */
 @OptIn(ExperimentalMaterialApi::class)
 @Composable
 fun OpenSourceDependenciesListScreen(
@@ -80,7 +94,8 @@
         }
     }
     val topBarElevation by animateDpAsState(
-        if (hasScrolled) 4.dp else 0.dp
+        if (hasScrolled) 4.dp else 0.dp,
+        label = "topBarElevation"
     )
     Scaffold(topBar = {
         TopAppBar(title = { Text(stringResource(commonR.string.title_oss_licenses)) },
--- a/ui/material2/src/main/java/com/geekorum/aboutoss/ui/material/OpenSourceLicenseScreen.kt	Thu Apr 13 20:57:29 2023 -0400
+++ b/ui/material2/src/main/java/com/geekorum/aboutoss/ui/material/OpenSourceLicenseScreen.kt	Fri Apr 14 15:38:51 2023 -0400
@@ -58,18 +58,25 @@
 import androidx.core.net.toUri
 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
 
+/**
+ * Display the opensource license of a dependency
+ *
+ * @param viewModel the [OpenSourceLicensesViewModel] to use
+ * @param dependency the dependency
+ * @param onUpClick lambda to execute on click on the up arrow
+ */
 @Composable
 fun OpenSourceLicenseScreen(
     viewModel: OpenSourceLicensesViewModel,
     dependency: String,
-    onBackClick: () -> Unit,
+    onUpClick: () -> Unit,
 ) {
     val context = LocalContext.current
     val license by viewModel.getLicenseDependency(dependency).collectAsState("")
     OpenSourceLicenseScreen(
         dependency = dependency,
         license = license,
-        onBackClick = onBackClick,
+        onUpClick = onUpClick,
         onUrlClick = {
             viewModel.openLinkInBrowser(context, it)
         },
@@ -80,12 +87,21 @@
     )
 }
 
+/**
+ * Display the opensource license of a dependency
+ *
+ * @param dependency the dependency
+ * @param license the opensource license text
+ * @param onUpClick lambda to execute on click on the up arrow
+ * @param onUrlClick lambda to execute on click on a url
+ * @param onUrlsFound lambda to execute when all urls in the license have been found
+ */
 @OptIn(ExperimentalLayoutApi::class, ExperimentalTextApi::class)
 @Composable
 fun OpenSourceLicenseScreen(
     dependency: String,
     license: String,
-    onBackClick: () -> Unit,
+    onUpClick: () -> Unit,
     onUrlClick: (String) -> Unit,
     onUrlsFound: (List<String>) -> Unit,
 ) {
@@ -101,12 +117,13 @@
         derivedStateOf { scrollState.value > 0 }
     }
     val topBarElevation by animateDpAsState(
-        if (hasScrolled) 4.dp else 0.dp
+        if (hasScrolled) 4.dp else 0.dp,
+        label = "topBarElevation"
     )
     Scaffold(topBar = {
         TopAppBar(title = { Text(dependency, overflow = TextOverflow.Ellipsis, maxLines = 1) },
             navigationIcon = {
-                IconButton(onClick = onBackClick) {
+                IconButton(onClick = onUpClick) {
                     Icon(
                         Icons.Default.ArrowBack,
                         contentDescription = null
@@ -148,7 +165,7 @@
 /**
  * https://regexr.com/37i6s
  */
-private val UrlRegexp = """https?://(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)""".toRegex()
+private val urlRegexp = """https?://(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)""".toRegex()
 
 @OptIn(ExperimentalTextApi::class)
 @Composable
@@ -160,7 +177,7 @@
     return remember(text, style) {
         buildAnnotatedString {
             var currentIdx = 0
-            for (match in UrlRegexp.findAll(text)) {
+            for (match in urlRegexp.findAll(text)) {
                 if (currentIdx < match.range.first) {
                     append(text.substring(currentIdx, match.range.first))
                 }
--- a/ui/material2/src/main/java/com/geekorum/aboutoss/ui/material/OpenSourceLicensesActivity.kt	Thu Apr 13 20:57:29 2023 -0400
+++ b/ui/material2/src/main/java/com/geekorum/aboutoss/ui/material/OpenSourceLicensesActivity.kt	Fri Apr 14 15:38:51 2023 -0400
@@ -32,6 +32,13 @@
 import com.geekorum.aboutoss.ui.common.BaseOpensourceLicenseActivity
 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
 
+/**
+ * Activity to display opensource license information
+ *
+ * This activity use Material compose to create the UI.
+ * You can specify the Material theme to use by setting [themeProvider]
+ * before launching the activity
+ */
 class OpenSourceLicensesActivity : BaseOpensourceLicenseActivity() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -51,6 +58,10 @@
     }
 
     companion object {
+        /**
+         * The composable Theme function to set the theme of the UI in [OpenSourceLicensesActivity]
+         * Default to base material theme [MaterialTheme]
+         */
         var themeProvider: @Composable (@Composable () -> Unit) -> Unit = { content ->
             MaterialTheme(content = content)
         }
@@ -79,7 +90,7 @@
             OpenSourceLicenseScreen(
                 viewModel = openSourceLicensesViewModel,
                 dependency = dependency,
-                onBackClick = {
+                onUpClick = {
                     navController.popBackStack()
                 },
             )