From ca1ada085e0fde229f98c052cc683a4757a881a1 Mon Sep 17 00:00:00 2001 From: geeksville Date: Sun, 19 Apr 2020 12:00:41 -0700 Subject: [PATCH] use parcelize to eliminate boilerplate code --- .../main/java/com/geeksville/mesh/NodeInfo.kt | 88 +------------------ .../geeksville/mesh/service/MeshService.kt | 2 - 2 files changed, 4 insertions(+), 86 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt index c335a813f..e430520e0 100644 --- a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt +++ b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt @@ -1,6 +1,5 @@ package com.geeksville.mesh -import android.os.Parcel import android.os.Parcelable import com.geeksville.mesh.ui.bearing import com.geeksville.mesh.ui.latLongToMeter @@ -62,99 +61,40 @@ data class DataPacket( } } +@Parcelize data class MeshUser(val id: String, val longName: String, val shortName: String) : Parcelable { - constructor(parcel: Parcel) : this( - parcel.readString()!!, - parcel.readString()!!, - parcel.readString()!! - ) { - } - - override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeString(id) - parcel.writeString(longName) - parcel.writeString(shortName) - } - - override fun describeContents(): Int { - return 0 - } - - companion object CREATOR : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel): MeshUser { - return MeshUser(parcel) - } - - override fun newArray(size: Int): Array { - return arrayOfNulls(size) - } - } override fun toString(): String { return "MeshUser(id=${id.anonymized}, longName=${longName.anonymized}, shortName=${shortName.anonymized})" } } +@Parcelize data class Position( val latitude: Double, val longitude: Double, val altitude: Int, val time: Int = (System.currentTimeMillis() / 1000).toInt() // default to current time in secs -) : - Parcelable { - constructor(parcel: Parcel) : this( - parcel.readDouble(), - parcel.readDouble(), - parcel.readInt(), - parcel.readInt() - ) { - } - +) : Parcelable { /// @return distance in meters to some other node (or null if unknown) fun distance(o: Position) = latLongToMeter(latitude, longitude, o.latitude, o.longitude) /// @return bearing to the other position in degrees fun bearing(o: Position) = bearing(latitude, longitude, o.latitude, o.longitude) - override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeDouble(latitude) - parcel.writeDouble(longitude) - parcel.writeInt(altitude) - parcel.writeInt(time) - } - - override fun describeContents(): Int { - return 0 - } - - companion object CREATOR : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel): Position { - return Position(parcel) - } - - override fun newArray(size: Int): Array { - return arrayOfNulls(size) - } - } - override fun toString(): String { return "Position(lat=${latitude.anonymized}, lon=${longitude.anonymized}, alt=${altitude.anonymized}, time=${time})" } } +@Parcelize data class NodeInfo( val num: Int, // This is immutable, and used as a key var user: MeshUser? = null, var position: Position? = null ) : Parcelable { - constructor(parcel: Parcel) : this( - parcel.readInt(), - parcel.readParcelable(MeshUser::class.java.classLoader), - parcel.readParcelable(Position::class.java.classLoader) - ) { - } /// Return the last time we've seen this node in secs since 1970 val lastSeen get() = position?.time ?: 0 @@ -198,24 +138,4 @@ data class NodeInfo( else -> "%.1f km".format(dist / 1000.0) } } - - override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeInt(num) - parcel.writeParcelable(user, flags) - parcel.writeParcelable(position, flags) - } - - override fun describeContents(): Int { - return 0 - } - - companion object CREATOR : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel): NodeInfo { - return NodeInfo(parcel) - } - - override fun newArray(size: Int): Array { - return arrayOfNulls(size) - } - } } \ No newline at end of file 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 1e250ec7e..7dc312c09 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -574,8 +574,6 @@ class MeshService : Service(), Logging { when (data.typValue) { MeshProtos.Data.Type.CLEAR_TEXT_VALUE -> { - val text = bytes.toString(utf8) - debug("Received CLEAR_TEXT from $fromId") recentReceivedText = dataPacket