mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-18 11:49:01 +00:00
Code cleanup
This commit is contained in:
parent
6583b14b6e
commit
06cbc66f98
10 changed files with 18 additions and 401 deletions
|
|
@ -18,17 +18,19 @@
|
|||
android:background="?colorPrimaryOffset"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<com.habitrpg.android.habitica.ui.views.RoundedCornerLayout
|
||||
<FrameLayout
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginEnd="@dimen/spacing_large"
|
||||
android:background="@drawable/rounded_avatar_bg">
|
||||
android:background="@drawable/rounded_avatar_bg"
|
||||
android:clipToPadding="true"
|
||||
android:clipChildren="true">
|
||||
<com.habitrpg.common.habitica.views.AvatarView
|
||||
android:id="@+id/avatarView"
|
||||
android:layout_width="70dp"
|
||||
android:layout_height="70dp"
|
||||
android:layout_gravity="center"/>
|
||||
</com.habitrpg.android.habitica.ui.views.RoundedCornerLayout>
|
||||
</FrameLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
|
|
@ -156,12 +158,6 @@
|
|||
tools:visibility="visible" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
<com.habitrpg.android.habitica.ui.views.social.QuestMenuView
|
||||
android:id="@+id/questMenuView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"/>
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -1,166 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.core.widget.NestedScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:scrollbarSize="3dp"
|
||||
android:scrollbarThumbVertical="@color/scrollbarThumb"
|
||||
android:scrollbars="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="@dimen/spacing_medium">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/SectionTitle"
|
||||
android:text="@string/avatar_body"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
<LinearLayout
|
||||
android:background="@drawable/layout_rounded_bg_window"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:divider="?android:listDivider"
|
||||
android:showDividers="middle">
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:gravity="center_vertical">
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginStart="@dimen/spacing_medium"
|
||||
android:layout_marginEnd="@dimen/spacing_medium"
|
||||
android:text="@string/avatar_size"
|
||||
android:gravity="center_vertical"
|
||||
android:textStyle="bold" />
|
||||
<Spinner
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/avatarSizeSpinner"
|
||||
android:spinnerMode="dropdown"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:entries="@array/avatar_sizes"/>
|
||||
</LinearLayout>
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarShirtView"
|
||||
app:equipmentTitle="@string/avatar_shirt"/>
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarSkinView"
|
||||
app:equipmentTitle="@string/avatar_skin"/>
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/avatar_hair"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
style="@style/SectionTitle"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:divider="?android:listDivider"
|
||||
android:showDividers="middle"
|
||||
android:background="@drawable/layout_rounded_bg_window">
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarHairColorView"
|
||||
app:equipmentTitle="@string/avatar_color" />
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarHairBaseView"
|
||||
app:equipmentTitle="@string/avatar_style" />
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarHairBangsView"
|
||||
app:equipmentTitle="@string/avatar_bangs" />
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarHairBeardView"
|
||||
app:equipmentTitle="@string/avatar_beard" />
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarHairMustacheView"
|
||||
app:equipmentTitle="@string/avatar_mustache" />
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/avatar_extras"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
style="@style/SectionTitle"/>
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:divider="?android:listDivider"
|
||||
android:showDividers="middle"
|
||||
android:background="@drawable/layout_rounded_bg_window">
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatar_glasses_view"
|
||||
app:equipmentTitle="@string/avatar_glasses"/>
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarChairView"
|
||||
app:equipmentTitle="@string/avatar_wheelchair"/>
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatar_accent_view"
|
||||
app:equipmentTitle="@string/avatar_accent" />
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatar_animal_ears_view"
|
||||
android:visibility="gone"
|
||||
app:equipmentTitle="@string/animal_ears"/>
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatar_animal_tail_view"
|
||||
android:visibility="gone"
|
||||
app:equipmentTitle="@string/animal_tail"/>
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatar_headband_view"
|
||||
app:equipmentTitle="@string/avatar_headband"/>
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/avatar_background"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
style="@style/SectionTitle"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/layout_rounded_bg_window">
|
||||
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentItemRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/avatarBackgroundView"
|
||||
app:equipmentTitle="@string/avatar_background" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
|
@ -6,6 +6,7 @@
|
|||
tools:parentTag="android.widget.LinearLayout"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:id="@+id/benefit_gems_for_gold_wrapper"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
|
|
|||
|
|
@ -1463,6 +1463,7 @@
|
|||
<string name="subscription_benefit_armoire_sub">Your subscription gives you an extra chance at the Armoire!</string>
|
||||
<string name="subscriber_benefit_success_faint">You got a second chance with 1HP!</string>
|
||||
<string name="revive_broken_equipment">Your %s broke</string>
|
||||
<string name="subscribe_gems_for_gold_incentive_text">Subscribe to buy Gems with Gold and receive these other exclusive benefits!</string>
|
||||
|
||||
|
||||
<plurals name="you_x_others">
|
||||
|
|
|
|||
|
|
@ -268,7 +268,6 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
setDisplayName(user.profile?.name)
|
||||
setUsername(user.formattedUsername)
|
||||
binding?.avatarView?.setAvatar(user)
|
||||
binding?.questMenuView?.configure(user)
|
||||
|
||||
val userItems = user.items
|
||||
var hasSpecialItems = false
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views
|
||||
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.Outline
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.unit.Density
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
|
||||
object AvatarCircleShape : Shape {
|
||||
override fun createOutline(
|
||||
size: Size,
|
||||
layoutDirection: LayoutDirection,
|
||||
density: Density
|
||||
): Outline =
|
||||
CircleShape.createOutline(size, 20f, 20f, 20f, 20f, layoutDirection)
|
||||
}
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.graphics.PorterDuff
|
||||
import android.graphics.PorterDuffXfermode
|
||||
import android.graphics.RectF
|
||||
import android.util.AttributeSet
|
||||
import android.util.TypedValue
|
||||
import android.widget.FrameLayout
|
||||
|
||||
// https://stackoverflow.com/a/26201117
|
||||
class RoundedCornerLayout : FrameLayout {
|
||||
|
||||
private var maskBitmap: Bitmap? = null
|
||||
private var paint: Paint? = null
|
||||
private var maskPaint: Paint? = null
|
||||
private var cornerRadius: Float = CORNER_RADIUS
|
||||
|
||||
constructor(context: Context) : super(context) {
|
||||
init(context)
|
||||
}
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
|
||||
init(context)
|
||||
}
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) {
|
||||
init(context)
|
||||
}
|
||||
|
||||
private fun init(context: Context) {
|
||||
val metrics = context.resources.displayMetrics
|
||||
cornerRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, CORNER_RADIUS, metrics)
|
||||
|
||||
paint = Paint(Paint.ANTI_ALIAS_FLAG)
|
||||
|
||||
maskPaint = Paint(Paint.ANTI_ALIAS_FLAG or Paint.FILTER_BITMAP_FLAG)
|
||||
maskPaint?.xfermode = PorterDuffXfermode(PorterDuff.Mode.CLEAR)
|
||||
|
||||
setWillNotDraw(false)
|
||||
}
|
||||
|
||||
override fun draw(canvas: Canvas) {
|
||||
val offscreenBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
|
||||
val offscreenCanvas = Canvas(offscreenBitmap)
|
||||
|
||||
super.draw(offscreenCanvas)
|
||||
|
||||
if (maskBitmap == null) {
|
||||
maskBitmap = createMask(width, height)
|
||||
}
|
||||
|
||||
maskBitmap?.let { offscreenCanvas.drawBitmap(it, 0f, 0f, maskPaint) }
|
||||
canvas.drawBitmap(offscreenBitmap, 0f, 0f, paint)
|
||||
}
|
||||
|
||||
private fun createMask(width: Int, height: Int): Bitmap {
|
||||
val mask = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8)
|
||||
val canvas = Canvas(mask)
|
||||
|
||||
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
|
||||
paint.color = Color.WHITE
|
||||
|
||||
canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), paint)
|
||||
|
||||
paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.CLEAR)
|
||||
canvas.drawRoundRect(RectF(0f, 0f, width.toFloat(), height.toFloat()), cornerRadius, cornerRadius, paint)
|
||||
|
||||
return mask
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val CORNER_RADIUS = 40.0f
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.equipment
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.ItemImageRowBinding
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.common.habitica.extensions.loadImage
|
||||
|
||||
class EquipmentItemRow(context: Context, attrs: AttributeSet?) : LinearLayout(context, attrs) {
|
||||
|
||||
private val binding: ItemImageRowBinding = ItemImageRowBinding.inflate(context.layoutInflater, this)
|
||||
var equipmentIdentifier: String? = null
|
||||
set(value) {
|
||||
field = value
|
||||
val imageName = if (equipmentIdentifier?.isNotEmpty() == true && equipmentIdentifier?.endsWith("base_0") == false) "shop_$equipmentIdentifier" else "icon_head_0"
|
||||
binding.imageView.loadImage(imageName)
|
||||
}
|
||||
|
||||
var customizationIdentifier: String? = null
|
||||
set(value) {
|
||||
field = value
|
||||
val imageName = if (customizationIdentifier?.isNotEmpty() == true) "icon_$customizationIdentifier" else "icon_head_0"
|
||||
binding.imageView.loadImage(imageName)
|
||||
}
|
||||
|
||||
init {
|
||||
View.inflate(context, R.layout.item_image_row, this)
|
||||
isClickable = true
|
||||
|
||||
val attributes = context.theme?.obtainStyledAttributes(
|
||||
attrs,
|
||||
R.styleable.EquipmentItemRow,
|
||||
0,
|
||||
0
|
||||
)
|
||||
|
||||
binding.titleTextView.text = attributes?.getString(R.styleable.EquipmentItemRow_equipmentTitle)
|
||||
binding.valueTextView.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
|
@ -18,6 +18,8 @@ import com.habitrpg.android.habitica.HabiticaBaseApplication
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
import com.habitrpg.android.habitica.data.UserRepository
|
||||
import com.habitrpg.android.habitica.databinding.DialogPurchaseShopitemButtonBinding
|
||||
import com.habitrpg.android.habitica.databinding.DialogPurchaseShopitemHeaderBinding
|
||||
import com.habitrpg.android.habitica.extensions.addCancelButton
|
||||
import com.habitrpg.android.habitica.extensions.addCloseButton
|
||||
import com.habitrpg.android.habitica.extensions.getShortRemainingString
|
||||
|
|
@ -31,7 +33,6 @@ import com.habitrpg.android.habitica.models.shops.ShopItem
|
|||
import com.habitrpg.android.habitica.models.user.OwnedItem
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.activities.ArmoireActivityDirections
|
||||
import com.habitrpg.android.habitica.ui.fragments.purchases.SubscriptionBottomSheetFragment
|
||||
import com.habitrpg.android.habitica.ui.views.CurrencyView
|
||||
import com.habitrpg.android.habitica.ui.views.CurrencyViews
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
|
|
@ -42,6 +43,7 @@ import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientG
|
|||
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientHourglassesDialog
|
||||
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientSubscriberGemsDialog
|
||||
import com.habitrpg.android.habitica.ui.views.tasks.form.StepperValueFormView
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import dagger.hilt.android.internal.managers.ViewComponentManager
|
||||
|
|
@ -62,11 +64,11 @@ class PurchaseDialog(
|
|||
private val userRepository: UserRepository,
|
||||
private val inventoryRepository: InventoryRepository,
|
||||
val item: ShopItem,
|
||||
val parentActivity: AppCompatActivity? = null
|
||||
private val parentActivity: AppCompatActivity? = null
|
||||
) : HabiticaAlertDialog(context) {
|
||||
|
||||
private val customHeader: View by lazy {
|
||||
LayoutInflater.from(context).inflate(R.layout.dialog_purchase_shopitem_header, null)
|
||||
DialogPurchaseShopitemHeaderBinding.inflate(context.layoutInflater).root
|
||||
}
|
||||
private val currencyView: CurrencyViews
|
||||
private val limitedTextView: TextView
|
||||
|
|
@ -80,7 +82,7 @@ class PurchaseDialog(
|
|||
|
||||
private var purchaseQuantity = 1
|
||||
|
||||
var purchaseCardAction: ((ShopItem) -> Unit)? = null
|
||||
private var purchaseCardAction: ((ShopItem) -> Unit)? = null
|
||||
var onShopNeedsRefresh: ((ShopItem) -> Unit)? = null
|
||||
|
||||
private var shopItem: ShopItem = item
|
||||
|
|
@ -270,7 +272,7 @@ class PurchaseDialog(
|
|||
pinTextView = customHeader.findViewById(R.id.pin_text)
|
||||
|
||||
addCloseButton()
|
||||
buyButton = addButton(layoutInflater.inflate(R.layout.dialog_purchase_shopitem_button, null), autoDismiss = false) { _, _ ->
|
||||
buyButton = addButton(DialogPurchaseShopitemButtonBinding.inflate(layoutInflater).root, autoDismiss = false) { _, _ ->
|
||||
onBuyButtonClicked()
|
||||
}
|
||||
priceLabel = buyButton.findViewById(R.id.priceLabel)
|
||||
|
|
@ -368,7 +370,6 @@ class PurchaseDialog(
|
|||
parentActivity?.let { activity -> InsufficientGemsDialog(activity, shopItem.value).show() }
|
||||
}
|
||||
"hourglasses" == shopItem.currency -> InsufficientHourglassesDialog(context).show()
|
||||
else -> null
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -484,7 +485,10 @@ class PurchaseDialog(
|
|||
val alert = HabiticaAlertDialog(context)
|
||||
alert.setTitle(R.string.excess_items)
|
||||
alert.setMessage(context.getString(R.string.excessItemsNoneLeft, item.text, purchaseQuantity, item.text))
|
||||
alert.addButton(context.getString(R.string.purchaseX, purchaseQuantity), true, false) { _, _ ->
|
||||
alert.addButton(context.getString(R.string.purchaseX, purchaseQuantity),
|
||||
isPrimary = true,
|
||||
isDestructive = false
|
||||
) { _, _ ->
|
||||
buyItem(purchaseQuantity)
|
||||
}
|
||||
alert.addCancelButton()
|
||||
|
|
|
|||
|
|
@ -1,79 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.social
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.QuestMenuViewBinding
|
||||
import com.habitrpg.android.habitica.models.inventory.Quest
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import java.util.Locale
|
||||
|
||||
class QuestMenuView : LinearLayout {
|
||||
private val binding = QuestMenuViewBinding.inflate(context.layoutInflater, this)
|
||||
|
||||
private var questContent: QuestContent? = null
|
||||
|
||||
constructor(context: Context) : super(context) {
|
||||
setupView()
|
||||
}
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||
setupView()
|
||||
}
|
||||
|
||||
private fun setupView() {
|
||||
orientation = VERTICAL
|
||||
|
||||
binding.heartIconView.setImageBitmap(HabiticaIconsHelper.imageOfHeartDarkBg())
|
||||
binding.rageIconView.setImageBitmap(HabiticaIconsHelper.imageOfRage())
|
||||
|
||||
binding.pendingDamageIconView.setImageBitmap(HabiticaIconsHelper.imageOfDamage())
|
||||
}
|
||||
|
||||
fun configure(quest: Quest) {
|
||||
binding.healthBarView.currentValue = quest.progress?.hp ?: 0.0
|
||||
binding.rageBarView.currentValue = quest.progress?.rage ?: 0.0
|
||||
}
|
||||
|
||||
fun configure(questContent: QuestContent) {
|
||||
this.questContent = questContent
|
||||
binding.healthBarView.maxValue = questContent.boss?.hp?.toDouble() ?: 0.0
|
||||
binding.bossNameView.text = questContent.boss?.name
|
||||
binding.typeTextView.text = context.getString(R.string.boss_quest)
|
||||
|
||||
if (questContent.boss?.hasRage == true) {
|
||||
binding.rageView.visibility = View.VISIBLE
|
||||
binding.rageBarView.maxValue = questContent.boss?.rage?.value ?: 0.0
|
||||
} else {
|
||||
binding.rageView.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
fun configure(user: User) {
|
||||
binding.pendingDamageTextView.text = String.format(Locale.getDefault(), "%.01f", (user.party?.quest?.progress?.up ?: 0f))
|
||||
}
|
||||
|
||||
fun hideBossArt() {
|
||||
binding.topView.orientation = HORIZONTAL
|
||||
binding.topView.setBackgroundColor(questContent?.colors?.mediumColor ?: 0)
|
||||
binding.bossNameView.gravity = Gravity.START
|
||||
binding.bossNameView.layoutParams = LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1F)
|
||||
binding.typeTextView.setTextColor(questContent?.colors?.extraLightColor ?: 0)
|
||||
}
|
||||
|
||||
fun showBossArt() {
|
||||
binding.topView.orientation = VERTICAL
|
||||
binding.topView.setBackgroundColor(ContextCompat.getColor(context, R.color.transparent))
|
||||
binding.bossNameView.gravity = Gravity.END
|
||||
binding.bossNameView.layoutParams = LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
binding.typeTextView.setTextColor(ContextCompat.getColor(context, R.color.white))
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue