Adjusted layout of AllergenSheet.kt to display allergens and additives separately

This commit is contained in:
denizk0461
2023-05-14 21:44:05 +02:00
parent 559ec22734
commit 8f69b5f381
4 changed files with 101 additions and 24 deletions
@@ -85,7 +85,20 @@ class AllergenSheet : AppSheet(R.layout.sheet_allergen) {
}
// Allergen and additive notice
textContent.text = offer.allergens.compileAllergenString()
// textContent.text = offer.allergens.compileAllergenString()
val (a, b) = offer.allergens.compileStrings()
if (a.isBlank() && b.isBlank()) {
textAllergensTitle.text = getString(R.string.allergens_none)
textAllergensContent.visibility = View.GONE
textAdditivesTitle.visibility = View.GONE
textAdditivesContent.visibility = View.GONE
} else {
textAllergensTitle.text = getString(R.string.allergens_allergens_title)
textAllergensContent.text = getString(R.string.allergens_content_template, a)
textAdditivesTitle.text = getString(R.string.allergens_additives_title)
textAdditivesContent.text = getString(R.string.allergens_content_template, b)
}
// Show a price, if one is available
if (offer.price.isBlank()) {
@@ -116,33 +129,50 @@ class AllergenSheet : AppSheet(R.layout.sheet_allergen) {
*
* @return a string of all allergens
*/
private fun String.compileAllergenString(): String {
private fun String.compileStrings(): Pair<String, String> {
// Let the user know if no allergens are present
if (this.isBlank()) return getString(R.string.allergens_none)
if (this.isBlank()) return Pair("", "")
// Stores all localised additives
val additiveList = mutableListOf<String>()
// Stores all localised allergens
var allergenString = ""
// Used to insert a delimiter if more than one allergen is found
var isFirst = true
val allergenList = mutableListOf<String>()
// Split all allergens to iterate through them
val allergens = this.replace(" ", "").split(",")
// Iterate through all allergens
// Iterate through all items
allergens.forEach { allergen ->
// Insert a delimiter if more than one allergen is found
if (!isFirst) allergenString += ", "
// Add a localised string for the allergen
allergenString += getString(Allergens.getStringRes(allergen))
// Set when the first allergen has been processed
isFirst = false
// Check if the item is an allergen or an additive
if (allergen.toIntOrNull() == null) {
// If the item is not numeric, it is an allergen. Add this to the allergens.
allergenList.add(getString(Allergens.getStringRes(allergen)))
} else {
// If the item is numeric, it is an additive. Add this to the additives.
additiveList.add(getString(Allergens.getStringRes(allergen)))
}
}
// Insert the allergens into a template string
return getString(R.string.allergens_contains, allergenString)
// Insert the items into a template string
// return getString(
// R.string.allergens_contains,
// allergenList.joinToString(", ").ifBlank {
// getString(R.string.allergens_single_none)
// },
// additiveList.joinToString(", ").ifBlank {
// getString(R.string.allergens_single_none)
// },
// )
return Pair(
allergenList.joinToString(", ").ifBlank {
getString(R.string.allergens_single_none)
},
additiveList.joinToString(", ").ifBlank {
getString(R.string.allergens_single_none)
},
)
}
}
+45 -4
View File
@@ -70,12 +70,53 @@
android:orientation="vertical"
android:layout_marginBottom="8dp"/>
<TextView
android:id="@+id/text_content"
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"/>
<!-- android:textSize="16sp"-->
android:layout_marginBottom="8dp"
android:orientation="vertical">
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:rowCount="2"
android:columnCount="2">
<TextView
android:id="@+id/text_allergens_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"/>
<TextView
android:id="@+id/text_allergens_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"/>
<TextView
android:id="@+id/text_additives_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:layout_gravity="top"/>
<TextView
android:id="@+id/text_additives_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:layout_gravity="fill_horizontal"/>
</GridLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
<!-- <TextView-->
<!-- android:id="@+id/text_content"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginBottom="8dp"/>-->
<TextView
android:id="@+id/text_price"
+5 -2
View File
@@ -156,13 +156,16 @@
<string name="allergen_macadamia">Macadamianüsse</string>
<string name="allergen_celery">Sellerie</string>
<string name="allergen_mustard">Senf</string>
<string name="allergen_sulphides">Schwefeldioxide &amp; Sulfide von mehr als 10mg/kg or 10mg/l</string>
<string name="allergen_sulphides">Schwefeldioxide &amp; Sulfide von mehr als 10mg/kg bzw. 10mg/l</string>
<string name="allergen_lupins">Lupinen</string>
<string name="allergen_sesame">Sesam</string>
<string name="allergen_molluscs">Weichtiere</string>
<string name="allergens_none">Enthält weder Allergene noch Zusatzstoffe.</string>
<string name="allergens_contains">Enthält: %s.</string>
<string name="allergens_single_none">keine</string>
<string name="allergens_allergens_title">"Allergene: "</string>
<string name="allergens_additives_title">"Zusatzstoffe: "</string>
<string name="allergens_content_template">%s.</string>
<string name="canteen_page_allergen_sheet_error">Beim Laden dieses Angebots ist ein Fehler aufgetreten.</string>
<string name="nav_schedule">Stundenplan</string>
+4 -1
View File
@@ -166,7 +166,10 @@
<string name="allergen_molluscs">molluscs</string>
<string name="allergens_none">Contains no allergens or additives.</string>
<string name="allergens_contains">Contains: %s.</string>
<string name="allergens_single_none">none</string>
<string name="allergens_allergens_title">"Allergens: "</string>
<string name="allergens_additives_title">"Additives: "</string>
<string name="allergens_content_template" translatable="false">%s.</string>
<string name="canteen_page_allergen_sheet_error">An error occurred while trying to retrieve this offer.</string>
<string name="nav_schedule">Schedule</string>