mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
Make :core:strings a Compose Multiplatform library (#3617)
This commit is contained in:
parent
d7fff4add2
commit
28590bfcdf
206 changed files with 1722 additions and 470 deletions
|
|
@ -24,12 +24,18 @@ import androidx.compose.material3.Text
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import org.meshtastic.core.strings.Res
|
||||
import org.meshtastic.core.strings.analytics_notice
|
||||
import org.meshtastic.core.strings.analytics_platforms
|
||||
import org.meshtastic.core.strings.datadog_link
|
||||
import org.meshtastic.core.strings.firebase_link
|
||||
import org.meshtastic.core.strings.for_more_information_see_our_privacy_policy
|
||||
import org.meshtastic.core.strings.privacy_url
|
||||
import org.meshtastic.core.ui.component.AutoLinkText
|
||||
import org.meshtastic.core.strings.R as Res
|
||||
|
||||
@Composable
|
||||
fun AnalyticsIntro(modifier: Modifier = Modifier) {
|
||||
|
|
|
|||
|
|
@ -30,11 +30,15 @@ import androidx.compose.material3.Text
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.meshtastic.core.strings.R as Res
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import org.meshtastic.core.strings.Res
|
||||
import org.meshtastic.core.strings.configure_critical_alerts
|
||||
import org.meshtastic.core.strings.critical_alerts
|
||||
import org.meshtastic.core.strings.critical_alerts_dnd_request_text
|
||||
import org.meshtastic.core.strings.skip
|
||||
|
||||
/**
|
||||
* Screen for explaining and guiding the user to configure critical alert settings. This screen is part of the app
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
package org.meshtastic.feature.intro
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import org.jetbrains.compose.resources.StringResource
|
||||
|
||||
/**
|
||||
* Data class representing the UI elements for a feature row in the app introduction.
|
||||
|
|
@ -29,6 +29,6 @@ import androidx.compose.ui.graphics.vector.ImageVector
|
|||
*/
|
||||
internal data class FeatureUIData(
|
||||
val icon: ImageVector,
|
||||
@StringRes val titleRes: Int? = null,
|
||||
@StringRes val subtitleRes: Int,
|
||||
val titleRes: StringResource? = null,
|
||||
val subtitleRes: StringResource,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
package org.meshtastic.feature.intro
|
||||
|
||||
import android.content.Context
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
|
|
@ -29,13 +28,14 @@ import androidx.compose.material3.Text
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.SpanStyle
|
||||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextDecoration
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.jetbrains.compose.resources.StringResource
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
|
||||
/** Tag used for identifying clickable annotations in text, specifically for linking to settings. */
|
||||
internal const val SETTINGS_TAG = "settings_link_tag"
|
||||
|
|
@ -80,8 +80,8 @@ internal fun FeatureRow(feature: FeatureUIData) {
|
|||
*/
|
||||
@Composable
|
||||
internal fun Context.createClickableAnnotatedString(
|
||||
@StringRes fullTextRes: Int,
|
||||
@StringRes linkTextRes: Int,
|
||||
fullTextRes: StringResource,
|
||||
linkTextRes: StringResource,
|
||||
tag: String,
|
||||
): AnnotatedString {
|
||||
val fullText = stringResource(fullTextRes)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,20 @@ import androidx.compose.material.icons.outlined.Router
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import org.meshtastic.core.strings.R as Res
|
||||
import org.meshtastic.core.strings.Res
|
||||
import org.meshtastic.core.strings.configure_location_permissions
|
||||
import org.meshtastic.core.strings.distance_filters
|
||||
import org.meshtastic.core.strings.distance_filters_description
|
||||
import org.meshtastic.core.strings.distance_measurements
|
||||
import org.meshtastic.core.strings.distance_measurements_description
|
||||
import org.meshtastic.core.strings.mesh_map_location
|
||||
import org.meshtastic.core.strings.mesh_map_location_description
|
||||
import org.meshtastic.core.strings.next
|
||||
import org.meshtastic.core.strings.phone_location
|
||||
import org.meshtastic.core.strings.phone_location_description
|
||||
import org.meshtastic.core.strings.settings
|
||||
import org.meshtastic.core.strings.share_location
|
||||
import org.meshtastic.core.strings.share_location_description
|
||||
|
||||
/**
|
||||
* Screen for configuring location permissions during the app introduction. It explains why location permissions are
|
||||
|
|
|
|||
|
|
@ -33,11 +33,24 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.meshtastic.core.strings.R as Res
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import org.meshtastic.core.strings.Res
|
||||
import org.meshtastic.core.strings.app_notifications
|
||||
import org.meshtastic.core.strings.configure_notification_permissions
|
||||
import org.meshtastic.core.strings.critical_alerts
|
||||
import org.meshtastic.core.strings.critical_alerts_description
|
||||
import org.meshtastic.core.strings.incoming_messages
|
||||
import org.meshtastic.core.strings.low_battery
|
||||
import org.meshtastic.core.strings.new_nodes
|
||||
import org.meshtastic.core.strings.next
|
||||
import org.meshtastic.core.strings.notification_permissions_description
|
||||
import org.meshtastic.core.strings.notifications_for_channel_and_direct_messages
|
||||
import org.meshtastic.core.strings.notifications_for_low_battery_alerts
|
||||
import org.meshtastic.core.strings.notifications_for_newly_discovered_nodes
|
||||
import org.meshtastic.core.strings.settings
|
||||
|
||||
/**
|
||||
* Screen for configuring notification permissions during the app introduction. It explains why notification permissions
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
package org.meshtastic.feature.intro
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.foundation.gestures.detectTapGestures
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
|
|
@ -37,13 +36,15 @@ import androidx.compose.runtime.setValue
|
|||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.TextLayoutResult
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.meshtastic.core.strings.R as Res
|
||||
import org.jetbrains.compose.resources.StringResource
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import org.meshtastic.core.strings.Res
|
||||
import org.meshtastic.core.strings.skip
|
||||
|
||||
/**
|
||||
* A generic layout for screens within the app introduction flow. It typically presents a headline, a descriptive text
|
||||
|
|
@ -60,13 +61,13 @@ import org.meshtastic.core.strings.R as Res
|
|||
*/
|
||||
@Composable
|
||||
internal fun PermissionScreenLayout(
|
||||
@StringRes headlineRes: Int,
|
||||
headlineRes: StringResource,
|
||||
annotatedDescription: AnnotatedString,
|
||||
features: List<FeatureUIData>,
|
||||
additionalContent: (@Composable () -> Unit)? = null,
|
||||
onSkip: () -> Unit,
|
||||
onConfigure: () -> Unit,
|
||||
@StringRes configureButtonTextRes: Int,
|
||||
configureButtonTextRes: StringResource,
|
||||
onAnnotationClick: (String) -> Unit,
|
||||
) {
|
||||
var textLayoutResult by remember { mutableStateOf<TextLayoutResult?>(null) }
|
||||
|
|
|
|||
|
|
@ -35,12 +35,21 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.meshtastic.core.strings.R as Res
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import org.meshtastic.core.strings.Res
|
||||
import org.meshtastic.core.strings.communicate_off_the_grid
|
||||
import org.meshtastic.core.strings.create_your_own_networks
|
||||
import org.meshtastic.core.strings.easily_set_up_private_mesh_networks
|
||||
import org.meshtastic.core.strings.get_started
|
||||
import org.meshtastic.core.strings.intro_welcome
|
||||
import org.meshtastic.core.strings.meshtastic
|
||||
import org.meshtastic.core.strings.share_your_location_in_real_time
|
||||
import org.meshtastic.core.strings.stay_connected_anywhere
|
||||
import org.meshtastic.core.strings.track_and_share_locations
|
||||
|
||||
/**
|
||||
* The initial welcome screen for the app introduction flow. It displays a brief overview of the app's key features.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue