mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 04:39:04 +00:00
Improve shop locked item display
This commit is contained in:
parent
8e2041923b
commit
ffa8f8e1ce
7 changed files with 56 additions and 21 deletions
|
|
@ -126,10 +126,10 @@ dependencies {
|
|||
implementation 'com.nex3z:flow-layout:1.2.2'
|
||||
|
||||
implementation 'androidx.core:core-ktx:1.1.0'
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:2.1.0"
|
||||
implementation "androidx.lifecycle:lifecycle-common-java8:2.1.0"
|
||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.1.0'
|
||||
implementation 'androidx.navigation:navigation-ui-ktx:2.1.0'
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
||||
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
|
||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.1'
|
||||
implementation 'androidx.navigation:navigation-ui-ktx:2.2.1'
|
||||
implementation "androidx.paging:paging-runtime-ktx:2.1.1"
|
||||
implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2'
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3'
|
||||
|
|
|
|||
6
Habitica/res/drawable/button_background_gray_600.xml
Normal file
6
Habitica/res/drawable/button_background_gray_600.xml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/gray_600" />
|
||||
<corners android:radius="8dp"/>
|
||||
<padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
|
||||
</shape>
|
||||
|
|
@ -336,9 +336,11 @@
|
|||
<string name="empty_inbox">You don\'t have any messages. You can send a user a new message from their public chat messages!</string>
|
||||
<string name="party_invite">Unlock by inviting friends</string>
|
||||
<string name="login_incentive">Unlock by logging into Habitica regularly</string>
|
||||
<string name="login_incentive_count">Unlock by checking into Habitica %d times.</string>
|
||||
<string name="create_account">Unlock by creating an account</string>
|
||||
<string name="party_invite_short">Invite Friends</string>
|
||||
<string name="login_incentive_short">login into Habitica regularly</string>
|
||||
<string name="login_incentive_short_count">%d Checkins</string>
|
||||
<string name="create_account_short">create an account</string>
|
||||
<string name="successful_purchase">Purchased %1$s</string>
|
||||
<string name="gold_plural">gold</string>
|
||||
|
|
@ -946,6 +948,8 @@
|
|||
<string name="preference_email_onboarding">Guidance with setting up your Habitica Account</string>
|
||||
<string name="skill_unlocks_at">Skill unlocks at level %d</string>
|
||||
<string name="locked">Locked</string>
|
||||
<string name="unlock_previous">Finish Quest %d</string>
|
||||
<string name="unlock_level">Level %d</string>
|
||||
<string name="unlock_previous">Unlock by finishing Quest %d</string>
|
||||
<string name="unlock_level">Unlock by reaching level %d</string>
|
||||
<string name="unlock_previous_short">Finish Quest %d</string>
|
||||
<string name="unlock_level_short">Level %d</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -90,7 +90,27 @@ open class ShopItem : RealmObject() {
|
|||
fun lockedReason(context: Context): String? {
|
||||
return when {
|
||||
unlockCondition != null -> {
|
||||
unlockCondition?.shortReadableUnlockConditionId()?.let { context.getString(it) }
|
||||
unlockCondition?.readableUnlockCondition(context)
|
||||
}
|
||||
previous != null -> {
|
||||
try {
|
||||
val thisNumber = Character.getNumericValue(key.last())
|
||||
context.getString(R.string.unlock_previous_short, thisNumber - 1)
|
||||
} catch (e: NumberFormatException) {
|
||||
null
|
||||
}
|
||||
}
|
||||
level != null -> {
|
||||
context.getString(R.string.unlock_level_short, level ?: 0)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
fun shortLockedReason(context: Context): String? {
|
||||
return when {
|
||||
unlockCondition != null -> {
|
||||
unlockCondition?.shortReadableUnlockCondition(context)
|
||||
}
|
||||
previous != null -> {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.habitrpg.android.habitica.models.shops
|
||||
|
||||
import android.content.Context
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
||||
import io.realm.RealmObject
|
||||
|
|
@ -10,18 +11,19 @@ open class ShopItemUnlockCondition : RealmObject() {
|
|||
@PrimaryKey
|
||||
var questKey: String? = null
|
||||
private var condition: String? = null
|
||||
var incentiveThreshold: Int? = null
|
||||
|
||||
fun readableUnlockConditionId(): Int = when (this.condition) {
|
||||
"party invite" -> R.string.party_invite
|
||||
"login incentive" -> R.string.login_incentive
|
||||
"create account" -> R.string.create_account
|
||||
else -> R.string.empty
|
||||
fun readableUnlockCondition(context: Context): String = when (this.condition) {
|
||||
"party invite" -> context.getString(R.string.party_invite)
|
||||
"login reward" -> if (incentiveThreshold != null) context.getString(R.string.login_incentive_count, incentiveThreshold) else context.getString(R.string.login_incentive)
|
||||
"create account" -> context.getString(R.string.create_account)
|
||||
else -> ""
|
||||
}
|
||||
|
||||
fun shortReadableUnlockConditionId(): Int = when (this.condition) {
|
||||
"party invite" -> R.string.party_invite_short
|
||||
"login incentive" -> R.string.login_incentive_short
|
||||
"create account" -> R.string.create_account_short
|
||||
else -> R.string.empty
|
||||
fun shortReadableUnlockCondition(context: Context): String = when (this.condition) {
|
||||
"party invite" -> context.getString(R.string.party_invite_short)
|
||||
"login reward" -> if (incentiveThreshold != null) context.getString(R.string.login_incentive_short_count, incentiveThreshold) else context.getString(R.string.login_incentive_short)
|
||||
"create account" -> context.getString(R.string.create_account_short)
|
||||
else -> ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ class ShopItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Vi
|
|||
itemDetailIndicator.text = null
|
||||
itemDetailIndicator.visibility = View.GONE
|
||||
|
||||
val lockedReason = item.lockedReason(context)
|
||||
val lockedReason = item.shortLockedReason(context)
|
||||
if (!item.locked) {
|
||||
priceLabel.text = item.value.toString()
|
||||
priceLabel.currency = item.currency
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import android.view.View
|
|||
import android.widget.Button
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.graphics.drawable.toDrawable
|
||||
import androidx.core.os.bundleOf
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.UserComponent
|
||||
|
|
@ -82,6 +83,8 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
|
|||
setBuyButtonEnabled(false)
|
||||
buyLabel.text = context.getString(R.string.locked)
|
||||
limitedTextView.visibility = View.VISIBLE
|
||||
limitedTextView.background = ContextCompat.getColor(context, R.color.gray_600).toDrawable()
|
||||
limitedTextView.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
|
||||
}
|
||||
|
||||
priceLabel.isLocked = shopItem.locked || shopItem.lockedReason(context) != null
|
||||
|
|
@ -186,9 +189,9 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
|
|||
priceLabel.setTextColor(ContextCompat.getColor(context, R.color.white))
|
||||
buyLabel.setTextColor(ContextCompat.getColor(context, R.color.white))
|
||||
} else {
|
||||
buyButton.background = context.getDrawable(R.drawable.button_background_gray_700)
|
||||
priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_200))
|
||||
buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_200))
|
||||
buyButton.background = context.getDrawable(R.drawable.button_background_gray_600)
|
||||
priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
|
||||
buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
|
||||
}
|
||||
|
||||
if (shopItem.isTypeGear) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue