Make title of parsed data a data item

Which is more structured than using it as a headline/label.

Also simplify using the last parsed data when the user edits
the source.
This commit is contained in:
Markus Fisch
2026-06-05 11:52:27 +02:00
parent 5472993e19
commit d7e687871c
29 changed files with 48 additions and 24 deletions
@@ -112,7 +112,6 @@ class DecodeActivity : AbstractBaseActivity() {
private var isBinary = false
private var originalBytes: ByteArray = ByteArray(0)
private var lastParsedDataItems: List<Field> = emptyList()
private var lastParsedDataTitleResId = 0
private var showingDimmed = false
private var label: String? = null
private var recreationSize = 0
@@ -369,33 +368,32 @@ class DecodeActivity : AbstractBaseActivity() {
isEditing: Boolean
) {
val items = mutableListOf<Field>()
val parsedDataTitleResId = parseData(items, text, bytes)
when (prefs.showChecksum) {
"CRC4" -> items.add(Field(R.string.crc4, String.format("%X", crc4(bytes))))
"MD5" -> items.add(Field(R.string.md5, bytes.md5().toHexString().fold()))
"SHA1" -> items.add(Field(R.string.sha1, bytes.sha1().toHexString().fold()))
"SHA256" -> items.add(Field(R.string.sha256, bytes.sha256().toHexString().fold()))
}
val count = items.count()
val parsedDataTitleResId = parseData(items, text, bytes)
if (items.count() > count) {
if (parsedDataTitleResId != 0) {
items.add(
0,
Field(
R.string.parsed_type,
getString(parsedDataTitleResId)
)
)
lastParsedDataItems = items
lastParsedDataTitleResId = parsedDataTitleResId
.takeIf { it != 0 } ?: R.string.section_parsed_data
fillDataItems(items, false, lastParsedDataTitleResId)
fillDataItems(items, false)
return
}
if (isEditing && lastParsedDataItems.isNotEmpty()) {
if (!showingDimmed) {
fillDataItems(lastParsedDataItems, true, lastParsedDataTitleResId)
fillDataItems(lastParsedDataItems, true)
}
return
}
val titleResId = if (items.isNotEmpty()) {
R.string.section_parsed_data
} else {
0
}
fillDataItems(items, false, titleResId)
fillDataItems(items, false)
}
private fun parseData(
@@ -418,7 +416,12 @@ class DecodeActivity : AbstractBaseActivity() {
}
try {
items.add(Field(R.string.formatted_json, JSONObject(text).toString(2)))
items.add(
Field(
R.string.formatted_json,
JSONObject(text).toString(2)
)
)
return R.string.parsed_type_json
} catch (_: JSONException) {
// Ignore
@@ -591,8 +594,7 @@ class DecodeActivity : AbstractBaseActivity() {
private fun LinearLayout.fillDataItems(
items: List<Field>,
dimmed: Boolean,
titleResId: Int
dimmed: Boolean
) {
showingDimmed = dimmed
removeAllViews()
@@ -601,12 +603,7 @@ class DecodeActivity : AbstractBaseActivity() {
visibility = View.GONE
return
}
if (titleResId != 0) {
dataHeadlineView.setText(titleResId)
dataHeadlineView.visibility = View.VISIBLE
} else {
dataHeadlineView.visibility = View.GONE
}
dataHeadlineView.visibility = View.VISIBLE
val ctx = context
val spaceBetween = (16f * dp).roundToInt()
for (item in items) {
@@ -18,6 +18,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:textStyle="bold"
android:text="@string/section_parsed_data"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/data"
+1
View File
@@ -427,6 +427,7 @@
<item quantity="many">%d حرفًا</item>
<item quantity="other">%d أحرف</item>
</plurals>
<string name="parsed_type">نوع المحتوى</string>
<string name="parsed_type_otp">كلمة مرور لمرة واحدة</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">رخصة قيادة دولية</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d знак</item>
<item quantity="other">%d знака</item>
</plurals>
<string name="parsed_type">Тип съдържание</string>
<string name="parsed_type_otp">Еднократна парола</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Международна шофьорска книжка</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d অক্ষর</item>
<item quantity="other">%d অক্ষর</item>
</plurals>
<string name="parsed_type">বিষয়বস্তুর ধরন</string>
<string name="parsed_type_otp">এককালীন পাসওয়ার্ড</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">আন্তর্জাতিক ড্রাইভার লাইসেন্স</string>
+1
View File
@@ -419,6 +419,7 @@
<item quantity="many">%d znaků</item>
<item quantity="other">%d znaků</item>
</plurals>
<string name="parsed_type">Typ obsahu</string>
<string name="parsed_type_otp">Jednorázové heslo</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Mezinárodní řidičský průkaz</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d tegn</item>
<item quantity="other">%d tegn</item>
</plurals>
<string name="parsed_type">Indholdstype</string>
<string name="parsed_type_otp">Engangskode</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Internationalt kørekort</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d Zeichen</item>
<item quantity="other">%d Zeichen</item>
</plurals>
<string name="parsed_type">Inhaltstyp</string>
<string name="parsed_type_otp">Einmalpasswort</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Internationaler Führerschein</string>
+1
View File
@@ -412,6 +412,7 @@
<item quantity="one">%d carácter</item>
<item quantity="other">%d caracteres</item>
</plurals>
<string name="parsed_type">Tipo de contenido</string>
<string name="parsed_type_otp">Contraseña de un solo uso</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Permiso de conducir internacional</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d نویسه</item>
<item quantity="other">%d نویسه</item>
</plurals>
<string name="parsed_type">نوع محتوا</string>
<string name="parsed_type_otp">رمز یک‌بارمصرف</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">گواهینامه بین‌المللی رانندگی</string>
+1
View File
@@ -412,6 +412,7 @@
<item quantity="one">%d caractère</item>
<item quantity="other">%d caractères</item>
</plurals>
<string name="parsed_type">Type de contenu</string>
<string name="parsed_type_otp">Mot de passe à usage unique</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Permis de conduire international</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d karakter</item>
<item quantity="other">%d karakter</item>
</plurals>
<string name="parsed_type">Tartalomtípus</string>
<string name="parsed_type_otp">Egyszer használatos jelszó</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Nemzetközi vezetői engedély</string>
+1
View File
@@ -409,6 +409,7 @@
<item quantity="one">%d karakter</item>
<item quantity="other">%d karakter</item>
</plurals>
<string name="parsed_type">Jenis konten</string>
<string name="parsed_type_otp">Kata sandi sekali pakai</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Surat Izin Mengemudi Internasional</string>
+1
View File
@@ -301,6 +301,7 @@
<string name="scheme">Schema</string>
<string name="host">Host</string>
<string name="query">Richiesta</string>
<string name="parsed_type">Tipo di contenuto</string>
<string name="parsed_type_otp">Password mono uso</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Patente di guida internazionale</string>
+1
View File
@@ -409,6 +409,7 @@
<item quantity="one">%d 文字</item>
<item quantity="other">%d 文字</item>
</plurals>
<string name="parsed_type">コンテンツの種類</string>
<string name="parsed_type_otp">ワンタイムパスワード</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">国際運転免許証</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d სიმბოლო</item>
<item quantity="other">%d სიმბოლო</item>
</plurals>
<string name="parsed_type">შიგთავსის ტიპი</string>
<string name="parsed_type_otp">ერთჯერადი პაროლი</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">საერთაშორისო მართვის მოწმობა</string>
+1
View File
@@ -409,6 +409,7 @@
<item quantity="one">%d자</item>
<item quantity="other">%d자</item>
</plurals>
<string name="parsed_type">콘텐츠 유형</string>
<string name="parsed_type_otp">일회용 비밀번호</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">국제 운전 면허증</string>
+1
View File
@@ -306,6 +306,7 @@
<string name="background_request_failed">Fona pieprasījums neizdevās</string>
<string name="email_body">Ziņojums</string>
<string name="scheme">Shēma</string>
<string name="parsed_type">Satura tips</string>
<string name="parsed_type_otp">Vienreizējā parole</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Starptautiska vadītāja apliecība</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d teken</item>
<item quantity="other">%d tekens</item>
</plurals>
<string name="parsed_type">Inhoudstype</string>
<string name="parsed_type_otp">Eenmalig wachtwoord</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Internationaal rijbewijs</string>
+1
View File
@@ -419,6 +419,7 @@
<item quantity="many">%d znaków</item>
<item quantity="other">%d znaku</item>
</plurals>
<string name="parsed_type">Typ treści</string>
<string name="parsed_type_otp">Hasło jednorazowe</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Międzynarodowe prawo jazdy</string>
@@ -411,6 +411,7 @@
<item quantity="one">%d caractere</item>
<item quantity="other">%d caracteres</item>
</plurals>
<string name="parsed_type">Tipo de conteúdo</string>
<string name="parsed_type_otp">Senha de uso único</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Carteira Internacional de Habilitação</string>
@@ -419,6 +419,7 @@
<item quantity="many">%d символов</item>
<item quantity="other">%d символов</item>
</plurals>
<string name="parsed_type">Тип содержимого</string>
<string name="parsed_type_otp">Одноразовый пароль</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Международное водительское удостоверение</string>
+1
View File
@@ -411,6 +411,7 @@
<item quantity="one">%d karakter</item>
<item quantity="other">%d karakter</item>
</plurals>
<string name="parsed_type">İçerik türü</string>
<string name="parsed_type_otp">Tek kullanımlık parola</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Uluslararası sürücü belgesi</string>
+1
View File
@@ -419,6 +419,7 @@
<item quantity="many">%d символів</item>
<item quantity="other">%d символів</item>
</plurals>
<string name="parsed_type">Тип вмісту</string>
<string name="parsed_type_otp">Одноразовий пароль</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Міжнародне водійське посвідчення</string>
+1
View File
@@ -409,6 +409,7 @@
<item quantity="one">%d ký tự</item>
<item quantity="other">%d ký tự</item>
</plurals>
<string name="parsed_type">Loại nội dung</string>
<string name="parsed_type_otp">Mật khẩu dùng một lần</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">Giấy phép lái xe quốc tế</string>
@@ -409,6 +409,7 @@
<item quantity="one">%d 个字符</item>
<item quantity="other">%d 个字符</item>
</plurals>
<string name="parsed_type">内容类型</string>
<string name="parsed_type_otp">一次性密码</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">国际驾驶执照</string>
@@ -409,6 +409,7 @@
<item quantity="one">%d 個字元</item>
<item quantity="other">%d 個字元</item>
</plurals>
<string name="parsed_type">內容類型</string>
<string name="parsed_type_otp">一次性密碼</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">國際駕駛執照</string>
+1 -1
View File
@@ -9,5 +9,5 @@
<string name="sha1">SHA1</string>
<string name="sha256">SHA256</string>
<string name="scan_meta_data">%1$s • %2$s</string>
<string name="parsed_type_deutsche_post">Deutsche Post</string>
<string name="parsed_type_deutsche_post">Deutsche Post Matrix Code</string>
</resources>
+1
View File
@@ -301,6 +301,7 @@
<string name="scheme">Scheme</string>
<string name="host">Host</string>
<string name="query">Query</string>
<string name="parsed_type">Content Type</string>
<string name="parsed_type_otp">One-Time Password</string>
<string name="parsed_type_json">JSON</string>
<string name="parsed_type_international_driver_license">International Driver License</string>