From 6272ab5d8927baed1d08c2c9d7cc80465cb4e359 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 14 Nov 2017 17:34:05 +0100 Subject: [PATCH] show number of remaining subscriber gems. Fixes #880 --- .../habitica/ui/views/shops/PurchaseDialog.kt | 8 +- .../shops/PurchaseDialogBaseContent.java | 24 --- .../views/shops/PurchaseDialogBaseContent.kt | 14 ++ .../ui/views/shops/PurchaseDialogContent.java | 50 ------ .../ui/views/shops/PurchaseDialogContent.kt | 41 +++++ .../shops/PurchaseDialogGearContent.java | 72 --------- .../views/shops/PurchaseDialogGearContent.kt | 52 ++++++ .../shops/PurchaseDialogGemsContent.java | 36 ----- .../views/shops/PurchaseDialogGemsContent.kt | 22 +++ .../shops/PurchaseDialogItemContent.java | 37 ----- .../views/shops/PurchaseDialogItemContent.kt | 25 +++ .../shops/PurchaseDialogQuestContent.java | 152 ------------------ .../views/shops/PurchaseDialogQuestContent.kt | 114 +++++++++++++ 13 files changed, 274 insertions(+), 373 deletions(-) delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.kt delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.kt delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.kt delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.kt delete mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt 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 475d70c17..ac91ac6f2 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 @@ -60,7 +60,7 @@ class PurchaseDialog(context: Context, component: AppComponent, val item: ShopIt private val contentContainer: ViewGroup by bindView(customView, R.id.content_container) private val scrollView: ScrollView by bindView(customView, R.id.scrollView) - var shopItem: ShopItem = item + private var shopItem: ShopItem = item set(value) { field = value @@ -106,7 +106,11 @@ class PurchaseDialog(context: Context, component: AppComponent, val item: ShopIt private fun checkGearClass() { val user = user ?: return - if (shopItem.habitClass != null && user.stats.habitClass != shopItem.habitClass) { + if (shopItem.purchaseType == "gems") { + return + } + + if (shopItem.habitClass != null && shopItem.habitClass != "special" && user.stats.habitClass != shopItem.habitClass) { limitedTextView.text = context.getString(R.string.class_equipment_shop_dialog) limitedTextView.visibility = View.VISIBLE limitedTextView.setBackgroundColor(ContextCompat.getColor(context, R.color.gray_100)) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.java deleted file mode 100644 index b0614b190..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.habitrpg.android.habitica.ui.views.shops; - -import android.content.Context; -import android.support.annotation.Nullable; -import android.util.AttributeSet; - -import com.habitrpg.android.habitica.R; - -public class PurchaseDialogBaseContent extends PurchaseDialogContent { - - public PurchaseDialogBaseContent(Context context) { - super(context); - } - - public PurchaseDialogBaseContent(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected int getViewId() { - return R.layout.dialog_purchase_content_item; - } - -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.kt new file mode 100644 index 000000000..e667a1929 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBaseContent.kt @@ -0,0 +1,14 @@ +package com.habitrpg.android.habitica.ui.views.shops + +import android.content.Context +import android.util.AttributeSet + +import com.habitrpg.android.habitica.R + +class PurchaseDialogBaseContent : PurchaseDialogContent { + override val viewId: Int + get() = R.layout.dialog_purchase_content_item + + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.java deleted file mode 100644 index 608c4ea6a..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.habitrpg.android.habitica.ui.views.shops; - -import android.content.Context; -import android.support.annotation.Nullable; -import android.util.AttributeSet; -import android.view.Gravity; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.facebook.drawee.view.SimpleDraweeView; -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.models.shops.ShopItem; -import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public abstract class PurchaseDialogContent extends LinearLayout { - - @BindView(R.id.imageView) - SimpleDraweeView imageView; - @BindView(R.id.titleTextView) - TextView titleTextView; - - public PurchaseDialogContent(Context context) { - super(context); - setupView(); - } - - public PurchaseDialogContent(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - setupView(); - } - - private void setupView() { - setOrientation(LinearLayout.VERTICAL); - setGravity(Gravity.CENTER_HORIZONTAL); - - inflate(getContext(), getViewId(), this); - ButterKnife.bind(this, this); - } - - protected abstract int getViewId(); - - - public void setItem(ShopItem item) { - DataBindingUtils.INSTANCE.loadImage(imageView, item.getImageName()); - titleTextView.setText(item.getText()); - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.kt new file mode 100644 index 000000000..ecbe4ba93 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogContent.kt @@ -0,0 +1,41 @@ +package com.habitrpg.android.habitica.ui.views.shops + +import android.content.Context +import android.util.AttributeSet +import android.view.Gravity +import android.widget.LinearLayout +import android.widget.TextView +import com.facebook.drawee.view.SimpleDraweeView +import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.extensions.bindView +import com.habitrpg.android.habitica.models.shops.ShopItem +import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils + +abstract class PurchaseDialogContent : LinearLayout { + + private val imageView: SimpleDraweeView by bindView(R.id.imageView) + private val titleTextView: TextView by bindView(R.id.titleTextView) + + protected abstract val viewId: Int + + constructor(context: Context) : super(context) { + setupView() + } + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { + setupView() + } + + private fun setupView() { + orientation = LinearLayout.VERTICAL + gravity = Gravity.CENTER_HORIZONTAL + + inflate(context, viewId, this) + } + + + open fun setItem(item: ShopItem) { + DataBindingUtils.loadImage(imageView, item.imageName) + titleTextView.text = item.text + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.java deleted file mode 100644 index 464a721ce..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.habitrpg.android.habitica.ui.views.shops; - -import android.content.Context; -import android.support.annotation.Nullable; -import android.support.v4.content.ContextCompat; -import android.util.AttributeSet; -import android.widget.TextView; - -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.models.inventory.Equipment; -import com.habitrpg.android.habitica.models.shops.ShopItem; - -import butterknife.BindView; - -class PurchaseDialogGearContent extends PurchaseDialogContent { - - - @BindView(R.id.notesTextView) - TextView notesTextView; - @BindView(R.id.str_label) - TextView strLabel; - @BindView(R.id.str_value) - TextView strValueTextView; - @BindView(R.id.per_label) - TextView perLabel; - @BindView(R.id.per_value) - TextView perValueTextView; - @BindView(R.id.con_label) - TextView conLabel; - @BindView(R.id.con_value) - TextView conValueTextView; - @BindView(R.id.int_label) - TextView intLabel; - @BindView(R.id.int_value) - TextView intValueTextView; - - public PurchaseDialogGearContent(Context context) { - super(context); - } - - public PurchaseDialogGearContent(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected int getViewId() { - return R.layout.dialog_purchase_content_gear; - } - - @Override - public void setItem(ShopItem item) { - super.setItem(item); - notesTextView.setText(item.getNotes()); - } - - public void setEquipment(Equipment equipment) { - if (equipment.isManaged()) { - configureFieldsForValue(strLabel, strValueTextView, equipment.getStr()); - configureFieldsForValue(perLabel, perValueTextView, equipment.getPer()); - configureFieldsForValue(conLabel, conValueTextView, equipment.getCon()); - configureFieldsForValue(intLabel, intValueTextView, equipment.get_int()); - } - } - - private void configureFieldsForValue(TextView labelView, TextView valueTextView, int value) { - valueTextView.setText("+"+value); - if (value == 0) { - labelView.setTextColor(ContextCompat.getColor(getContext(), R.color.gray_400)); - valueTextView.setTextColor(ContextCompat.getColor(getContext(), R.color.gray_400)); - } - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt new file mode 100644 index 000000000..7fe08c3be --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt @@ -0,0 +1,52 @@ +package com.habitrpg.android.habitica.ui.views.shops + +import android.content.Context +import android.support.v4.content.ContextCompat +import android.util.AttributeSet +import android.widget.TextView +import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.extensions.bindView +import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.shops.ShopItem + +internal class PurchaseDialogGearContent : PurchaseDialogContent { + + private val notesTextView: TextView by bindView(R.id.notesTextView) + private val strLabel: TextView by bindView(R.id.str_label) + private val strValueTextView: TextView by bindView(R.id.str_value) + private val perLabel: TextView by bindView(R.id.per_label) + private val perValueTextView: TextView by bindView(R.id.per_value) + private val conLabel: TextView by bindView(R.id.con_label) + private val conValueTextView: TextView by bindView(R.id.con_value) + private val intLabel: TextView by bindView(R.id.int_label) + private val intValueTextView: TextView by bindView(R.id.int_value) + + override val viewId: Int + get() = R.layout.dialog_purchase_content_gear + + constructor(context: Context) : super(context) {} + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {} + + override fun setItem(item: ShopItem) { + super.setItem(item) + notesTextView.text = item.notes + } + + fun setEquipment(equipment: Equipment) { + if (equipment.isManaged) { + configureFieldsForValue(strLabel, strValueTextView, equipment.str) + configureFieldsForValue(perLabel, perValueTextView, equipment.per) + configureFieldsForValue(conLabel, conValueTextView, equipment.con) + configureFieldsForValue(intLabel, intValueTextView, equipment._int) + } + } + + private fun configureFieldsForValue(labelView: TextView?, valueTextView: TextView?, value: Int) { + valueTextView!!.text = "+" + value + if (value == 0) { + labelView!!.setTextColor(ContextCompat.getColor(context, R.color.gray_400)) + valueTextView.setTextColor(ContextCompat.getColor(context, R.color.gray_400)) + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.java deleted file mode 100644 index d8d78b375..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.habitrpg.android.habitica.ui.views.shops; - -import android.content.Context; -import android.widget.TextView; - -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.models.shops.ShopItem; - -import butterknife.BindView; - -/** - * Created by phillip on 25.07.17. - */ - -class PurchaseDialogGemsContent extends PurchaseDialogContent { - - @BindView(R.id.notesTextView) - TextView notesTextView; - - public PurchaseDialogGemsContent(Context context) { - super(context); - } - - @Override - protected int getViewId() { - return R.layout.dialog_purchase_content_item; - } - - - @Override - public void setItem(ShopItem item) { - super.setItem(item); - - notesTextView.setText(item.getNotes()); - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.kt new file mode 100644 index 000000000..c6948dd5f --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGemsContent.kt @@ -0,0 +1,22 @@ +package com.habitrpg.android.habitica.ui.views.shops + +import android.content.Context +import android.widget.TextView +import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.extensions.bindView +import com.habitrpg.android.habitica.models.shops.ShopItem + +internal class PurchaseDialogGemsContent(context: Context) : PurchaseDialogContent(context) { + + val notesTextView: TextView by bindView(R.id.notesTextView) + + override val viewId: Int + get() = R.layout.dialog_purchase_content_item + + + override fun setItem(item: ShopItem) { + super.setItem(item) + + notesTextView.text = item.notes + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.java deleted file mode 100644 index 66620cfad..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.habitrpg.android.habitica.ui.views.shops; - -import android.content.Context; -import android.support.annotation.Nullable; -import android.util.AttributeSet; -import android.widget.TextView; - -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.models.shops.ShopItem; - -import butterknife.BindView; - -public class PurchaseDialogItemContent extends PurchaseDialogContent { - - @BindView(R.id.notesTextView) - TextView notesTextView; - - public PurchaseDialogItemContent(Context context) { - super(context); - } - - public PurchaseDialogItemContent(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected int getViewId() { - return R.layout.dialog_purchase_content_item; - } - - @Override - public void setItem(ShopItem item) { - super.setItem(item); - - notesTextView.setText(item.getNotes()); - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.kt new file mode 100644 index 000000000..108e67100 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogItemContent.kt @@ -0,0 +1,25 @@ +package com.habitrpg.android.habitica.ui.views.shops + +import android.content.Context +import android.util.AttributeSet +import android.widget.TextView +import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.extensions.bindView +import com.habitrpg.android.habitica.models.shops.ShopItem + +class PurchaseDialogItemContent : PurchaseDialogContent { + + internal val notesTextView: TextView by bindView(R.id.notesTextView) + + override val viewId: Int + get() = R.layout.dialog_purchase_content_item + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + override fun setItem(item: ShopItem) { + super.setItem(item) + notesTextView.text = item.notes + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.java deleted file mode 100644 index 5c1a7204e..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.habitrpg.android.habitica.ui.views.shops; - -import android.content.Context; -import android.support.annotation.Nullable; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.RatingBar; -import android.widget.TextView; - -import com.facebook.drawee.view.SimpleDraweeView; -import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.models.inventory.QuestCollect; -import com.habitrpg.android.habitica.models.inventory.QuestContent; -import com.habitrpg.android.habitica.models.inventory.QuestDropItem; -import com.habitrpg.android.habitica.models.shops.ShopItem; -import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils; -import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * Created by phillip on 24.07.17. - */ - -public class PurchaseDialogQuestContent extends PurchaseDialogContent { - - @BindView(R.id.questDetailView) - View questDetailView; - @BindView(R.id.questTypeTextView) - TextView questTypeTextView; - @BindView(R.id.boss_health_view) - View bossHealthView; - @BindView(R.id.boss_health_text) - TextView bossHealthTextView; - @BindView(R.id.quest_collect_view) - View questCollectView; - @BindView(R.id.quest_collect_text) - TextView questCollectTextView; - @BindView(R.id.quest_difficulty_view) - RatingBar questDifficultyView; - @BindView(R.id.rage_meter_view) - View rageMeterView; - @BindView(R.id.rewardsList) - ViewGroup rewardsList; - @BindView(R.id.ownerRewardsTitle) - View ownerRewardsTitle; - @BindView(R.id.ownerRewardsList) - ViewGroup ownerRewardsList; - - public PurchaseDialogQuestContent(Context context) { - super(context); - } - - public PurchaseDialogQuestContent(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected int getViewId() { - return R.layout.dialog_purchase_content_quest; - } - - @Override - public void setItem(ShopItem item) { - super.setItem(item); - } - - public void setQuestContent(QuestContent questContent) { - - if (questContent.isBossQuest()) { - questTypeTextView.setText(R.string.boss_quest); - questCollectView.setVisibility(View.GONE); - bossHealthTextView.setText(String.valueOf(questContent.getBoss().hp)); - if (questContent.getBoss().hasRage()) { - rageMeterView.setVisibility(View.VISIBLE); - } - questDifficultyView.setRating(questContent.getBoss().str); - } else{ - questTypeTextView.setText(R.string.collection_quest); - List collectionList = new ArrayList<>(); - for (QuestCollect collect : questContent.getCollect()) { - collectionList.add(collect.count + " " + collect.text); - } - questCollectTextView.setText(TextUtils.join(", ", collectionList)); - - bossHealthView.setVisibility(View.GONE); - - questDifficultyView.setRating(1); - } - - questDetailView.setVisibility(View.VISIBLE); - - LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - if (questContent.getDrop() != null && questContent.getDrop().getItems() != null) { - for (QuestDropItem item : questContent.getDrop().getItems()) { - if (!item.isOnlyOwner()) { - addRewardsRow(inflater, item, rewardsList); - } - } - - boolean hasOwnerRewards = false; - for (QuestDropItem item : questContent.getDrop().getItems()) { - if (item.isOnlyOwner()) { - addRewardsRow(inflater, item, ownerRewardsList); - hasOwnerRewards = true; - } - } - if (!hasOwnerRewards) { - ownerRewardsTitle.setVisibility(View.GONE); - ownerRewardsList.setVisibility(View.GONE); - } - - if (questContent.getDrop().exp > 0) { - ViewGroup view = (ViewGroup) inflater.inflate(R.layout.row_quest_reward, rewardsList, false); - SimpleDraweeView imageView = view.findViewById(R.id.imageView); - imageView.setImageBitmap(HabiticaIconsHelper.imageOfGoldReward()); - TextView titleTextView = view.findViewById(R.id.titleTextView); - titleTextView.setText(getContext().getString(R.string.experience_reward, questContent.getDrop().exp)); - rewardsList.addView(view); - } - - if (questContent.getDrop().gp > 0) { - ViewGroup view = (ViewGroup) inflater.inflate(R.layout.row_quest_reward, rewardsList, false); - SimpleDraweeView imageView = view.findViewById(R.id.imageView); - imageView.setImageBitmap(HabiticaIconsHelper.imageOfExperienceReward()); - TextView titleTextView = view.findViewById(R.id.titleTextView); - titleTextView.setText(getContext().getString(R.string.gold_reward, questContent.getDrop().gp)); - rewardsList.addView(view); - } - } - } - - private void addRewardsRow(LayoutInflater inflater, QuestDropItem item, ViewGroup containerView) { - ViewGroup view = (ViewGroup) inflater.inflate(R.layout.row_quest_reward, containerView, false); - SimpleDraweeView imageView = (SimpleDraweeView) view.findViewById(R.id.imageView); - TextView titleTextView = (TextView) view.findViewById(R.id.titleTextView); - DataBindingUtils.INSTANCE.loadImage(imageView, item.getImageName()); - if (item.getCount() > 1) { - titleTextView.setText(getContext().getString(R.string.quest_reward_count, item.getText(), item.getCount())); - } else { - titleTextView.setText(item.getText()); - } - containerView.addView(view); - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt new file mode 100644 index 000000000..768545a78 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogQuestContent.kt @@ -0,0 +1,114 @@ +package com.habitrpg.android.habitica.ui.views.shops + +import android.content.Context +import android.text.TextUtils +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.RatingBar +import android.widget.TextView +import com.facebook.drawee.view.SimpleDraweeView +import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.extensions.bindView +import com.habitrpg.android.habitica.models.inventory.QuestContent +import com.habitrpg.android.habitica.models.inventory.QuestDropItem +import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils +import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper + +class PurchaseDialogQuestContent : PurchaseDialogContent { + + private val questDetailView: View by bindView(R.id.questDetailView) + private val questTypeTextView: TextView by bindView(R.id.questTypeTextView) + private val bossHealthView: View by bindView(R.id.boss_health_view) + private val bossHealthTextView: TextView by bindView(R.id.boss_health_text) + private val questCollectView: View by bindView(R.id.quest_collect_view) + private val questCollectTextView: TextView by bindView(R.id.quest_collect_text) + private val questDifficultyView: RatingBar by bindView(R.id.quest_difficulty_view) + private val rageMeterView: View by bindView(R.id.rage_meter_view) + private val rewardsList: ViewGroup by bindView(R.id.rewardsList) + private val ownerRewardsTitle: View by bindView(R.id.ownerRewardsTitle) + private val ownerRewardsList: ViewGroup by bindView(R.id.ownerRewardsList) + + override val viewId: Int + get() = R.layout.dialog_purchase_content_quest + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + fun setQuestContent(questContent: QuestContent) { + if (questContent.isBossQuest) { + questTypeTextView.setText(R.string.boss_quest) + questCollectView.visibility = View.GONE + bossHealthTextView.text = questContent.boss.hp.toString() + if (questContent.boss.hasRage()) { + rageMeterView.visibility = View.VISIBLE + } + questDifficultyView.rating = questContent.boss.str + } else { + questTypeTextView.setText(R.string.collection_quest) + val collectionList = questContent.collect.map { it.count.toString() + " " + it.text } + questCollectTextView.text = TextUtils.join(", ", collectionList) + + bossHealthView.visibility = View.GONE + + questDifficultyView.rating = 1f + } + + questDetailView.visibility = View.VISIBLE + + val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + + if (questContent.drop != null && questContent.drop.items != null) { + for (item in questContent.drop.items) { + if (!item.isOnlyOwner) { + addRewardsRow(inflater, item, rewardsList) + } + } + + var hasOwnerRewards = false + for (item in questContent.drop.items) { + if (item.isOnlyOwner) { + addRewardsRow(inflater, item, ownerRewardsList) + hasOwnerRewards = true + } + } + if (!hasOwnerRewards) { + ownerRewardsTitle.visibility = View.GONE + ownerRewardsList.visibility = View.GONE + } + + if (questContent.drop.exp > 0) { + val view = inflater.inflate(R.layout.row_quest_reward, rewardsList, false) as ViewGroup + val imageView = view.findViewById(R.id.imageView) + imageView.setImageBitmap(HabiticaIconsHelper.imageOfGoldReward()) + val titleTextView = view.findViewById(R.id.titleTextView) + titleTextView.text = context.getString(R.string.experience_reward, questContent.drop.exp) + rewardsList.addView(view) + } + + if (questContent.drop.gp > 0) { + val view = inflater.inflate(R.layout.row_quest_reward, rewardsList, false) as ViewGroup + val imageView = view.findViewById(R.id.imageView) + imageView.setImageBitmap(HabiticaIconsHelper.imageOfExperienceReward()) + val titleTextView = view.findViewById(R.id.titleTextView) + titleTextView.text = context.getString(R.string.gold_reward, questContent.drop.gp) + rewardsList.addView(view) + } + } + } + + private fun addRewardsRow(inflater: LayoutInflater, item: QuestDropItem, containerView: ViewGroup?) { + val view = inflater.inflate(R.layout.row_quest_reward, containerView, false) as ViewGroup + val imageView = view.findViewById(R.id.imageView) as SimpleDraweeView + val titleTextView = view.findViewById(R.id.titleTextView) as TextView + DataBindingUtils.loadImage(imageView, item.imageName) + if (item.count > 1) { + titleTextView.text = context.getString(R.string.quest_reward_count, item.text, item.count) + } else { + titleTextView.text = item.text + } + containerView?.addView(view) + } +}