mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
improve shop display state
This commit is contained in:
parent
eb6fa95eee
commit
52592324ff
11 changed files with 36 additions and 21 deletions
BIN
Habitica/res/drawable-hdpi/shop_locked.png
Normal file
BIN
Habitica/res/drawable-hdpi/shop_locked.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Habitica/res/drawable-xhdpi/shop_locked.png
Normal file
BIN
Habitica/res/drawable-xhdpi/shop_locked.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
BIN
Habitica/res/drawable-xxhdpi/shop_locked.png
Normal file
BIN
Habitica/res/drawable-xxhdpi/shop_locked.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
|
|
@ -78,6 +78,8 @@
|
|||
tools:visibility="visible"
|
||||
android:gravity="center"
|
||||
android:scaleType="center"
|
||||
android:tintMode="multiply"
|
||||
app:tint="@color/text_dimmed"
|
||||
android:textColor="@color/white" />
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
|
|
|
|||
BIN
Habitica/res/shop_locked.png
Normal file
BIN
Habitica/res/shop_locked.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1,022 B |
|
|
@ -1012,12 +1012,12 @@
|
|||
</style>
|
||||
|
||||
<style name="CountLabel">
|
||||
<item name="android:background">@drawable/pill_bg_gray_300</item>
|
||||
<item name="android:paddingStart">4dp</item>
|
||||
<item name="android:paddingEnd">4dp</item>
|
||||
<item name="android:background">@drawable/pill_bg_gray</item>
|
||||
<item name="android:paddingStart">2dp</item>
|
||||
<item name="android:paddingEnd">2dp</item>
|
||||
<item name="android:minWidth">24dp</item>
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:textColor">@color/white</item>
|
||||
<item name="android:textColor">@color/text_quad</item>
|
||||
<item name="android:textSize">12sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import com.habitrpg.android.habitica.extensions.inflate
|
|||
import com.habitrpg.android.habitica.helpers.Analytics
|
||||
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||
import com.habitrpg.android.habitica.helpers.HitType
|
||||
import com.habitrpg.common.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.models.shops.Shop
|
||||
import com.habitrpg.android.habitica.models.shops.ShopCategory
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
|
|
@ -27,9 +26,11 @@ import com.habitrpg.android.habitica.ui.views.getTranslatedClassName
|
|||
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog
|
||||
import com.habitrpg.common.habitica.extensions.fromHtml
|
||||
import com.habitrpg.common.habitica.extensions.loadImage
|
||||
import com.habitrpg.common.habitica.helpers.MainNavigationController
|
||||
|
||||
class ShopRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<ViewHolder>() {
|
||||
|
||||
var completedQuests: List<String?> = emptyList()
|
||||
var armoireCount: Int = 0
|
||||
var onNeedsRefresh: (() -> Unit)? = null
|
||||
var onShowPurchaseDialog: ((ShopItem, Boolean) -> Unit)? = null
|
||||
|
|
@ -177,6 +178,7 @@ class ShopRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<Vi
|
|||
val numberOwned = ownedItems[obj.key + "-" + obj.purchaseType]?.numberOwned ?: 0
|
||||
itemHolder.bind(obj, obj.canAfford(user, 1), numberOwned)
|
||||
itemHolder.isPinned = pinnedItemKeys.contains(obj.key)
|
||||
itemHolder.isCompleted = completedQuests.contains(obj.key)
|
||||
}
|
||||
is String -> (holder as? EmptyStateViewHolder)?.text = obj
|
||||
is Pair<*, *> -> (holder as? ArmoireGearViewHolder)?.bind(obj.first as? String ?: "", obj.second as? Int ?: 0)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,9 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.habitrpg.android.habitica.models.shops.Shop
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
|
|
@ -17,4 +19,14 @@ class QuestShopFragment : ShopFragment() {
|
|||
shopIdentifier = Shop.QUEST_SHOP
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
lifecycleScope.launchCatching {
|
||||
userRepository.getQuestAchievements().collect {
|
||||
adapter?.completedQuests = it.map { it.questKey }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import com.habitrpg.android.habitica.databinding.RowShopitemBinding
|
|||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
import com.habitrpg.common.habitica.extensions.isUsingNightModeResources
|
||||
import com.habitrpg.common.habitica.extensions.loadImage
|
||||
|
||||
class ShopItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
|
||||
|
|
@ -66,28 +65,28 @@ class ShopItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Vi
|
|||
binding.priceLabel.visibility = View.GONE
|
||||
binding.unlockLabel.visibility = View.VISIBLE
|
||||
}
|
||||
val isLimited = item.isLimited || item.event?.end != null
|
||||
if (numberOwned > 0) {
|
||||
binding.itemDetailIndicator.text = numberOwned.toString()
|
||||
binding.itemDetailIndicator.background = if (context.isUsingNightModeResources()) {
|
||||
BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfItemIndicatorNumberDark(item.isLimited || item.event?.end != null))
|
||||
} else {
|
||||
BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfItemIndicatorNumber(item.isLimited || item.event?.end != null))
|
||||
}
|
||||
binding.itemDetailIndicator.background =
|
||||
AppCompatResources.getDrawable(context, R.drawable.pill_bg_gray)
|
||||
binding.itemDetailIndicator.visibility = View.VISIBLE
|
||||
} else if (item.locked) {
|
||||
binding.itemDetailIndicator.background = if (context.isUsingNightModeResources()) {
|
||||
BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfItemIndicatorLockedDark(item.isLimited || item.event?.end != null))
|
||||
} else {
|
||||
BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfItemIndicatorLocked(item.isLimited || item.event?.end != null))
|
||||
}
|
||||
}
|
||||
if (item.locked) {
|
||||
binding.itemDetailIndicator.background = AppCompatResources.getDrawable(context, R.drawable.shop_locked)
|
||||
binding.itemDetailIndicator.visibility = View.VISIBLE
|
||||
} else if (item.isLimited || item.event?.end != null) {
|
||||
binding.itemDetailIndicator.background = BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfItemIndicatorLimited())
|
||||
} else if (isLimited) {
|
||||
if (numberOwned == 0) {
|
||||
binding.itemDetailIndicator.background = BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfItemIndicatorLimited())
|
||||
} else {
|
||||
binding.itemDetailIndicator.background = AppCompatResources.getDrawable(context, R.drawable.pill_bg_purple_300)
|
||||
}
|
||||
binding.itemDetailIndicator.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
if (item.key == "gem" && item.limitedNumberLeft == -1) {
|
||||
binding.itemDetailIndicator.background = AppCompatResources.getDrawable(context, R.drawable.item_indicator_subscribe)
|
||||
binding.itemDetailIndicator.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
if (binding.itemDetailIndicator.visibility == View.VISIBLE) {
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ public class HabiticaIconsHelper {
|
|||
if (imageOfPinnedItem != null)
|
||||
return imageOfPinnedItem;
|
||||
|
||||
int size = scaleSize(16);
|
||||
int size = scaleSize(14);
|
||||
imageOfPinnedItem = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(imageOfPinnedItem);
|
||||
canvas.scale(displayDensity, displayDensity);
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
NAME=4.3
|
||||
CODE=6381
|
||||
CODE=6391
|
||||
Loading…
Reference in a new issue