@@ -2,44 +2,39 @@ package com.marknkamau.justjava.ui.cart
22
33import android.annotation.SuppressLint
44import android.os.Bundle
5- import androidx.fragment.app.DialogFragment
6- import androidx.core.content.ContextCompat
75import android.text.TextUtils
86import android.view.LayoutInflater
97import android.view.View
108import android.view.ViewGroup
9+ import android.widget.Button
10+ import android.widget.CheckBox
1111import android.widget.ImageView
1212import android.widget.TextView
13+ import androidx.fragment.app.DialogFragment
1314
1415import com.marknkamau.justjava.R
15- import com.marknkamau.justjava.data.local.CartDao
1616import com.marknjunge.core.data.local.DrinksProvider
1717import 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