geeksville 2020-08-12 12:31:37 -07:00
rodzic dbe1d8065a
commit 93d4cd99fd
2 zmienionych plików z 20 dodań i 3 usunięć

Wyświetl plik

@ -8,6 +8,7 @@ import com.google.zxing.BarcodeFormat
import com.google.zxing.MultiFormatWriter
import com.journeyapps.barcodescanner.BarcodeEncoder
import java.net.MalformedURLException
import kotlin.experimental.xor
/** Utility function to make it easy to declare byte arrays - FIXME move someplace better */
fun byteArrayOfInts(vararg ints: Int) = ByteArray(ints.size) { pos -> ints[pos].toByte() }
@ -52,6 +53,17 @@ data class Channel(
val name: String get() = settings.name
val modemConfig: MeshProtos.ChannelSettings.ModemConfig get() = settings.modemConfig
/**
* Return a name that is formatted as #channename-suffix
*
* Where suffix indicates the hash of the PSK
*/
val humanName: String
get() {
val code = settings.psk.fold(0.toByte(), { acc, x -> acc xor x })
return "#${settings.name}-${'A' + (code % 26)}"
}
/// Can this channel be changed right now?
var editable = false

Wyświetl plik

@ -77,7 +77,7 @@ class ChannelFragment : ScreenFragment("Channel"), Logging {
if (channel != null) {
qrView.visibility = View.VISIBLE
channelNameEdit.visibility = View.VISIBLE
channelNameEdit.setText(channel.name)
channelNameEdit.setText(channel.humanName)
// For now, we only let the user edit/save channels while the radio is awake - because the service
// doesn't cache radioconfig writes.
@ -134,7 +134,12 @@ class ChannelFragment : ScreenFragment("Channel"), Logging {
}
editableCheckbox.setOnCheckedChangeListener { _, checked ->
if (!checked) {
if (checked) {
// User just unlocked for editing - remove the # goo around the channel name
UIViewModel.getChannel(model.radioConfig.value)?.let { channel ->
channelNameEdit.setText(channel.name)
}
} else {
// User just locked it, we should warn and then apply changes to radio
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.change_channel)