diff --git a/Habitica/res/drawable/layout_rounded_bg_white.xml b/Habitica/res/drawable/layout_rounded_bg_white.xml new file mode 100644 index 000000000..504805872 --- /dev/null +++ b/Habitica/res/drawable/layout_rounded_bg_white.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Habitica/res/layout/gear_list_item.xml b/Habitica/res/layout/gear_list_item.xml index 18bb031c1..ce9e13e7a 100644 --- a/Habitica/res/layout/gear_list_item.xml +++ b/Habitica/res/layout/gear_list_item.xml @@ -7,12 +7,17 @@ style="@style/RowWrapper" android:id="@+id/gear_container"> - + + + + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 727452550..2e964b48d 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -812,4 +812,5 @@ Breaks are healthy, but you can still earn points for simple activities to level up and get cool gear! Latest Check In Total Checkins + Two-Handed diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt index 1067a6b41..e28d7c761 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt @@ -22,4 +22,5 @@ open class Equipment : RealmObject() { @SerializedName("int") var _int: Int = 0 var owned: Boolean? = null + var twoHanded = false } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/EquipmentRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/EquipmentRecyclerViewAdapter.kt index 84afb2ba0..1476d3c28 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/EquipmentRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/EquipmentRecyclerViewAdapter.kt @@ -1,18 +1,22 @@ package com.habitrpg.android.habitica.ui.adapter.inventory import android.content.Context +import android.graphics.drawable.BitmapDrawable import android.support.v4.content.ContextCompat import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.FrameLayout import android.widget.TextView import com.facebook.drawee.view.SimpleDraweeView import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.extensions.backgroundCompat import com.habitrpg.android.habitica.extensions.notNull import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils +import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import io.reactivex.subjects.PublishSubject import io.realm.OrderedRealmCollection import io.realm.RealmRecyclerViewAdapter @@ -42,13 +46,16 @@ class EquipmentRecyclerViewAdapter(data: OrderedRealmCollection?, aut private val gearNameTextView: TextView by bindView(itemView, R.id.gear_text) private val gearNotesTextView: TextView by bindView(itemView, R.id.gear_notes) private val imageView: SimpleDraweeView by bindView(itemView, R.id.gear_image) + private val imageViewWrapper: FrameLayout by bindView(itemView, R.id.gear_icon_background_view) private val equippedIndicator: View by bindView(itemView, R.id.equippedIndicator) + private val twoHandedView: TextView by bindView(R.id.two_handed_view) var gear: Equipment? = null var context: Context = itemView.context init { context = itemView.context + twoHandedView.setCompoundDrawablesWithIntrinsicBounds(BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfTwoHandedIcon()), null, null, null) itemView.setOnClickListener { val key = gear?.key if (key != null) { @@ -71,10 +78,13 @@ class EquipmentRecyclerViewAdapter(data: OrderedRealmCollection?, aut if (gear.key == equippedGear) { this.equippedIndicator.visibility = View.VISIBLE this.gearContainer.setBackgroundColor(ContextCompat.getColor(context, R.color.brand_700)) + imageViewWrapper.backgroundCompat = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_white) } else { this.equippedIndicator.visibility = View.GONE this.gearContainer.setBackgroundResource(R.drawable.selection_highlight) + imageViewWrapper.backgroundCompat = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_gray_700) } + twoHandedView.visibility = if (gear.twoHanded) View.VISIBLE else View.GONE DataBindingUtils.loadImage(imageView, "shop_"+gear.key) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java index 25a252a48..9f524ab18 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java @@ -657,4 +657,18 @@ public class HabiticaIconsHelper { return imageOfChatDeleteIcon; } + + private static Bitmap imageOfTwoHandedIcon = null; + public static Bitmap imageOfTwoHandedIcon() { + if (imageOfTwoHandedIcon != null) + return imageOfTwoHandedIcon; + + int size = scaleSize(15); + imageOfTwoHandedIcon = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfTwoHandedIcon); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawTwoHandedIcon(canvas); + + return imageOfTwoHandedIcon; + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/EquipmentListDeserializer.java b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/EquipmentListDeserializer.java index 93253290e..1f35d1c32 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/EquipmentListDeserializer.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/EquipmentListDeserializer.java @@ -42,6 +42,7 @@ public class EquipmentListDeserializer implements JsonDeserializer