Start to show certificates description

This commit is contained in:
Pierre HUBERT 2022-02-16 12:21:59 +01:00
parent afa65c8239
commit e7595892f8
3 changed files with 32 additions and 5 deletions

View File

@ -5,10 +5,10 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ImageView
import com.google.zxing.BarcodeFormat
import com.journeyapps.barcodescanner.BarcodeEncoder
import org.communiquons.dccaggregator.R
import org.communiquons.dccaggregator.databinding.QrEntryBinding
import org.communiquons.dccaggregator.ext.toDimensSize
import org.communiquons.dccaggregator.models.Certificate
@ -20,17 +20,23 @@ class CertificatesAdapter(cxt: Context, list: ArrayList<Certificate>) :
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view =
convertView ?: LayoutInflater.from(context).inflate(R.layout.qr_entry, parent, false)
val binding =
if (convertView == null)
QrEntryBinding.inflate(LayoutInflater.from(context), parent, false)
else QrEntryBinding.bind(convertView)
val cert = getItem(position) as Certificate
// Generate Qr code
val bitmap =
BarcodeEncoder().encodeBitmap(cert.encoded, BarcodeFormat.QR_CODE, qrSize, qrSize)
view.findViewById<ImageView>(R.id.certQrCode).setImageBitmap(bitmap)
binding.certQrCode.setImageBitmap(bitmap)
return view
binding.userName.text = cert.fullName
binding.dateOfBirth.text = cert.dateOfBirth
binding.certificateDescription.text = cert.descText(context)
return binding.root
}
}

View File

@ -1,9 +1,12 @@
package org.communiquons.dccaggregator.models
import android.content.Context
import dgca.verifier.app.decoder.CertificateDecodingResult
import dgca.verifier.app.decoder.DefaultCertificateDecoder
import dgca.verifier.app.decoder.base45.Base45Decoder
import dgca.verifier.app.decoder.model.GreenCertificate
import dgca.verifier.app.decoder.model.RecoveryStatement
import org.communiquons.dccaggregator.R
@OptIn(ExperimentalUnsignedTypes::class)
class Certificate(val encoded: String) {
@ -29,4 +32,19 @@ class Certificate(val encoded: String) {
* Get certificate id
*/
val id get() = decoded.getDgci()
val dateOfBirth get() = decoded.dateOfBirth
val recovery: RecoveryStatement? get() = decoded.recoveryStatements?.getOrNull(0)
fun descText(ctx: Context): String {
if (recovery != null)
return ctx.resources.getString(
R.string.desc_recovery_certificate,
recovery!!.dateOfFirstPositiveTest
)
return ctx.resources.getString(R.string.desc_unknown_certificate)
}
}

View File

@ -6,4 +6,7 @@
<string name="action_import_certificate">Import certificate</string>
<string name="invalid_certificate">The given certificate could not be decoded!</string>
<string name="certificate_qr_code">Certificate QR Code</string>
<string name="desc_recovery_certificate">Recovery certificate\nTested positive on %1$s</string>
<string name="desc_unknown_certificate">Unknown certificate type</string>
</resources>