diff --git a/Habitica/res/drawable/layout_rounded_bg_animalitem_complete.xml b/Habitica/res/drawable/layout_rounded_bg_animalitem_complete.xml
new file mode 100644
index 000000000..a8cb4e3d1
--- /dev/null
+++ b/Habitica/res/drawable/layout_rounded_bg_animalitem_complete.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/animal_overview_item.xml b/Habitica/res/layout/animal_overview_item.xml
deleted file mode 100644
index 68c34da9d..000000000
--- a/Habitica/res/layout/animal_overview_item.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
diff --git a/Habitica/res/layout/mount_overview_item.xml b/Habitica/res/layout/mount_overview_item.xml
new file mode 100644
index 000000000..136617b28
--- /dev/null
+++ b/Habitica/res/layout/mount_overview_item.xml
@@ -0,0 +1,45 @@
+
+
+
+
+ style="@style/CardContent">
+
+
+
+
+
+
+
diff --git a/Habitica/res/layout/pet_overview_item.xml b/Habitica/res/layout/pet_overview_item.xml
new file mode 100644
index 000000000..7aa7a1f06
--- /dev/null
+++ b/Habitica/res/layout/pet_overview_item.xml
@@ -0,0 +1,43 @@
+
+
+
+ style="@style/CardContent">
+
+
+
+
+
diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml
index 295b8cd59..153ffc3a5 100644
--- a/Habitica/res/values/colors.xml
+++ b/Habitica/res/values/colors.xml
@@ -148,6 +148,7 @@
#000
#efeff4
#fafaff
+ #6ECDB2
#794b00
diff --git a/Habitica/res/values/dimens.xml b/Habitica/res/values/dimens.xml
index 3b56e5900..e8f7edcbe 100644
--- a/Habitica/res/values/dimens.xml
+++ b/Habitica/res/values/dimens.xml
@@ -50,10 +50,13 @@
16sp
14sp
2dp
- 120dp
+ 84dp
+ 120dp
28dp
- 81dp
- 99dp
+ 68dp
+ 65dp
+ 81dp
+ 99dp
124dp
10dp
16dp
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 2c68f8811..5a1d51aff 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1015,6 +1015,8 @@
Read More
You are unable to buy that amount.
Still have a question?
+ Delete Checklist entry
+ %1$d/%2$d
Task list display
Onboarding Tasks
Complete to earn 100 Gold!
diff --git a/Habitica/res/xml/network_security_config.xml b/Habitica/res/xml/network_security_config.xml
index f808081d4..4c9e97462 100644
--- a/Habitica/res/xml/network_security_config.xml
+++ b/Habitica/res/xml/network_security_config.xml
@@ -6,6 +6,6 @@
- 192.168.178.52
+ 10.0.0.107
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java
index a2f2bbd41..96c1b7f90 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java
@@ -29,4 +29,8 @@ public interface Animal {
Integer getNumberOwned();
void setNumberOwned(Integer numberOwned);
+
+ Integer getTotalNumber();
+
+ void setTotalNumber(Integer totalNumber);
}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java
index 19326be4f..1fd23de3c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java
@@ -12,7 +12,10 @@ public class Mount extends RealmObject implements Animal {
boolean premium;
@Ignore
- Integer numberOwned;
+ private Integer numberOwned;
+
+ @Ignore
+ private Integer totalNumber;
public String getKey() {
return key;
@@ -82,4 +85,15 @@ public class Mount extends RealmObject implements Animal {
public void setNumberOwned(Integer numberOwned) {
this.numberOwned = numberOwned;
}
+
+ public Integer getTotalNumber() {
+ if (totalNumber == null) {
+ return 0;
+ }
+ return totalNumber;
+ }
+
+ public void setTotalNumber(Integer totalNumber) {
+ this.totalNumber = totalNumber;
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java
index cf8c531e6..642c2c1fc 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java
@@ -14,6 +14,9 @@ public class Pet extends RealmObject implements Animal{
@Ignore
private Integer numberOwned;
+ @Ignore
+ private Integer totalNumber;
+
public String getKey() {
return key;
}
@@ -83,4 +86,16 @@ public class Pet extends RealmObject implements Animal{
public void setNumberOwned(Integer numberOwned) {
this.numberOwned = numberOwned;
}
+
+ public Integer getTotalNumber() {
+ if (totalNumber == null) {
+ return 0;
+ }
+
+ return totalNumber;
+ }
+
+ public void setTotalNumber(Integer totalNumber) {
+ this.totalNumber = totalNumber;
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt
index 0401cee20..34b0d5d0f 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt
@@ -39,7 +39,7 @@ class MountDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdat
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MountViewHolder {
- return MountViewHolder(parent.inflate(R.layout.animal_overview_item))
+ return MountViewHolder(parent.inflate(R.layout.mount_overview_item))
}
override fun onBindViewHolder(holder: MountViewHolder, position: Int) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
index 280a3a0fe..c0d783c4e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
@@ -1,14 +1,12 @@
package com.habitrpg.android.habitica.ui.adapter.inventory
import android.content.Context
+import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.view.View
import android.view.ViewGroup
-import android.widget.FrameLayout
-import android.widget.LinearLayout
-import android.widget.RelativeLayout
import android.widget.TextView
-import androidx.coordinatorlayout.widget.CoordinatorLayout
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager
import com.facebook.drawee.view.SimpleDraweeView
import com.habitrpg.android.habitica.R
@@ -47,9 +45,11 @@ class StableRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<
} else if (viewType == 1) {
val view = parent.inflate(R.layout.customization_section_header)
SectionViewHolder(view)
- }
- else {
- val view = parent.inflate(R.layout.animal_overview_item)
+ } else if (viewType == 2) {
+ val view = parent.inflate(R.layout.pet_overview_item)
+ StableViewHolder(view)
+ } else {
+ val view = parent.inflate(R.layout.mount_overview_item)
StableViewHolder(view)
}
@@ -72,15 +72,20 @@ class StableRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<
}
override fun getItemViewType(position: Int): Int {
- return if (itemList[position] == "header") {
+ var item = itemList[position]
+
+ return if (item == "header") {
0
}
- else if (itemList[position].javaClass == String::class.java) {
+ else if (item.javaClass == String::class.java) {
1
}
- else {
+ else if (itemType == "pets") {
2
}
+ else {
+ 3
+ }
}
override fun getItemCount(): Int = itemList.size
@@ -118,25 +123,49 @@ class StableRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<
}
ownedTextView.visibility = View.VISIBLE
this.imageView.alpha = 1.0f
+ this.titleView.alpha = 1.0f
+ this.ownedTextView.alpha = 1.0f
+
val imageName = if (itemType == "pets") {
- "Pet-" + item.key
+ "Pet_Egg_" + item.animal
} else {
"Mount_Icon_" + item.key
}
- this.ownedTextView.text = animal?.numberOwned?.toString()
- ownedTextView.visibility = if (animal?.numberOwned == 0 || animal?.type == "special") View.GONE else View.VISIBLE
- imageView.background = null
- DataBindingUtils.loadImage(imageName) {
- val drawable = BitmapDrawable(context?.resources, if (item.numberOwned > 0) it else it.extractAlpha())
- Observable.just(drawable)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(Consumer {
- imageView.background = drawable
- }, RxErrorHandler.handleEmptyError())
- }
- if (item.numberOwned <= 0) {
- this.imageView.alpha = 0.1f
+
+ context?.let {
+
+ var owned = item.numberOwned
+ var totalNum = item.totalNumber
+
+
+ this.ownedTextView.text = context?.getString(R.string.pet_ownership_fraction, owned, totalNum)
+ this.ownedTextView.background = context?.getDrawable(R.drawable.layout_rounded_bg_shopitem_price)
+
+ this.ownedTextView.setTextColor(ContextCompat.getColor(it, R.color.black) )
+
+ ownedTextView.visibility = if (animal?.type == "special") View.GONE else View.VISIBLE
+ imageView.background = null
+
+ DataBindingUtils.loadImage(imageName) {
+ val drawable = BitmapDrawable(context?.resources, it)
+ Observable.just(drawable)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(Consumer {
+ imageView.background = drawable
+ }, RxErrorHandler.handleEmptyError())
+ }
+ if (item.numberOwned <= 0) {
+ this.imageView.alpha = 0.2f
+ this.titleView.alpha = 0.2f
+ this.ownedTextView.alpha = 0.2f
+ }
+
+ if (item.numberOwned == item.totalNumber) {
+ this.ownedTextView.background = context?.getDrawable(R.drawable.layout_rounded_bg_animalitem_complete)
+ this.ownedTextView.setTextColor(ContextCompat.getColor(it, R.color.white))
+ }
}
+
}
override fun onClick(v: View) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
index 2919a411a..b82bf9c92 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
@@ -106,7 +106,8 @@ class StableRecyclerFragment : BaseFragment() {
private fun setGridSpanCount(width: Int) {
var spanCount = 0
if (context != null && context?.resources != null) {
- val itemWidth: Float = context?.resources?.getDimension(R.dimen.pet_width) ?: 0.toFloat()
+ var animal_width = if (itemType == "pets") R.dimen.pet_width else R.dimen.mount_width
+ val itemWidth: Float = context?.resources?.getDimension(animal_width) ?: 0.toFloat()
spanCount = (width / itemWidth).toInt()
}
@@ -144,7 +145,6 @@ class StableRecyclerFragment : BaseFragment() {
val items = ArrayList()
var lastAnimal: Animal = unsortedAnimals[0] ?: return items
var lastSectionTitle = ""
-
for (animal in unsortedAnimals) {
val identifier = if (animal.animal.isNotEmpty() && animal.type != "special") animal.animal else animal.key
val lastIdentifier = if (lastAnimal.animal.isNotEmpty()) lastAnimal.animal else lastAnimal.key
@@ -154,6 +154,9 @@ class StableRecyclerFragment : BaseFragment() {
}
lastAnimal = animal
}
+
+ lastAnimal.totalNumber += 1
+
if (animal.type != lastSectionTitle) {
if (items.size > 0 && items[items.size - 1].javaClass == String::class.java) {
items.removeAt(items.size - 1)
@@ -175,6 +178,7 @@ class StableRecyclerFragment : BaseFragment() {
}
}
}
+
}
if (!((lastAnimal.type == "premium" || lastAnimal.type == "special") && lastAnimal.numberOwned == 0)) {
items.add(lastAnimal)
@@ -187,6 +191,5 @@ class StableRecyclerFragment : BaseFragment() {
companion object {
private const val ITEM_TYPE_KEY = "CLASS_TYPE_KEY"
private const val HEADER_VIEW_TYPE = 0
- private const val SECTION_VIEW_TYPE = 1
}
}