ui/material2/src/androidMain/kotlin/OpenSourceLicensesActivity.kt
changeset 39 b14d574cc2b1
parent 38 764faee147cc
child 57 5e249499bb3e
equal deleted inserted replaced
38:764faee147cc 39:b14d574cc2b1
    19  * You should have received a copy of the GNU General Public License
    19  * You should have received a copy of the GNU General Public License
    20  * along with AboutOss.  If not, see <http://www.gnu.org/licenses/>.
    20  * along with AboutOss.  If not, see <http://www.gnu.org/licenses/>.
    21  */
    21  */
    22 package com.geekorum.aboutoss.ui.material
    22 package com.geekorum.aboutoss.ui.material
    23 
    23 
    24 import android.net.Uri
       
    25 import android.os.Bundle
    24 import android.os.Bundle
    26 import androidx.activity.compose.setContent
    25 import androidx.activity.compose.setContent
    27 import androidx.activity.viewModels
    26 import androidx.activity.viewModels
    28 import androidx.compose.material.MaterialTheme
    27 import androidx.compose.material.MaterialTheme
    29 import androidx.compose.runtime.Composable
    28 import androidx.compose.runtime.Composable
    30 import androidx.navigation.compose.NavHost
       
    31 import androidx.navigation.compose.composable
       
    32 import androidx.navigation.compose.rememberNavController
       
    33 import com.geekorum.aboutoss.core.gms.GmsLicenseInfoRepository
    29 import com.geekorum.aboutoss.core.gms.GmsLicenseInfoRepository
    34 import com.geekorum.aboutoss.ui.common.BaseOpensourceLicenseActivity
    30 import com.geekorum.aboutoss.ui.common.BaseOpensourceLicenseActivity
    35 import com.geekorum.aboutoss.ui.common.Factory
    31 import com.geekorum.aboutoss.ui.common.Factory
    36 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
    32 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
    37 import com.geekorum.aboutoss.ui.material.OpenSourceLicensesActivity.Companion.themeProvider
    33 import com.geekorum.aboutoss.ui.material.OpenSourceLicensesActivity.Companion.themeProvider
    58 
    54 
    59     override fun onCreate(savedInstanceState: Bundle?) {
    55     override fun onCreate(savedInstanceState: Bundle?) {
    60         super.onCreate(savedInstanceState)
    56         super.onCreate(savedInstanceState)
    61         setContent {
    57         setContent {
    62             themeProvider {
    58             themeProvider {
    63                 DependencyNavHost(
    59                 OpenSourceDependenciesNavHost(
    64                     openSourceLicensesViewModel = viewModel,
    60                     openSourceLicensesViewModel = viewModel,
    65                     navigateUp = {
    61                     navigateUp = {
    66                         if (!onNavigateUp()) {
    62                         if (!onNavigateUp()) {
    67                             finish()
    63                             finish()
    68                         }
    64                         }
    81             MaterialTheme(content = content)
    77             MaterialTheme(content = content)
    82         }
    78         }
    83     }
    79     }
    84 }
    80 }
    85 
    81 
    86 
       
    87 @Composable
       
    88 fun DependencyNavHost(
       
    89     openSourceLicensesViewModel: OpenSourceLicensesViewModel,
       
    90     navigateUp: () -> Unit
       
    91 ) {
       
    92     val navController = rememberNavController()
       
    93     NavHost(navController, startDestination = "dependencies") {
       
    94         composable("dependencies") {
       
    95             OpenSourceDependenciesListScreen(
       
    96                 viewModel = openSourceLicensesViewModel,
       
    97                 onDependencyClick = {
       
    98                     navController.navigate("dependency_license/${Uri.encode(it)}")
       
    99                 },
       
   100                 onUpClick = navigateUp
       
   101             )
       
   102         }
       
   103         composable("dependency_license/{dependency}") {
       
   104             val dependency = requireNotNull(it.arguments?.getString("dependency"))
       
   105             OpenSourceLicenseScreen(
       
   106                 viewModel = openSourceLicensesViewModel,
       
   107                 dependency = dependency,
       
   108                 onUpClick = {
       
   109                     navController.popBackStack()
       
   110                 },
       
   111             )
       
   112         }
       
   113     }
       
   114 }
       
   115