From bb2b11264d177115ed0dbbbb2d95f90aafb343af Mon Sep 17 00:00:00 2001 From: geeksville Date: Mon, 17 Feb 2020 20:00:11 -0800 Subject: [PATCH] placeholder channel screen --- .../geeksville/mesh/service/MeshService.kt | 15 +++-- .../java/com/geeksville/mesh/ui/Channel.kt | 53 ++++++++++++++++++ .../java/com/geeksville/mesh/ui/MeshApp.kt | 37 ++---------- .../src/main/res/drawable}/qrcode.png | Bin 4 files changed, 68 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/com/geeksville/mesh/ui/Channel.kt rename {images => app/src/main/res/drawable}/qrcode.png (100%) diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index 47785faea..eb32e60b3 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -615,12 +615,17 @@ class MeshService : Service(), Logging { debug("Received broadcast ${intent.action}") when (intent.action) { RadioInterfaceService.RADIO_CONNECTED_ACTION -> { - onConnectionChanged(intent.getBooleanExtra(EXTRA_CONNECTED, false)) + try { + onConnectionChanged(intent.getBooleanExtra(EXTRA_CONNECTED, false)) - // forward the connection change message to anyone who is listening to us. but change the action - // to prevent an infinite loop from us receiving our own broadcast. ;-) - intent.action = ACTION_MESH_CONNECTED - explicitBroadcast(intent) + // forward the connection change message to anyone who is listening to us. but change the action + // to prevent an infinite loop from us receiving our own broadcast. ;-) + intent.action = ACTION_MESH_CONNECTED + explicitBroadcast(intent) + } catch (ex: RemoteException) { + // This can happen sometimes (especially if the device is slowly dying due to killing power, don't report to crashlytics + warn("Abandoning reconnect attempt, due to errors during init: ${ex.message}") + } } RadioInterfaceService.RECEIVE_FROMRADIO_ACTION -> { diff --git a/app/src/main/java/com/geeksville/mesh/ui/Channel.kt b/app/src/main/java/com/geeksville/mesh/ui/Channel.kt new file mode 100644 index 000000000..77443877d --- /dev/null +++ b/app/src/main/java/com/geeksville/mesh/ui/Channel.kt @@ -0,0 +1,53 @@ +package com.geeksville.mesh.ui + +import androidx.compose.Composable +import androidx.ui.core.Text +import androidx.ui.foundation.DrawImage +import androidx.ui.layout.* +import androidx.ui.material.MaterialTheme +import androidx.ui.res.imageResource +import androidx.ui.tooling.preview.Preview +import androidx.ui.unit.dp +import com.geeksville.mesh.R + +/// The Compose IDE preview doesn't like the protobufs +data class Channel(val name: String, val num: Int) + +@Composable +fun ChannelContent(channel: Channel = Channel("Default", 7)) { + val typography = MaterialTheme.typography() + + Column(modifier = LayoutSize.Fill + LayoutPadding(16.dp)) { + Text( + text = "Channel: ${channel.name}", + modifier = LayoutGravity.Center, + style = typography.h4 + ) + + Row { + val image = imageResource(id = R.drawable.qrcode) + Container(modifier = LayoutGravity.Center + LayoutSize.Min(320.dp, 320.dp)) { + DrawImage(image = image) + } + } + + Text( + text = "Number: ${channel.num}", + modifier = LayoutGravity.Center + ) + Text( + text = "Mode: Long range (but slow)", + modifier = LayoutGravity.Center + ) + } +} + + +@Preview +@Composable +fun previewChannel() { + // another bug? It seems modaldrawerlayout not yet supported in preview + MaterialTheme(colors = palette) { + ChannelContent() + } +} diff --git a/app/src/main/java/com/geeksville/mesh/ui/MeshApp.kt b/app/src/main/java/com/geeksville/mesh/ui/MeshApp.kt index 8d5b3aeee..bfef6d83e 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MeshApp.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MeshApp.kt @@ -3,16 +3,13 @@ package com.geeksville.mesh.ui import androidx.compose.Composable import androidx.compose.state import androidx.ui.animation.Crossfade -import androidx.ui.core.Clip import androidx.ui.core.Text -import androidx.ui.core.TextField -import androidx.ui.foundation.shape.corner.RoundedCornerShape -import androidx.ui.graphics.Color -import androidx.ui.input.ImeAction -import androidx.ui.layout.* +import androidx.ui.layout.Column +import androidx.ui.layout.Container +import androidx.ui.layout.LayoutSize +import androidx.ui.layout.Row import androidx.ui.material.* import androidx.ui.material.surface.Surface -import androidx.ui.text.TextStyle import androidx.ui.tooling.preview.Preview import androidx.ui.unit.dp import com.geeksville.android.Logging @@ -47,30 +44,6 @@ fun HomeContent() { NodeInfoCard(it) } - val state = state { "fixme bob" } - Surface(color = Color.LightGray) { - Row { - Clip(shape = RoundedCornerShape(15.dp)) { - Padding(padding = 15.dp) { - TextField( - value = state.value, - onValueChange = { state.value = it }, - textStyle = TextStyle( - color = Color.DarkGray - ), - imeAction = ImeAction.Done, - onImeActionPerformed = { - UILog.info("did IME action") - } - ) - } - } - - Text(text = getInitials(state.value)) - } - } - - /* FIXME - doens't work yet - probably because I'm not using release keys // If account is null, then show the signin button, otherwise val context = ambient(ContextAmbient) @@ -158,7 +131,7 @@ private fun AppContent(openDrawer: () -> Unit) { Screen.messages -> MessagesContent() Screen.settings -> BTScanScreen() Screen.users -> HomeContent() - Screen.channel -> HomeContent() + Screen.channel -> ChannelContent() else -> TODO() } //} diff --git a/images/qrcode.png b/app/src/main/res/drawable/qrcode.png similarity index 100% rename from images/qrcode.png rename to app/src/main/res/drawable/qrcode.png