diff --git a/Habitica/res/layout/dialog_purchase_content_gear.xml b/Habitica/res/layout/dialog_purchase_content_gear.xml index eb5920031..466e0748d 100644 --- a/Habitica/res/layout/dialog_purchase_content_gear.xml +++ b/Habitica/res/layout/dialog_purchase_content_gear.xml @@ -100,4 +100,13 @@ android:textColor="@color/green_50"/> + \ No newline at end of file diff --git a/Habitica/res/layout/dialog_purchase_content_item.xml b/Habitica/res/layout/dialog_purchase_content_item.xml index 0235fb975..c61f9b15c 100644 --- a/Habitica/res/layout/dialog_purchase_content_item.xml +++ b/Habitica/res/layout/dialog_purchase_content_item.xml @@ -31,4 +31,13 @@ android:textColor="@color/black_50_alpha" tools:text="These are the notes" android:gravity="center"/> + \ No newline at end of file diff --git a/Habitica/res/layout/dialog_purchase_content_quest.xml b/Habitica/res/layout/dialog_purchase_content_quest.xml index 540e03a6f..be54a9fd5 100644 --- a/Habitica/res/layout/dialog_purchase_content_quest.xml +++ b/Habitica/res/layout/dialog_purchase_content_quest.xml @@ -179,4 +179,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"/> + \ No newline at end of file diff --git a/Habitica/res/layout/dialog_purchase_customization.xml b/Habitica/res/layout/dialog_purchase_customization.xml index 4389a1d9a..b83be398b 100644 --- a/Habitica/res/layout/dialog_purchase_customization.xml +++ b/Habitica/res/layout/dialog_purchase_customization.xml @@ -30,5 +30,14 @@ android:id="@+id/gem_icon" android:layout_gravity="center"/> + \ No newline at end of file diff --git a/Habitica/res/layout/dialog_purchase_gems.xml b/Habitica/res/layout/dialog_purchase_gems.xml index 8bc9e122e..abb83f39d 100644 --- a/Habitica/res/layout/dialog_purchase_gems.xml +++ b/Habitica/res/layout/dialog_purchase_gems.xml @@ -42,4 +42,13 @@ app:defaultValue="1" app:minValue="1" /> + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 027203d58..b7c4cbc85 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1005,4 +1005,5 @@ Accent Buy All Read More + You are unable to buy that amount. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt index 5be4dfaf3..39708bf6a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt @@ -58,6 +58,7 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop private val buyButton: View private val priceLabel: CurrencyView private val buyLabel: TextView + private var amountErrorLabel: TextView? = null private val pinButton: Button by bindView(customHeader, R.id.pin_button) private var purchaseQuantity = 1 @@ -112,6 +113,9 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop } else -> contentView = PurchaseDialogBaseContent(context) } + + amountErrorLabel = contentView.findViewById(R.id.amount_error_label) + contentView.setItem(shopItem) setAdditionalContentView(contentView) } @@ -119,7 +123,7 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop fun updatePurchaseTotal() { priceLabel.value = shopItem.value.toDouble() * purchaseQuantity - if (shopItem.canAfford(user, purchaseQuantity) && !shopItem.locked) { + if (shopItem.canAfford(user, purchaseQuantity) && !shopItem.locked && purchaseQuantity >= 1) { buyButton.background = context.getDrawable(R.drawable.button_background_primary) priceLabel.setTextColor(ContextCompat.getColor(context, R.color.white)) buyLabel.setTextColor(ContextCompat.getColor(context, R.color.white)) @@ -128,6 +132,12 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100)) buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100)) } + + if (purchaseQuantity < 1 || (shopItem.limitedNumberLeft != null && (shopItem.limitedNumberLeft ?: 0) < purchaseQuantity)) { + amountErrorLabel?.visibility = View.VISIBLE + } else { + amountErrorLabel?.visibility = View.GONE + } } private fun checkGearClass() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt index 80a78eae0..b973f7bc6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt @@ -28,16 +28,16 @@ class StepperValueFormView @JvmOverloads constructor( private var editTextIsFocused = false var value = 0.0 - set(value) { - var newValue = if (value >= minValue) value else minValue + set(new) { + var newValue = if (new >= minValue) new else minValue maxValue?.let { - if (newValue > it) { + if (newValue > it && it > 0) { newValue = it } } val oldValue = field field = newValue - if (oldValue != newValue) { + if (oldValue != new) { valueString = decimalFormat.format(newValue) } downButton.isEnabled = field > minValue