diff --git a/Habitica/res/layout/purchased_equip_dialog.xml b/Habitica/res/layout/purchased_equip_dialog.xml new file mode 100644 index 000000000..7ed05b253 --- /dev/null +++ b/Habitica/res/layout/purchased_equip_dialog.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt index eca5d87f3..46e94b13a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt @@ -437,7 +437,7 @@ class AvatarView : FrameLayout { } } - fun setAvatarWithBackgroundForPurchase(avatar: Avatar, backgroundForPurchase: String?) { + fun setAvatarWithSelectedBackground(avatar: Avatar, backgroundForPurchase: String?) { val oldUser = this.avatar this.avatar = avatar this.backgroundForPurchase = backgroundForPurchase diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt index a49368688..5cd22a91b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt @@ -12,9 +12,11 @@ import com.habitrpg.android.habitica.databinding.CustomizationGridItemBinding import com.habitrpg.android.habitica.databinding.CustomizationSectionFooterBinding import com.habitrpg.android.habitica.databinding.CustomizationSectionHeaderBinding import com.habitrpg.android.habitica.helpers.MainNavigationController +import com.habitrpg.android.habitica.models.Avatar import com.habitrpg.android.habitica.models.inventory.Customization import com.habitrpg.android.habitica.models.inventory.CustomizationSet import com.habitrpg.android.habitica.models.shops.ShopItem +import com.habitrpg.android.habitica.ui.AvatarView import com.habitrpg.android.habitica.ui.helpers.loadImage import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog @@ -27,6 +29,7 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler var userSize: String? = null var hairColor: String? = null + var avatar: Avatar? = null var customizationType: String? = null var gemBalance: Int = 0 var unsortedCustomizations: List = ArrayList() @@ -194,8 +197,25 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler return } - customization?.let { - selectCustomizationEvents.onNext(it) + if (customization?.type == "background" && avatar != null){ + val alert = HabiticaAlertDialog(context = itemView.context) + val purchasedCustomizationView: View = LayoutInflater.from(itemView.context).inflate(R.layout.purchased_equip_dialog, null) + purchasedCustomizationView.findViewById(R.id.avatar_view).setAvatarWithSelectedBackground(avatar!!, customization?.let { ShopItem.fromCustomization(it, userSize, hairColor).imageName }) + alert.setAdditionalContentView(purchasedCustomizationView) + alert.addButton(R.string.equip, true) { _, _ -> + customization?.let { + selectCustomizationEvents.onNext(it) + } + } + alert.addButton(R.string.close, false) { _, _ -> + alert.dismiss() + } + alert.show() + } else { + customization?.let { + selectCustomizationEvents.onNext(it) + } + } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt index 11cc42bd3..532c2c208 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt @@ -221,6 +221,7 @@ class AvatarCustomizationFragment : this.adapter.userSize = user.preferences?.size this.adapter.hairColor = user.preferences?.hair?.color this.adapter.gemBalance = user.gemCount + this.adapter.avatar = user adapter.notifyDataSetChanged() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt index 0c5de89b7..702ad132d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt @@ -21,6 +21,6 @@ class PurchaseDialogBackgroundContent(context: Context) : PurchaseDialogContent( } fun setAvatarWithBackgroundForPurchase(avatar: Avatar, item: ShopItem) { - binding.avatarView.setAvatarWithBackgroundForPurchase(avatar, item.imageName) + binding.avatarView.setAvatarWithSelectedBackground(avatar, item.imageName) } }