Skip to content

Commit 60eff6d

Browse files
authored
Show bin icon if quantity is one (#117)
1 parent ad4381d commit 60eff6d

File tree

4 files changed

+54
-48
lines changed

4 files changed

+54
-48
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.
44
## UNRELEASED
55
### Added
66
### Changed
7+
* ui: Show bin icon instead of minus if the quantity of the line item is 1
8+
79
### Removed
810
### Fixed
911

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
compileSdk = "33"
33
targetSdk = "32"
44
minSdk = "21"
5-
gradlePlugin = "7.4.1"
5+
gradlePlugin = "7.4.2"
66
desugarVersion = "1.1.5"
77
okhttpVersion = "4.10.0"
88
# @pin always, manually updated to ensure overall dependency support

ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartItemViewHolder.kt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import android.view.inputmethod.InputMethodManager
1111
import android.widget.EditText
1212
import android.widget.ImageView
1313
import android.widget.TextView
14+
import androidx.appcompat.content.res.AppCompatResources
1415
import androidx.core.view.isVisible
1516
import androidx.core.widget.addTextChangedListener
1617
import androidx.recyclerview.widget.RecyclerView
18+
import com.google.android.material.button.MaterialButton
1719
import com.squareup.picasso.Picasso
1820
import io.snabble.accessibility.accessibility
1921
import io.snabble.accessibility.orderViewsForAccessibility
@@ -31,13 +33,14 @@ class ShoppingCartItemViewHolder internal constructor(
3133
itemView: View,
3234
private val undoHelper: UndoHelper
3335
) : RecyclerView.ViewHolder(itemView) {
36+
3437
var image: ImageView = itemView.findViewById(R.id.helper_image)
3538
var name: TextView = itemView.findViewById(R.id.name)
3639
var subtitle: TextView? = itemView.findViewById(R.id.subtitle)
3740
var quantityTextView: TextView = itemView.findViewById(R.id.quantity)
3841
var priceTextView: TextView = itemView.findViewById(R.id.price)
3942
var plus: View = itemView.findViewById(R.id.plus)
40-
var minus: View = itemView.findViewById(R.id.minus)
43+
var minus: MaterialButton = itemView.findViewById(R.id.minus)
4144
var quantityEdit: EditText = itemView.findViewById(R.id.quantity_edit)
4245
var controlsUserWeighed: View = itemView.findViewById(R.id.controls_user_weighed)
4346
var controlsDefault: View = itemView.findViewById(R.id.controls_default)
@@ -110,8 +113,12 @@ class ShoppingCartItemViewHolder internal constructor(
110113
controlsUserWeighed.isVisible = row.editable && row.item.product?.type == Product.Type.UserWeighed
111114
plus.setOnClickListener {
112115
row.item.quantity++
116+
117+
updateMinusButtonIcon(row.item.quantity)
118+
113119
Telemetry.event(Telemetry.Event.CartAmountChanged, row.item.product)
114120
}
121+
updateMinusButtonIcon(row.item.quantity)
115122
minus.setOnClickListener {
116123
val p = bindingAdapterPosition
117124
val newQuantity = row.item.quantity - 1
@@ -121,6 +128,8 @@ class ShoppingCartItemViewHolder internal constructor(
121128
row.item.quantity = newQuantity
122129
Telemetry.event(Telemetry.Event.CartAmountChanged, row.item.product)
123130
}
131+
132+
updateMinusButtonIcon(newQuantity)
124133
}
125134
quantityEditApply.setOneShotClickListener {
126135
row.item.quantity = quantityEditValue
@@ -150,6 +159,11 @@ class ShoppingCartItemViewHolder internal constructor(
150159
quantityEdit.filters = arrayOf(InputFilterMinMax(0, ShoppingCart.MAX_QUANTITY))
151160
}
152161

162+
private fun updateMinusButtonIcon(quantity: Int) {
163+
val iconRes = if (quantity == 1) R.drawable.snabble_ic_delete else R.drawable.snabble_ic_minus
164+
minus.icon = AppCompatResources.getDrawable(minus.context, iconRes)
165+
}
166+
153167
fun hideInput() {
154168
val imm = quantityEdit.context
155169
.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
@@ -177,4 +191,4 @@ class ShoppingCartItemViewHolder internal constructor(
177191
} catch (e: NumberFormatException) {
178192
0
179193
}
180-
}
194+
}

ui/src/main/res/layout/snabble_item_shoppingcart_product.xml

Lines changed: 35 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<RelativeLayout
3-
xmlns:android="http://schemas.android.com/apk/res/android"
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
43
xmlns:app="http://schemas.android.com/apk/res-auto"
54
xmlns:tools="http://schemas.android.com/tools"
65
android:layout_width="match_parent"
@@ -22,23 +21,24 @@
2221
android:layout_width="44dp"
2322
android:layout_height="44dp"
2423
android:layout_marginEnd="8dp"
24+
android:importantForAccessibility="no"
2525
android:visibility="gone"
2626
app:shapeAppearanceOverlay="@style/Snabble.ShapeAppearanceOverlay.RoundedCorners"
2727
tools:background="#ccc"
28-
tools:visibility="visible"
29-
android:importantForAccessibility="no"/>
28+
tools:visibility="visible" />
3029

3130
<androidx.appcompat.widget.AppCompatTextView
3231
android:id="@+id/red_label"
3332
android:layout_width="20sp"
3433
android:layout_height="18sp"
35-
android:background="@drawable/snabble_ic_round_textview"
3634
android:layout_marginEnd="8dp"
35+
android:background="@drawable/snabble_ic_round_textview"
36+
android:gravity="center"
3737
android:text="%"
3838
android:textColor="#ffffff"
39-
android:gravity="center"
4039
app:backgroundTint="#ff0000"
4140
tools:ignore="HardcodedText" />
41+
4242
</FrameLayout>
4343

4444
<LinearLayout
@@ -64,8 +64,8 @@
6464
android:id="@+id/price_container"
6565
android:layout_width="wrap_content"
6666
android:layout_height="wrap_content"
67-
android:layout_marginEnd="8dp"
6867
android:layout_marginTop="4dp"
68+
android:layout_marginEnd="8dp"
6969
android:orientation="horizontal">
7070

7171
<TextView
@@ -74,7 +74,9 @@
7474
android:layout_height="wrap_content"
7575
android:textAppearance="?attr/textAppearanceBodySmall"
7676
tools:text="26,98 €" />
77+
7778
</LinearLayout>
79+
7880
</LinearLayout>
7981

8082
<FrameLayout
@@ -90,25 +92,17 @@
9092
android:layout_height="38dp"
9193
android:orientation="horizontal">
9294

93-
<FrameLayout
95+
<com.google.android.material.button.MaterialButton
96+
android:id="@+id/minus"
97+
style="@style/Snabble.Widget.MaterialComponents.Button.OutlinedButton.Icon"
9498
android:layout_width="36dp"
95-
android:layout_height="36dp">
96-
<ImageView
97-
android:layout_width="wrap_content"
98-
android:layout_height="wrap_content"
99-
android:layout_gravity="center"
100-
android:src="@drawable/snabble_ic_minus"
101-
app:tint="?attr/colorOnSurface"
102-
android:importantForAccessibility="no"/>
99+
android:layout_height="36dp"
100+
android:contentDescription="@string/Snabble.Shoppingcart.Accessibility.decreaseQuantity"
101+
app:icon="@drawable/snabble_ic_minus"
102+
app:iconGravity="textStart"
103+
app:iconTint="?attr/colorOnSurface"
104+
app:strokeColor="@drawable/snabble_stroke" />
103105

104-
<com.google.android.material.button.MaterialButton
105-
android:id="@+id/minus"
106-
style="@style/Snabble.Widget.MaterialComponents.Button.OutlinedButton.Icon"
107-
android:layout_width="36dp"
108-
android:layout_height="36dp"
109-
android:contentDescription="@string/Snabble.Shoppingcart.Accessibility.decreaseQuantity"
110-
app:strokeColor="@drawable/snabble_stroke" />
111-
</FrameLayout>
112106
<TextView
113107
android:id="@+id/quantity"
114108
android:layout_width="wrap_content"
@@ -120,25 +114,17 @@
120114
android:textAppearance="?attr/textAppearanceBodyLarge"
121115
tools:text="3" />
122116

123-
<FrameLayout
117+
<com.google.android.material.button.MaterialButton
118+
android:id="@+id/plus"
119+
style="@style/Snabble.Widget.MaterialComponents.Button.OutlinedButton.Icon"
124120
android:layout_width="36dp"
125-
android:layout_height="36dp">
126-
<ImageView
127-
android:layout_width="wrap_content"
128-
android:layout_height="wrap_content"
129-
android:layout_gravity="center"
130-
android:src="@drawable/snabble_ic_add"
131-
app:tint="?attr/colorOnSurface"
132-
android:importantForAccessibility="no"/>
121+
android:layout_height="36dp"
122+
android:contentDescription="@string/Snabble.Shoppingcart.Accessibility.increaseQuantity"
123+
app:icon="@drawable/snabble_ic_add"
124+
app:iconGravity="textStart"
125+
app:iconTint="?attr/colorOnSurface"
126+
app:strokeColor="@drawable/snabble_stroke" />
133127

134-
<com.google.android.material.button.MaterialButton
135-
android:id="@+id/plus"
136-
style="@style/Snabble.Widget.MaterialComponents.Button.OutlinedButton.Icon"
137-
android:layout_width="36dp"
138-
android:layout_height="36dp"
139-
app:strokeColor="@drawable/snabble_stroke"
140-
android:contentDescription="@string/Snabble.Shoppingcart.Accessibility.increaseQuantity"/>
141-
</FrameLayout>
142128
</LinearLayout>
143129

144130
<LinearLayout
@@ -169,10 +155,10 @@
169155
android:focusable="true"
170156
android:focusableInTouchMode="true"
171157
android:gravity="right|center_vertical"
158+
android:hint="@string/Snabble.Shoppingcart.Accessibility.quantity"
172159
android:imeOptions="actionDone"
173160
android:inputType="number"
174161
android:paddingHorizontal="12dp"
175-
android:hint="@string/Snabble.Shoppingcart.Accessibility.quantity"
176162
android:textAppearance="?attr/textAppearanceBodyMedium"
177163
tools:text="1" />
178164

@@ -190,9 +176,9 @@
190176

191177
<FrameLayout
192178
android:id="@+id/quantity_edit_apply_layout"
193-
android:layout_gravity="center_vertical"
194179
android:layout_width="36dp"
195-
android:layout_height="36dp">
180+
android:layout_height="36dp"
181+
android:layout_gravity="center_vertical">
196182

197183
<com.google.android.material.button.MaterialButton
198184
android:id="@+id/quantity_edit_apply"
@@ -210,7 +196,11 @@
210196
android:focusable="false"
211197
android:src="@drawable/snabble_ic_check_white"
212198
app:tint="?attr/colorOnPrimary" />
199+
213200
</FrameLayout>
201+
214202
</LinearLayout>
203+
215204
</FrameLayout>
216-
</RelativeLayout>
205+
206+
</RelativeLayout>

0 commit comments

Comments
 (0)