kopia lustrzana https://github.com/meshtastic/Meshtastic-Android
Refactor: Use string resources for config and module titles
The titles for config and module settings are now retrieved from string resources instead of being hardcoded. This commit adds new string resources for the titles of config and module routes, such as "User", "Channels", "Device", "MQTT", and "Serial". It also changes `ModuleRoute` and `ConfigRoute` classes to use `stringRes` to refer to these string resources, and changes `RadioConfig` class to use `stringResource` to retrieve the title.pull/1794/head
rodzic
fd709addc8
commit
9bd9108f5e
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
package com.geeksville.mesh.ui.radioconfig
|
package com.geeksville.mesh.ui.radioconfig
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.List
|
import androidx.compose.material.icons.automirrored.filled.List
|
||||||
import androidx.compose.material.icons.filled.Bluetooth
|
import androidx.compose.material.icons.filled.Bluetooth
|
||||||
|
@ -30,21 +31,22 @@ import androidx.compose.material.icons.filled.Security
|
||||||
import androidx.compose.material.icons.filled.Wifi
|
import androidx.compose.material.icons.filled.Wifi
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import com.geeksville.mesh.MeshProtos.DeviceMetadata
|
import com.geeksville.mesh.MeshProtos.DeviceMetadata
|
||||||
|
import com.geeksville.mesh.R
|
||||||
import com.geeksville.mesh.navigation.Route
|
import com.geeksville.mesh.navigation.Route
|
||||||
|
|
||||||
@Suppress("MagicNumber")
|
@Suppress("MagicNumber")
|
||||||
// Config (type = AdminProtos.AdminMessage.ConfigType)
|
// Config (type = AdminProtos.AdminMessage.ConfigType)
|
||||||
enum class ConfigRoute(val title: String, val route: Route, val icon: ImageVector?, val type: Int = 0) {
|
enum class ConfigRoute(@StringRes val title: Int, val route: Route, val icon: ImageVector?, val type: Int = 0) {
|
||||||
USER("User", Route.User, Icons.Default.Person, 0),
|
USER(R.string.user, Route.User, Icons.Default.Person, 0),
|
||||||
CHANNELS("Channels", Route.ChannelConfig, Icons.AutoMirrored.Default.List, 0),
|
CHANNELS(R.string.channels, Route.ChannelConfig, Icons.AutoMirrored.Default.List, 0),
|
||||||
DEVICE("Device", Route.Device, Icons.Default.Router, 0),
|
DEVICE(R.string.device, Route.Device, Icons.Default.Router, 0),
|
||||||
POSITION("Position", Route.Position, Icons.Default.LocationOn, 1),
|
POSITION(R.string.position, Route.Position, Icons.Default.LocationOn, 1),
|
||||||
POWER("Power", Route.Power, Icons.Default.Power, 2),
|
POWER(R.string.power, Route.Power, Icons.Default.Power, 2),
|
||||||
NETWORK("Network", Route.Network, Icons.Default.Wifi, 3),
|
NETWORK(R.string.network, Route.Network, Icons.Default.Wifi, 3),
|
||||||
DISPLAY("Display", Route.Display, Icons.Default.DisplaySettings, 4),
|
DISPLAY(R.string.display, Route.Display, Icons.Default.DisplaySettings, 4),
|
||||||
LORA("LoRa", Route.LoRa, Icons.Default.CellTower, 5),
|
LORA(R.string.lora, Route.LoRa, Icons.Default.CellTower, 5),
|
||||||
BLUETOOTH("Bluetooth", Route.Bluetooth, Icons.Default.Bluetooth, 6),
|
BLUETOOTH(R.string.bluetooth, Route.Bluetooth, Icons.Default.Bluetooth, 6),
|
||||||
SECURITY("Security", Route.Security, Icons.Default.Security, 7),
|
SECURITY(R.string.security, Route.Security, Icons.Default.Security, 7),
|
||||||
;
|
;
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
package com.geeksville.mesh.ui.radioconfig
|
package com.geeksville.mesh.ui.radioconfig
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.Forward
|
import androidx.compose.material.icons.automirrored.filled.Forward
|
||||||
import androidx.compose.material.icons.automirrored.filled.Message
|
import androidx.compose.material.icons.automirrored.filled.Message
|
||||||
|
@ -33,24 +34,25 @@ import androidx.compose.material.icons.filled.Speed
|
||||||
import androidx.compose.material.icons.filled.Usb
|
import androidx.compose.material.icons.filled.Usb
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import com.geeksville.mesh.MeshProtos.DeviceMetadata
|
import com.geeksville.mesh.MeshProtos.DeviceMetadata
|
||||||
|
import com.geeksville.mesh.R
|
||||||
import com.geeksville.mesh.navigation.Route
|
import com.geeksville.mesh.navigation.Route
|
||||||
|
|
||||||
@Suppress("MagicNumber")
|
@Suppress("MagicNumber")
|
||||||
// ModuleConfig (type = AdminProtos.AdminMessage.ModuleConfigType)
|
// ModuleConfig (type = AdminProtos.AdminMessage.ModuleConfigType)
|
||||||
enum class ModuleRoute(val title: String, val route: Route, val icon: ImageVector?, val type: Int = 0) {
|
enum class ModuleRoute(@StringRes val title: Int, val route: Route, val icon: ImageVector?, val type: Int = 0) {
|
||||||
MQTT("MQTT", Route.MQTT, Icons.Default.Cloud, 0),
|
MQTT(R.string.mqtt, Route.MQTT, Icons.Default.Cloud, 0),
|
||||||
SERIAL("Serial", Route.Serial, Icons.Default.Usb, 1),
|
SERIAL(R.string.serial, Route.Serial, Icons.Default.Usb, 1),
|
||||||
EXT_NOTIFICATION("External Notification", Route.ExtNotification, Icons.Default.Notifications, 2),
|
EXT_NOTIFICATION(R.string.external_notification, Route.ExtNotification, Icons.Default.Notifications, 2),
|
||||||
STORE_FORWARD("Store & Forward", Route.StoreForward, Icons.AutoMirrored.Default.Forward, 3),
|
STORE_FORWARD(R.string.store_forward, Route.StoreForward, Icons.AutoMirrored.Default.Forward, 3),
|
||||||
RANGE_TEST("Range Test", Route.RangeTest, Icons.Default.Speed, 4),
|
RANGE_TEST(R.string.range_test, Route.RangeTest, Icons.Default.Speed, 4),
|
||||||
TELEMETRY("Telemetry", Route.Telemetry, Icons.Default.DataUsage, 5),
|
TELEMETRY(R.string.telemetry, Route.Telemetry, Icons.Default.DataUsage, 5),
|
||||||
CANNED_MESSAGE("Canned Message", Route.CannedMessage, Icons.AutoMirrored.Default.Message, 6),
|
CANNED_MESSAGE(R.string.canned_message, Route.CannedMessage, Icons.AutoMirrored.Default.Message, 6),
|
||||||
AUDIO("Audio", Route.Audio, Icons.AutoMirrored.Default.VolumeUp, 7),
|
AUDIO(R.string.audio, Route.Audio, Icons.AutoMirrored.Default.VolumeUp, 7),
|
||||||
REMOTE_HARDWARE("Remote Hardware", Route.RemoteHardware, Icons.Default.SettingsRemote, 8),
|
REMOTE_HARDWARE(R.string.remote_hardware, Route.RemoteHardware, Icons.Default.SettingsRemote, 8),
|
||||||
NEIGHBOR_INFO("Neighbor Info", Route.NeighborInfo, Icons.Default.People, 9),
|
NEIGHBOR_INFO(R.string.neighbor_info, Route.NeighborInfo, Icons.Default.People, 9),
|
||||||
AMBIENT_LIGHTING("Ambient Lighting", Route.AmbientLighting, Icons.Default.LightMode, 10),
|
AMBIENT_LIGHTING(R.string.ambient_lighting, Route.AmbientLighting, Icons.Default.LightMode, 10),
|
||||||
DETECTION_SENSOR("Detection Sensor", Route.DetectionSensor, Icons.Default.Sensors, 11),
|
DETECTION_SENSOR(R.string.detection_sensor, Route.DetectionSensor, Icons.Default.Sensors, 11),
|
||||||
PAXCOUNTER("Paxcounter", Route.Paxcounter, Icons.Default.PermScanWifi, 12),
|
PAXCOUNTER(R.string.paxcounter, Route.Paxcounter, Icons.Default.PermScanWifi, 12),
|
||||||
;
|
;
|
||||||
|
|
||||||
val bitfield: Int get() = 1 shl ordinal
|
val bitfield: Int get() = 1 shl ordinal
|
||||||
|
|
|
@ -301,12 +301,12 @@ private fun RadioConfigItemList(
|
||||||
) {
|
) {
|
||||||
item { PreferenceCategory(stringResource(R.string.device_settings)) }
|
item { PreferenceCategory(stringResource(R.string.device_settings)) }
|
||||||
items(ConfigRoute.filterExcludedFrom(state.metadata)) {
|
items(ConfigRoute.filterExcludedFrom(state.metadata)) {
|
||||||
NavCard(title = it.title, icon = it.icon, enabled = enabled) { onRouteClick(it) }
|
NavCard(title = stringResource(it.title), icon = it.icon, enabled = enabled) { onRouteClick(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
item { PreferenceCategory(stringResource(R.string.module_settings)) }
|
item { PreferenceCategory(stringResource(R.string.module_settings)) }
|
||||||
items(ModuleRoute.filterExcludedFrom(state.metadata)) {
|
items(ModuleRoute.filterExcludedFrom(state.metadata)) {
|
||||||
NavCard(title = it.title, icon = it.icon, enabled = enabled) { onRouteClick(it) }
|
NavCard(title = stringResource(it.title), icon = it.icon, enabled = enabled) { onRouteClick(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.isLocal) {
|
if (state.isLocal) {
|
||||||
|
|
|
@ -348,4 +348,27 @@
|
||||||
<string name="udp_config">UDP Config</string>
|
<string name="udp_config">UDP Config</string>
|
||||||
<string name="map_node_popup_details"><![CDATA[%s<br>Last heard: %s<br>Last position: %s<br>Battery: %s]]></string>
|
<string name="map_node_popup_details"><![CDATA[%s<br>Last heard: %s<br>Last position: %s<br>Battery: %s]]></string>
|
||||||
<string name="toggle_my_position">Toggle my position</string>
|
<string name="toggle_my_position">Toggle my position</string>
|
||||||
|
<string name="user">User</string>
|
||||||
|
<string name="channels">Channels</string>
|
||||||
|
<string name="device">Device</string>
|
||||||
|
<string name="position">Position</string>
|
||||||
|
<string name="power">Power</string>
|
||||||
|
<string name="network">Network</string>
|
||||||
|
<string name="display">Display</string>
|
||||||
|
<string name="lora">LoRa</string>
|
||||||
|
<string name="bluetooth">Bluetooth</string>
|
||||||
|
<string name="security">Security</string>
|
||||||
|
<string name="mqtt">MQTT</string>
|
||||||
|
<string name="serial">Serial</string>
|
||||||
|
<string name="external_notification">External Notification</string>
|
||||||
|
<string name="store_forward"><![CDATA[Store & Forward]]></string>
|
||||||
|
<string name="range_test">Range Test</string>
|
||||||
|
<string name="telemetry">Telemetry</string>
|
||||||
|
<string name="canned_message">Canned Message</string>
|
||||||
|
<string name="audio">Audio</string>
|
||||||
|
<string name="remote_hardware">Remote Hardware</string>
|
||||||
|
<string name="neighbor_info">Neighbor Info</string>
|
||||||
|
<string name="ambient_lighting">Ambient Lighting</string>
|
||||||
|
<string name="detection_sensor">Detection Sensor</string>
|
||||||
|
<string name="paxcounter">Paxcounter</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Ładowanie…
Reference in New Issue