diff --git a/app/src/main/java/com/afkanerd/deku/RemoteListeners/RMQ/RMQLongRunningConnectionWorker.kt b/app/src/main/java/com/afkanerd/deku/RemoteListeners/RMQ/RMQLongRunningConnectionWorker.kt
index d3ee5b8d7..6de89e40a 100644
--- a/app/src/main/java/com/afkanerd/deku/RemoteListeners/RMQ/RMQLongRunningConnectionWorker.kt
+++ b/app/src/main/java/com/afkanerd/deku/RemoteListeners/RMQ/RMQLongRunningConnectionWorker.kt
@@ -36,14 +36,16 @@ class RMQLongRunningConnectionWorker(context: Context, parameters: WorkerParamet
notificationIntent,
PendingIntent.FLAG_IMMUTABLE)
- val title = "Long running..."
+ val title = applicationContext
+ .getString(R.string.remote_listeners_long_running_notification_title)
val description = ""
val notification =
NotificationCompat.Builder( applicationContext,
applicationContext.getString(R.string.running_gateway_clients_channel_id))
.setContentTitle(title)
- .setContentText("Status")
+ .setContentText(applicationContext
+ .getString(R.string.remote_listeners_notification_status))
.setSmallIcon(R.drawable.ic_stat_name)
.setPriority(NotificationCompat.PRIORITY_LOW)
.setSilent(true)
diff --git a/app/src/main/java/com/afkanerd/deku/RemoteListeners/RemoteListenerConnectionService.kt b/app/src/main/java/com/afkanerd/deku/RemoteListeners/RemoteListenerConnectionService.kt
index b26992aff..f507fee90 100644
--- a/app/src/main/java/com/afkanerd/deku/RemoteListeners/RemoteListenerConnectionService.kt
+++ b/app/src/main/java/com/afkanerd/deku/RemoteListeners/RemoteListenerConnectionService.kt
@@ -225,23 +225,24 @@ class RemoteListenerConnectionService : Service() {
notificationIntent,
PendingIntent.FLAG_IMMUTABLE)
- val title = "$numberOfActiveRemoteListeners Active..."
- val description = ""
- .plus("# Failed to start: ")
- .plus("$numberFailedToStart\n")
- .plus("# Waiting to start: ")
- .plus("$numberWaitingToStart\n")
- .plus("# Starting: ")
- .plus("$numberStarting\n")
- .plus("# Connected: ")
- .plus(numberStarted)
+ val title = getString(
+ R.string.remote_listeners_active_notification_title,
+ numberOfActiveRemoteListeners
+ )
+ val description = getString(
+ R.string.remote_listeners_notification_body,
+ numberFailedToStart,
+ numberWaitingToStart,
+ numberStarting,
+ numberStarted
+ )
val notification =
NotificationCompat.Builder(
applicationContext,
getString(R.string.running_gateway_clients_channel_id))
.setContentTitle(title)
- .setContentText("Status")
+ .setContentText(getString(R.string.remote_listeners_notification_status))
.setSmallIcon(R.drawable.ic_stat_name)
.setPriority(NotificationCompat.PRIORITY_LOW)
.setSilent(true)
diff --git a/app/src/main/java/com/afkanerd/deku/RemoteListeners/components/Permissions.kt b/app/src/main/java/com/afkanerd/deku/RemoteListeners/components/Permissions.kt
index cb8224304..b583ed271 100644
--- a/app/src/main/java/com/afkanerd/deku/RemoteListeners/components/Permissions.kt
+++ b/app/src/main/java/com/afkanerd/deku/RemoteListeners/components/Permissions.kt
@@ -22,7 +22,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalInspectionMode
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
+import com.afkanerd.deku.DefaultSMS.R
import com.afkanerd.deku.RemoteListeners.ui.requiredNotificationsPermissions
import com.afkanerd.deku.RemoteListeners.ui.requiredReadPhoneStatePermissions
import com.afkanerd.deku.RemoteListeners.ui.requiredReceiveSMSPermission
@@ -39,10 +41,11 @@ fun NotificationPermissionComposable() {
rememberLauncherForActivityResult(ActivityResultContracts.RequestPermission()) {
isGranted ->
if(isGranted) {
- Toast.makeText(context, "Well done!", Toast.LENGTH_LONG).show()
+ Toast.makeText(context, R.string.permission_notification_granted_toast,
+ Toast.LENGTH_LONG).show()
} else {
- Toast.makeText(context, "We cannot do without this one...", Toast.LENGTH_LONG)
- .show()
+ Toast.makeText(context, R.string.permission_notification_denied_toast,
+ Toast.LENGTH_LONG).show()
}
}
@@ -63,7 +66,7 @@ fun NotificationPermissionComposable() {
) {
Icon(imageVector = Icons.Outlined.Info, "", tint=MaterialTheme.colorScheme.secondary)
Text(
- "When not default SMS app, you need to grant permissions for listeners to show notifications when changing.",
+ stringResource(R.string.permission_notification_rationale),
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onTertiaryContainer,
modifier = Modifier.padding(start=16.dp, end=16.dp, top=8.dp)
@@ -78,7 +81,7 @@ fun NotificationPermissionComposable() {
TextButton(onClick = {
getNotificationsPermissionsLauncher.launch(requiredNotificationsPermissions)
}) {
- Text("Grant notification permission")
+ Text(stringResource(R.string.permission_grant_notification))
}
}
}
@@ -93,9 +96,11 @@ fun PhoneStatePermissionComposable() {
rememberLauncherForActivityResult(ActivityResultContracts.RequestPermission()) {
isGranted ->
if(isGranted) {
- Toast.makeText(context, "Well done, carry on!", Toast.LENGTH_LONG).show()
+ Toast.makeText(context, R.string.permission_phone_state_granted_toast,
+ Toast.LENGTH_LONG).show()
} else {
- Toast.makeText(context, "You can at anytime...", Toast.LENGTH_LONG).show()
+ Toast.makeText(context, R.string.permission_phone_state_denied_toast,
+ Toast.LENGTH_LONG).show()
}
}
@@ -116,7 +121,7 @@ fun PhoneStatePermissionComposable() {
) {
Icon(imageVector = Icons.Outlined.Info, "", tint=MaterialTheme.colorScheme.secondary)
Text(
- "When not default SMS app, you need to grant permissions for listeners to check for sim status and dual sim information.",
+ stringResource(R.string.permission_phone_state_rationale),
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onTertiaryContainer,
modifier = Modifier.padding(start=16.dp, end=16.dp, top=8.dp)
@@ -132,7 +137,7 @@ fun PhoneStatePermissionComposable() {
getReadPhoneStatePermissionsLauncher
.launch(requiredReadPhoneStatePermissions)
}) {
- Text("Grant phone state permission")
+ Text(stringResource(R.string.permission_grant_phone_state))
}
}
}
@@ -148,9 +153,11 @@ fun SMSPermissionComposable() {
rememberLauncherForActivityResult(ActivityResultContracts.RequestPermission()) {
isGranted ->
if(isGranted) {
- Toast.makeText(context, "Carry on activating...", Toast.LENGTH_LONG).show()
+ Toast.makeText(context, R.string.permission_sms_granted_toast,
+ Toast.LENGTH_LONG).show()
} else {
- Toast.makeText(context, "I'd be back!", Toast.LENGTH_LONG).show()
+ Toast.makeText(context, R.string.permission_sms_denied_toast,
+ Toast.LENGTH_LONG).show()
}
}
@@ -174,7 +181,7 @@ fun SMSPermissionComposable() {
) {
Icon(imageVector = Icons.Outlined.Info, "", tint=MaterialTheme.colorScheme.secondary)
Text(
- "When not default SMS app, you need to grant permissions for listeners to send and receive delivery reports.",
+ stringResource(R.string.permission_sms_rationale),
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onTertiaryContainer,
modifier = Modifier.padding(start=16.dp, end=16.dp, top=8.dp)
@@ -190,14 +197,14 @@ fun SMSPermissionComposable() {
TextButton(onClick = {
getSMSPermissionLauncher.launch(requiredSendSMSPermission)
}) {
- Text("Grant send sms permission")
+ Text(stringResource(R.string.permission_grant_send_sms))
}
}
if(!smsReadSMSState.status.isGranted || LocalInspectionMode.current) {
TextButton(onClick = {
getSMSPermissionLauncher.launch(requiredReceiveSMSPermission)
}) {
- Text("Grant read sms permission")
+ Text(stringResource(R.string.permission_grant_read_sms))
}
}
}
diff --git a/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerModal.kt b/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerModal.kt
index 1e8527a11..e524215ae 100644
--- a/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerModal.kt
+++ b/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerModal.kt
@@ -18,9 +18,11 @@ import androidx.compose.runtime.mutableStateOf
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.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.afkanerd.deku.DefaultSMS.BuildConfig
+import com.afkanerd.deku.DefaultSMS.R
import com.example.compose.AppTheme
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
@@ -57,18 +59,22 @@ fun RemoteListenerModal(
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
- Text("Configure Remote listener",
+ Text(stringResource(R.string.remote_listener_configure_title),
style = MaterialTheme.typography.titleMedium)
Spacer(modifier = Modifier.padding(8.dp))
Button(onClick = connectionCallback, modifier = Modifier.fillMaxWidth()) {
- Text(if(activated) "Deactivate" else "Activate")
+ Text(stringResource(
+ if(activated) R.string.gateway_client_customization_deactivate
+ else R.string.gateway_client_customization_activate
+ ))
}
Text(
- if(activated)
- "Deactivating stops the remote listener and tries to kill all remote connections."
- else "Activating begins the service that tries to connect this remote listener",
+ stringResource(
+ if(activated) R.string.remote_listener_deactivate_description
+ else R.string.remote_listener_activate_description
+ ),
style = MaterialTheme.typography.labelSmall,
textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.secondary
@@ -76,11 +82,11 @@ fun RemoteListenerModal(
Spacer(modifier = Modifier.padding(16.dp))
Button(onClick = editCallback, modifier = Modifier.fillMaxWidth()) {
- Text("Edit" )
+ Text(stringResource(R.string.edit))
}
TextButton(onClick = deleteCallback) {
- Text("Delete", color = MaterialTheme.colorScheme.error)
+ Text(stringResource(R.string.delete), color = MaterialTheme.colorScheme.error)
}
}
}
diff --git a/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerReadPhoneStatePermissionModal.kt b/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerReadPhoneStatePermissionModal.kt
index 8184ad5b1..c1e57c295 100644
--- a/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerReadPhoneStatePermissionModal.kt
+++ b/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerReadPhoneStatePermissionModal.kt
@@ -20,10 +20,12 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
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 com.afkanerd.deku.DefaultSMS.BuildConfig
+import com.afkanerd.deku.DefaultSMS.R
import com.example.compose.AppTheme
@OptIn(ExperimentalMaterial3Api::class)
@@ -55,20 +57,20 @@ fun RemoteListenersReadPhoneStatePermissionModal(
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
- "Permission required!",
+ stringResource(R.string.permission_required_title),
style = MaterialTheme.typography.titleMedium
)
Spacer(Modifier.padding(16.dp))
Text(
- "Grant permission to detect how many SIM cards you have on your device",
+ stringResource(R.string.remote_listener_phone_state_permission_description),
textAlign = TextAlign.Center
)
Spacer(Modifier.padding(8.dp))
Text(
- "This would also auto fill useful information which can help you identify your various queues.",
+ stringResource(R.string.remote_listener_phone_state_permission_hint),
style = MaterialTheme.typography.labelMedium,
textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.secondary
@@ -76,7 +78,7 @@ fun RemoteListenersReadPhoneStatePermissionModal(
Spacer(Modifier.padding(12.dp))
Button(onClick = grantPermissionsCallback) {
- Text("Grant permission")
+ Text(stringResource(R.string.permission_grant))
}
}
}
diff --git a/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerSMSPermissionsModal.kt b/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerSMSPermissionsModal.kt
index 39b5433a3..40fef7d2f 100644
--- a/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerSMSPermissionsModal.kt
+++ b/app/src/main/java/com/afkanerd/deku/RemoteListeners/modals/RemoteListenerSMSPermissionsModal.kt
@@ -20,10 +20,12 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
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 com.afkanerd.deku.DefaultSMS.BuildConfig
+import com.afkanerd.deku.DefaultSMS.R
import com.example.compose.AppTheme
@OptIn(ExperimentalMaterial3Api::class)
@@ -55,20 +57,20 @@ fun RemoteListenerSMSPermissionsModal(
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
- "Permission required!",
+ stringResource(R.string.permission_required_title),
style = MaterialTheme.typography.titleMedium
)
Spacer(Modifier.padding(16.dp))
Text(
- "Remote listeners sends messages and listen for delivery reports. This requires permission to read and write SMS messages.",
+ stringResource(R.string.remote_listener_sms_permission_description),
textAlign = TextAlign.Center
)
Spacer(Modifier.padding(8.dp))
Text(
- "You can make the app your default SMS app, or choose to grant the necessary permissions",
+ stringResource(R.string.remote_listener_sms_permission_hint),
style = MaterialTheme.typography.labelMedium,
textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.secondary
@@ -76,7 +78,7 @@ fun RemoteListenerSMSPermissionsModal(
Spacer(Modifier.padding(16.dp))
Button(onClick = makeDefaultCallback) {
- Text("Make default")
+ Text(stringResource(R.string.remote_listener_make_default))
}
}
}
diff --git a/app/src/main/java/com/afkanerd/deku/Router/ui/GatewayClientsMainView.kt b/app/src/main/java/com/afkanerd/deku/Router/ui/GatewayClientsMainView.kt
index fe0a8ab66..7eb968234 100644
--- a/app/src/main/java/com/afkanerd/deku/Router/ui/GatewayClientsMainView.kt
+++ b/app/src/main/java/com/afkanerd/deku/Router/ui/GatewayClientsMainView.kt
@@ -94,7 +94,7 @@ fun GatewayClientsMainView(
DropdownMenuItem(
text = {
Text(
- text = "Add SMTP forwarder",
+ text = stringResource(R.string.add_smtp_forwarders),
color = MaterialTheme.colorScheme.onBackground
)
},
@@ -113,7 +113,7 @@ fun GatewayClientsMainView(
IconButton(onClick = { navController.popBackStack() }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
- contentDescription = "go back"
+ contentDescription = stringResource(R.string.go_back)
)
}
},
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3c8d88b92..cf7534814 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -456,4 +456,40 @@
Secure message accepted
Enter subject
+
+ Permission required!
+ Grant permission
+ Grant notification permission
+ Grant phone state permission
+ Grant send sms permission
+ Grant read sms permission
+ When not default SMS app, you need to grant permissions for listeners to show notifications when changing.
+ When not default SMS app, you need to grant permissions for listeners to check for sim status and dual sim information.
+ When not default SMS app, you need to grant permissions for listeners to send and receive delivery reports.
+ Well done!
+ We cannot do without this one…
+ Well done, carry on!
+ You can at anytime…
+ Carry on activating…
+ I\'d be back!
+
+
+ Remote listeners sends messages and listen for delivery reports. This requires permission to read and write SMS messages.
+ You can make the app your default SMS app, or choose to grant the necessary permissions
+ Make default
+ Grant permission to detect how many SIM cards you have on your device
+ This would also auto fill useful information which can help you identify your various queues.
+ Configure Remote listener
+ Activating begins the service that tries to connect this remote listener
+ Deactivating stops the remote listener and tries to kill all remote connections.
+
+
+ %1$d active…
+ Long running…
+ Status
+ # Failed to start: %1$d\n# Waiting to start: %2$d\n# Starting: %3$d\n# Connected: %4$d
+
+
+ Add SMTP forwarder
+
\ No newline at end of file