diff --git a/Habitica/res/drawable-hdpi/pet_checkmark.png b/Habitica/res/drawable-hdpi/pet_checkmark.png
new file mode 100644
index 000000000..3ddfe89d1
Binary files /dev/null and b/Habitica/res/drawable-hdpi/pet_checkmark.png differ
diff --git a/Habitica/res/drawable-mdpi/pet_checkmark.png b/Habitica/res/drawable-mdpi/pet_checkmark.png
new file mode 100644
index 000000000..e31aff0ea
Binary files /dev/null and b/Habitica/res/drawable-mdpi/pet_checkmark.png differ
diff --git a/Habitica/res/drawable-xhdpi/pet_checkmark.png b/Habitica/res/drawable-xhdpi/pet_checkmark.png
new file mode 100644
index 000000000..d1b5d1ec3
Binary files /dev/null and b/Habitica/res/drawable-xhdpi/pet_checkmark.png differ
diff --git a/Habitica/res/drawable-xxhdpi/pet_checkmark.png b/Habitica/res/drawable-xxhdpi/pet_checkmark.png
new file mode 100644
index 000000000..8faedaa58
Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/pet_checkmark.png differ
diff --git a/Habitica/res/layout/pet_detail_item.xml b/Habitica/res/layout/pet_detail_item.xml
index 74dacd9a2..99591a480 100644
--- a/Habitica/res/layout/pet_detail_item.xml
+++ b/Habitica/res/layout/pet_detail_item.xml
@@ -60,10 +60,8 @@
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index b0b582486..48dbb2f5c 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1064,4 +1064,5 @@
Unhatched Pet
Magic Potions
Magic Potion
+ Use Saddle
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt
index 39192c6f9..db4aa7abb 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt
@@ -7,11 +7,9 @@ import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.ProgressBar
-import android.widget.TextView
import com.facebook.drawee.view.SimpleDraweeView
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.events.commands.FeedCommand
-import com.habitrpg.android.habitica.extensions.addCloseButton
import com.habitrpg.android.habitica.extensions.inflate
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.inventory.*
@@ -22,7 +20,6 @@ import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
import com.habitrpg.android.habitica.ui.helpers.bindView
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem
-import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.dialogs.PetSuggestHatchDialog
import io.reactivex.BackpressureStrategy
import io.reactivex.Flowable
@@ -44,6 +41,7 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B
private var ownedMounts: Map? = null
private var ownedItems: Map? = null
private val equipEvents = PublishSubject.create()
+ private var ownsSaddles: Boolean = false
fun getEquipFlowable(): Flowable {
return equipEvents.toFlowable(BackpressureStrategy.DROP)
@@ -78,6 +76,12 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B
fun setOwnedItems(ownedItems: Map) {
this.ownedItems = ownedItems
+ ownsSaddles = ownedItems.containsKey("Saddle-food")
+ notifyDataSetChanged()
+ }
+
+ fun setOwnsSaddles(ownsSaddles: Boolean) {
+ this.ownsSaddles = ownsSaddles
notifyDataSetChanged()
}
@@ -133,6 +137,8 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B
imageView.visibility = View.VISIBLE
itemWrapper.visibility = View.GONE
checkMarkView.visibility = View.GONE
+ availableWrapper.visibility = View.GONE
+
val imageName = "social_Pet-$itemType-${item.color}"
itemView.setBackgroundResource(R.drawable.layout_rounded_bg_gray_700)
if (this.ownedPet?.trained ?: 0 > 0) {
@@ -142,7 +148,6 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B
} else {
this.trainedProgressbar.visibility = View.GONE
}
- availableWrapper.visibility = View.GONE
} else {
this.trainedProgressbar.visibility = View.GONE
this.imageView.alpha = 0.1f
@@ -154,10 +159,6 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B
itemView.setBackgroundResource(R.drawable.layout_rounded_bg_gray_700_brand_border)
DataBindingUtils.loadImage(eggView, "Pet_Egg_${item.animal}")
DataBindingUtils.loadImage(hatchingPotionView, "Pet_HatchingPotion_${item.color}")
- } else {
- availableWrapper.visibility = View.VISIBLE
- eggAvailableView.alpha = if (hasEgg) 1.0f else 0.2f
- potionAvailableView.alpha = if (hasPotion) 1.0f else 0.2f
}
}
@@ -188,16 +189,30 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B
menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.equip)))
if (canRaiseToMount) {
menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.feed)))
+ if (ownsSaddles) {
+ menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.use_saddle)))
+ }
}
menu.setSelectionRunnable { index ->
- if (index == 0) {
- animal?.let {
- equipEvents.onNext(it.key)
+ when (index) {
+ 0 -> {
+ animal?.let {
+ equipEvents.onNext(it.key)
+ }
+ }
+ 1 -> {
+ val event = FeedCommand()
+ event.usingPet = animal
+ EventBus.getDefault().post(event)
+ }
+ 2 -> {
+ val event = FeedCommand()
+ event.usingPet = animal
+ val saddle = Food()
+ saddle.key = "Saddle"
+ event.usingFood = saddle
+ EventBus.getDefault().post(event)
}
- } else if (index == 1) {
- val event = FeedCommand()
- event.usingPet = animal
- EventBus.getDefault().post(event)
}
}
menu.show()
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt
index 8e5a66086..fda8a9df1 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt
@@ -220,7 +220,12 @@ class ItemRecyclerFragment : BaseFragment(), androidx.swiperefreshlayout.widget.
compositeSubscription.add(inventoryRepository.getOwnedItems(type)
.doOnNext { items ->
if (items.size > 0) {
- adapter?.updateData(items)
+ val filteredItems = if (isFeeding) {
+ items.where().notEqualTo("key", "Saddle").findAll()
+ } else {
+ items
+ }
+ adapter?.updateData(filteredItems)
}
}
.map { items -> items.mapNotNull { it.key } }
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt
index f2d6fc3fd..2633da27c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt
@@ -14,7 +14,6 @@ import com.habitrpg.android.habitica.models.inventory.HatchingPotion
import com.habitrpg.android.habitica.models.inventory.Mount
import com.habitrpg.android.habitica.models.inventory.Pet
import com.habitrpg.android.habitica.models.user.Items
-import com.habitrpg.android.habitica.models.user.OwnedItem
import com.habitrpg.android.habitica.models.user.OwnedMount
import com.habitrpg.android.habitica.models.user.OwnedPet
import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter