diff --git a/shared/src/commonMain/composeResources/drawable/ic_open_in_browser.xml b/shared/src/commonMain/composeResources/drawable/ic_open_in_browser.xml
new file mode 100644
index 00000000..e6b918bf
--- /dev/null
+++ b/shared/src/commonMain/composeResources/drawable/ic_open_in_browser.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/shared/src/commonMain/composeResources/values-cs/strings.xml b/shared/src/commonMain/composeResources/values-cs/strings.xml
index ee6a8d43..ab369f1c 100644
--- a/shared/src/commonMain/composeResources/values-cs/strings.xml
+++ b/shared/src/commonMain/composeResources/values-cs/strings.xml
@@ -189,6 +189,7 @@
Název modulu:
Verze modulu:
Licence:
+ Webová stránka
diff --git a/shared/src/commonMain/composeResources/values-de/strings.xml b/shared/src/commonMain/composeResources/values-de/strings.xml
index 8b7d836e..6bc41319 100644
--- a/shared/src/commonMain/composeResources/values-de/strings.xml
+++ b/shared/src/commonMain/composeResources/values-de/strings.xml
@@ -189,5 +189,6 @@
Modulname:
Modulversion:
Lizenz:
+ Webseite
diff --git a/shared/src/commonMain/composeResources/values-pl/strings.xml b/shared/src/commonMain/composeResources/values-pl/strings.xml
index 0bd8f7af..0f265329 100644
--- a/shared/src/commonMain/composeResources/values-pl/strings.xml
+++ b/shared/src/commonMain/composeResources/values-pl/strings.xml
@@ -199,5 +199,6 @@
Nazwa modułu:
Wersja modułu:
Licencja:
+ Strona internetowa
diff --git a/shared/src/commonMain/composeResources/values/strings.xml b/shared/src/commonMain/composeResources/values/strings.xml
index 699dd885..6c3bbd87 100644
--- a/shared/src/commonMain/composeResources/values/strings.xml
+++ b/shared/src/commonMain/composeResources/values/strings.xml
@@ -244,5 +244,6 @@
Module name:
Module version:
License:
+ Webpage
diff --git a/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesScreen.kt b/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesScreen.kt
index a9505e42..8b6fa18a 100644
--- a/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesScreen.kt
+++ b/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesScreen.kt
@@ -19,6 +19,8 @@ import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@@ -28,20 +30,24 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalUriHandler
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.kgurgul.cpuinfo.domain.model.License
import com.kgurgul.cpuinfo.shared.Res
import com.kgurgul.cpuinfo.shared.back
+import com.kgurgul.cpuinfo.shared.ic_open_in_browser
import com.kgurgul.cpuinfo.shared.licenses
import com.kgurgul.cpuinfo.shared.licenses_module_license
import com.kgurgul.cpuinfo.shared.licenses_module_name
import com.kgurgul.cpuinfo.shared.licenses_module_version
+import com.kgurgul.cpuinfo.shared.licenses_webpage
import com.kgurgul.cpuinfo.ui.components.CpuDivider
import com.kgurgul.cpuinfo.ui.components.CpuPullToRefreshBox
import com.kgurgul.cpuinfo.ui.components.PrimaryTopAppBar
import com.kgurgul.cpuinfo.ui.components.VerticalScrollbar
import com.kgurgul.cpuinfo.ui.theme.spacingMedium
import com.kgurgul.cpuinfo.ui.theme.spacingSmall
+import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
import org.koin.compose.viewmodel.koinViewModel
@@ -51,10 +57,11 @@ fun LicensesScreen(
viewModel: LicensesViewModel = koinViewModel(),
) {
val uiState by viewModel.uiStateFlow.collectAsStateWithLifecycle()
+ val uriHandler = LocalUriHandler.current
LicensesScreen(
uiState = uiState,
onNavigateBackClicked = onNavigateBackClicked,
- onLicenseUrlClicked = viewModel::onLicenseUrlClicked,
+ onLicenseUrlClicked = { uriHandler.openUri(uri = it) },
)
}
@@ -108,7 +115,6 @@ fun LicensesScreen(
onLicenseUrlClicked = onLicenseUrlClicked,
)
if (index != uiState.licenses.lastIndex) {
- Spacer(modifier = Modifier.size(spacingMedium))
CpuDivider(
modifier = Modifier.padding(top = spacingSmall),
)
@@ -181,5 +187,19 @@ private fun LicenseItem(
color = MaterialTheme.colorScheme.onBackground,
)
}
+ Button(
+ onClick = { onLicenseUrlClicked(license.licenseUrl) },
+ ) {
+ Icon(
+ painter = painterResource(Res.drawable.ic_open_in_browser),
+ contentDescription = stringResource(Res.string.licenses_webpage),
+ modifier = Modifier.size(ButtonDefaults.IconSize)
+ )
+ Spacer(Modifier.size(ButtonDefaults.IconSpacing))
+ Text(
+ text = stringResource(Res.string.licenses_webpage),
+ style = MaterialTheme.typography.bodyMedium,
+ )
+ }
}
}
diff --git a/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesViewModel.kt b/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesViewModel.kt
index fde0fe33..7ef165b3 100644
--- a/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesViewModel.kt
+++ b/shared/src/commonMain/kotlin/com/kgurgul/cpuinfo/features/settings/licenses/LicensesViewModel.kt
@@ -26,10 +26,6 @@ class LicensesViewModel(
}
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), UiState())
- fun onLicenseUrlClicked(url: String) {
-
- }
-
data class UiState(
val isLoading: Boolean = false,
val isError: Boolean = false,