Skip to content
This repository was archived by the owner on Dec 16, 2023. It is now read-only.

Commit c639dbd

Browse files
committed
Update edit cart dialog to match rest of app
1 parent e3230ea commit c639dbd

5 files changed

Lines changed: 228 additions & 146 deletions

File tree

app/src/main/java/com/marknkamau/justjava/ui/cart/CartActivity.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class CartActivity : BaseActivity(), CartView {
3030
presenter.loadItems()
3131

3232
val editCartDialog = EditCartDialog().apply {
33-
cartDao = this@CartActivity.cartDao
3433
onComplete = { editType, cartItem ->
3534
dismiss()
3635
if (editType == EditCartDialog.EditType.DELETE) {

app/src/main/java/com/marknkamau/justjava/ui/cart/CartAdapter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class CartAdapter(private val context: Context, private val onEditClick: (CartIt
4545

4646
if (toppings.isNotEmpty()) {
4747
itemView.tvToppings.text = toppings.toString().replace("[", "").replace("]", "")
48+
itemView.tvToppings.visibility = View.VISIBLE
4849
} else {
4950
itemView.tvToppings.visibility = View.GONE
5051
}

app/src/main/java/com/marknkamau/justjava/ui/cart/EditCartDialog.kt

Lines changed: 43 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,39 @@ package com.marknkamau.justjava.ui.cart
22

33
import android.annotation.SuppressLint
44
import android.os.Bundle
5-
import androidx.fragment.app.DialogFragment
6-
import androidx.core.content.ContextCompat
75
import android.text.TextUtils
86
import android.view.LayoutInflater
97
import android.view.View
108
import android.view.ViewGroup
9+
import android.widget.Button
10+
import android.widget.CheckBox
1111
import android.widget.ImageView
1212
import android.widget.TextView
13+
import androidx.fragment.app.DialogFragment
1314

1415
import com.marknkamau.justjava.R
15-
import com.marknkamau.justjava.data.local.CartDao
1616
import com.marknjunge.core.data.local.DrinksProvider
1717
import com.marknkamau.justjava.data.models.CartItem
1818

19-
class EditCartDialog : androidx.fragment.app.DialogFragment(), View.OnClickListener {
19+
class EditCartDialog : DialogFragment(), View.OnClickListener {
2020
private lateinit var tvDrinkName: TextView
2121
private lateinit var tvQuantity: TextView
22-
private lateinit var tvChocolate: TextView
23-
private lateinit var tvMarshmallows: TextView
22+
private lateinit var cbCinnamon: CheckBox
23+
private lateinit var cbChocolate: CheckBox
24+
private lateinit var cbMarshmallows: CheckBox
2425
private lateinit var tvTotal: TextView
25-
private lateinit var tvCinnamon: TextView
2626
private lateinit var imgMinusQty: ImageView
27-
private lateinit var imgDelete: ImageView
2827
private lateinit var imgAddQty: ImageView
29-
private lateinit var imgSave: ImageView
28+
private lateinit var btnDelete: Button
29+
private lateinit var btnSave: Button
3030

3131
private var quantity: Int = 0
32-
private lateinit var item: CartItem
33-
private var withCinnamon = false
34-
private var withChocolate = false
35-
private var withMarshmallow = false
36-
37-
lateinit var cartDao: CartDao
32+
private lateinit var cartItem: CartItem
3833

3934
lateinit var onComplete: (EditType, CartItem) -> Unit
4035

4136
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
42-
= inflater.inflate(R.layout.edit_fragment, container, false)
37+
= inflater.inflate(R.layout.dialog_edit_cart_item, container, false)
4338

4439
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
4540
super.onViewCreated(view, savedInstanceState)
@@ -50,100 +45,62 @@ class EditCartDialog : androidx.fragment.app.DialogFragment(), View.OnClickListe
5045
return
5146
}
5247

53-
item = args.getParcelable(CART_ITEM) as CartItem
48+
cartItem = args.getParcelable(CART_ITEM) as CartItem
5449

5550
tvDrinkName = view.findViewById(R.id.tvDrinkName) as TextView
5651
tvQuantity = view.findViewById(R.id.tvQuantity) as TextView
57-
tvChocolate = view.findViewById(R.id.tvChocolate) as TextView
58-
tvMarshmallows = view.findViewById(R.id.tvMarshmallows) as TextView
59-
tvTotal = view.findViewById(R.id.tv_total) as TextView
60-
tvCinnamon = view.findViewById(R.id.tvToppings) as TextView
52+
cbCinnamon = view.findViewById(R.id.cbCinnamon) as CheckBox
53+
cbChocolate = view.findViewById(R.id.cbChocolate) as CheckBox
54+
cbMarshmallows = view.findViewById(R.id.cbMarshmallows) as CheckBox
6155
imgMinusQty = view.findViewById(R.id.imgMinusQty) as ImageView
62-
imgDelete = view.findViewById(R.id.img_delete) as ImageView
6356
imgAddQty = view.findViewById(R.id.imgAddQty) as ImageView
64-
imgSave = view.findViewById(R.id.img_save) as ImageView
65-
66-
tvCinnamon.setPadding(PADDING, PADDING, PADDING, PADDING)
67-
tvChocolate.setPadding(PADDING, PADDING, PADDING, PADDING)
68-
tvMarshmallows.setPadding(PADDING, PADDING, PADDING, PADDING)
57+
tvTotal = view.findViewById(R.id.tvTotal) as TextView
58+
btnDelete = view.findViewById(R.id.btnDelete) as Button
59+
btnSave = view.findViewById(R.id.btnSave) as Button
6960

70-
tvDrinkName.text = item.itemName
71-
quantity = item.itemQty
61+
tvDrinkName.text = cartItem.itemName
62+
quantity = cartItem.itemQty
7263
tvQuantity.text = quantity.toString()
73-
if (item.itemCinnamon) {
74-
setToppingOn(tvCinnamon)
75-
withCinnamon = true
76-
}
77-
if (item.itemChoc) {
78-
setToppingOn(tvChocolate)
79-
withChocolate = true
80-
}
81-
if (item.itemMarshmallow) {
82-
setToppingOn(tvMarshmallows)
83-
withMarshmallow = true
84-
}
85-
tvTotal.text = getString(R.string.price_listing, item.itemPrice)
64+
cbCinnamon.isChecked = cartItem.itemCinnamon
65+
cbChocolate.isChecked = cartItem.itemChoc
66+
cbMarshmallows.isChecked = cartItem.itemMarshmallow
67+
tvTotal.text = getString(R.string.price_listing, cartItem.itemPrice)
8668

8769
imgMinusQty.setOnClickListener(this)
8870
imgAddQty.setOnClickListener(this)
89-
tvCinnamon.setOnClickListener(this)
90-
tvChocolate.setOnClickListener(this)
91-
tvMarshmallows.setOnClickListener(this)
92-
imgDelete.setOnClickListener(this)
93-
imgSave.setOnClickListener(this)
71+
cbCinnamon.setOnClickListener(this)
72+
cbChocolate.setOnClickListener(this)
73+
cbMarshmallows.setOnClickListener(this)
74+
btnDelete.setOnClickListener(this)
75+
btnSave.setOnClickListener(this)
9476
}
9577

9678
override fun onClick(view: View) {
9779
when (view) {
9880
imgMinusQty -> minusQty()
9981
imgAddQty -> addQty()
100-
tvCinnamon -> {
101-
switchCinnamon(withCinnamon)
102-
updateSubtotal()
103-
}
104-
tvChocolate -> {
105-
switchChocolate(withChocolate)
106-
updateSubtotal()
107-
}
108-
tvMarshmallows -> {
109-
switchMarshmallow(withMarshmallow)
110-
updateSubtotal()
111-
}
112-
imgDelete -> {
113-
onComplete(EditType.DELETE, item)
114-
}
115-
imgSave -> {
116-
saveChanges()
117-
}
82+
cbCinnamon -> updateSubtotal()
83+
cbChocolate -> updateSubtotal()
84+
cbMarshmallows -> updateSubtotal()
85+
btnDelete -> onComplete(EditType.DELETE, cartItem)
86+
btnSave -> saveChanges()
11887
}
11988
}
12089

12190
private fun saveChanges() {
12291
val newItem = CartItem(
123-
item.id,
124-
item.itemName,
92+
cartItem.id,
93+
cartItem.itemName,
12594
quantity,
126-
withCinnamon,
127-
withChocolate,
128-
withMarshmallow,
95+
cbCinnamon.isChecked,
96+
cbChocolate.isChecked,
97+
cbMarshmallows.isChecked,
12998
updateSubtotal()
13099
)
131100

132101
onComplete(EditType.SAVE, newItem)
133102
}
134103

135-
private fun setToppingOn(textView: TextView) {
136-
textView.setBackgroundResource(R.drawable.topping_on)
137-
textView.setPadding(PADDING, PADDING, PADDING, PADDING)
138-
textView.setTextColor(ContextCompat.getColor(context!!, R.color.colorToppingOnText))
139-
}
140-
141-
private fun setToppingOff(textView: TextView) {
142-
textView.setBackgroundResource(R.drawable.topping_off)
143-
textView.setPadding(PADDING, PADDING, PADDING, PADDING)
144-
textView.setTextColor(ContextCompat.getColor(context!!, R.color.colorToppingOffText))
145-
}
146-
147104
private fun minusQty() {
148105
if (quantity > 1) {
149106
quantity -= 1
@@ -158,69 +115,37 @@ class EditCartDialog : androidx.fragment.app.DialogFragment(), View.OnClickListe
158115
updateSubtotal()
159116
}
160117

161-
162118
@SuppressLint("SetTextI18n")
163119
private fun updateSubtotal(): Int {
164120
val drinks = DrinksProvider.drinksList
165121

166122
var base = 0
167123
for (drink in drinks) {
168-
if (TextUtils.equals(drink.drinkName, item.itemName)) {
124+
if (TextUtils.equals(drink.drinkName, cartItem.itemName)) {
169125
base = Integer.parseInt(drink.drinkPrice)
170126
}
171127
}
172128

173129
base *= quantity
174-
if (withCinnamon) {
130+
if (cbCinnamon.isChecked) {
175131
base += quantity * 100
176132
}
177-
if (withChocolate) {
133+
if (cbChocolate.isChecked) {
178134
base += quantity * 100
179135
}
180-
if (withMarshmallow) {
136+
if (cbMarshmallows.isChecked) {
181137
base += quantity * 100
182138
}
183139
tvTotal.text = resources.getString(R.string.price_listing, base)
184140
return base
185141
}
186142

187-
private fun switchCinnamon(selected: Boolean) {
188-
withCinnamon = if (selected) {
189-
setToppingOff(tvCinnamon)
190-
false
191-
} else {
192-
setToppingOn(tvCinnamon)
193-
true
194-
}
195-
}
196-
197-
private fun switchChocolate(selected: Boolean) {
198-
withChocolate = if (selected) {
199-
setToppingOff(tvChocolate)
200-
false
201-
} else {
202-
setToppingOn(tvChocolate)
203-
true
204-
}
205-
}
206-
207-
private fun switchMarshmallow(selected: Boolean) {
208-
withMarshmallow = if (selected) {
209-
setToppingOff(tvMarshmallows)
210-
false
211-
} else {
212-
setToppingOn(tvMarshmallows)
213-
true
214-
}
215-
}
216-
217143
enum class EditType {
218144
SAVE,
219145
DELETE
220146
}
221147

222148
companion object {
223149
const val CART_ITEM = "item_cart"
224-
private const val PADDING = 24
225150
}
226151
}

0 commit comments

Comments
 (0)