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 |
|