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,