mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 17:51:57 +00:00
Improve mystery item feedback. Fixes #1188
This commit is contained in:
parent
40c3665c3a
commit
2eec91d635
5 changed files with 25 additions and 17 deletions
|
|
@ -22,7 +22,9 @@
|
||||||
android:layout_width="@dimen/snackbar_image_size"
|
android:layout_width="@dimen/snackbar_image_size"
|
||||||
android:background="@drawable/white_circle_background"
|
android:background="@drawable/white_circle_background"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:layout_marginBottom="6dp"/>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/content_container"
|
android:id="@+id/content_container"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
||||||
|
|
@ -956,4 +956,5 @@
|
||||||
<string name="remove_member_confirm">Are you sure you want to remove %s from the group?</string>
|
<string name="remove_member_confirm">Are you sure you want to remove %s from the group?</string>
|
||||||
<string name="transfer">Transfer</string>
|
<string name="transfer">Transfer</string>
|
||||||
<string name="removed_member">%s was removed from the group</string>
|
<string name="removed_member">%s was removed from the group</string>
|
||||||
|
<string name="mystery_item_received">You open the box and receive a %s</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.habitrpg.android.habitica.ui.fragments.inventory.items
|
package com.habitrpg.android.habitica.ui.fragments.inventory.items
|
||||||
|
|
||||||
|
import android.graphics.drawable.BitmapDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
|
@ -20,10 +21,9 @@ import com.habitrpg.android.habitica.models.user.User
|
||||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||||
import com.habitrpg.android.habitica.ui.adapter.inventory.ItemRecyclerAdapter
|
import com.habitrpg.android.habitica.ui.adapter.inventory.ItemRecyclerAdapter
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
||||||
import com.habitrpg.android.habitica.ui.helpers.RecyclerViewEmptySupport
|
import com.habitrpg.android.habitica.ui.helpers.*
|
||||||
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.Companion.showSnackbar
|
||||||
import com.habitrpg.android.habitica.ui.helpers.resetViews
|
|
||||||
import io.reactivex.functions.Consumer
|
import io.reactivex.functions.Consumer
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
@ -35,17 +35,17 @@ class ItemRecyclerFragment : BaseFragment() {
|
||||||
lateinit var userRepository: UserRepository
|
lateinit var userRepository: UserRepository
|
||||||
val recyclerView: RecyclerViewEmptySupport? by bindView(R.id.recyclerView)
|
val recyclerView: RecyclerViewEmptySupport? by bindView(R.id.recyclerView)
|
||||||
val emptyView: View? by bindView(R.id.emptyView)
|
val emptyView: View? by bindView(R.id.emptyView)
|
||||||
val emptyTextView: TextView? by bindView(R.id.empty_text_view)
|
private val emptyTextView: TextView? by bindView(R.id.empty_text_view)
|
||||||
val titleView: TextView? by bindView(R.id.titleTextView)
|
val titleView: TextView? by bindView(R.id.titleTextView)
|
||||||
val footerView: TextView? by bindView(R.id.footerTextView)
|
private val footerView: TextView? by bindView(R.id.footerTextView)
|
||||||
val openMarketButton: Button? by bindView(R.id.openMarketButton)
|
private val openMarketButton: Button? by bindView(R.id.openMarketButton)
|
||||||
val openEmptyMarketButton: Button? by bindView(R.id.openEmptyMarketButton)
|
private val openEmptyMarketButton: Button? by bindView(R.id.openEmptyMarketButton)
|
||||||
var adapter: ItemRecyclerAdapter? = null
|
var adapter: ItemRecyclerAdapter? = null
|
||||||
var itemType: String? = null
|
var itemType: String? = null
|
||||||
var itemTypeText: String? = null
|
var itemTypeText: String? = null
|
||||||
var isHatching: Boolean = false
|
var isHatching: Boolean = false
|
||||||
var isFeeding: Boolean = false
|
var isFeeding: Boolean = false
|
||||||
var hatchingItem: Item? = null
|
private var hatchingItem: Item? = null
|
||||||
var feedingPet: Pet? = null
|
var feedingPet: Pet? = null
|
||||||
var user: User? = null
|
var user: User? = null
|
||||||
internal var layoutManager: androidx.recyclerview.widget.LinearLayoutManager? = null
|
internal var layoutManager: androidx.recyclerview.widget.LinearLayoutManager? = null
|
||||||
|
|
@ -103,6 +103,14 @@ class ItemRecyclerFragment : BaseFragment() {
|
||||||
.subscribe(Consumer { MainNavigationController.navigate(R.id.partyFragment) }, RxErrorHandler.handleEmptyError()))
|
.subscribe(Consumer { MainNavigationController.navigate(R.id.partyFragment) }, RxErrorHandler.handleEmptyError()))
|
||||||
compositeSubscription.add(adapter.getOpenMysteryItemFlowable()
|
compositeSubscription.add(adapter.getOpenMysteryItemFlowable()
|
||||||
.flatMap { inventoryRepository.openMysteryItem(user) }
|
.flatMap { inventoryRepository.openMysteryItem(user) }
|
||||||
|
.doOnNext {
|
||||||
|
val activity = activity as? MainActivity
|
||||||
|
if (activity != null) {
|
||||||
|
DataBindingUtils.loadImage("shop_${it.key}") {image ->
|
||||||
|
showSnackbar(activity.snackbarContainer, BitmapDrawable(context?.resources, image), null, getString(R.string.mystery_item_received, it.text), HabiticaSnackbar.SnackbarDisplayType.NORMAL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.flatMap { userRepository.retrieveUser(false) }
|
.flatMap { userRepository.retrieveUser(false) }
|
||||||
.subscribe(Consumer { }, RxErrorHandler.handleEmptyError()))
|
.subscribe(Consumer { }, RxErrorHandler.handleEmptyError()))
|
||||||
compositeSubscription.add(adapter.startHatchingEvents.subscribeWithErrorHandler(Consumer { showHatchingDialog(it) }))
|
compositeSubscription.add(adapter.startHatchingEvents.subscribeWithErrorHandler(Consumer { showHatchingDialog(it) }))
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import android.util.AttributeSet
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.ui.AvatarView
|
|
||||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||||
import kotlinx.android.synthetic.main.item_image_row.view.*
|
import kotlinx.android.synthetic.main.item_image_row.view.*
|
||||||
|
|
||||||
|
|
@ -14,7 +13,7 @@ class EquipmentItemRow(context: Context?, attrs: AttributeSet?) : LinearLayout(c
|
||||||
var equipmentIdentifier: String? = null
|
var equipmentIdentifier: String? = null
|
||||||
set(value) {
|
set(value) {
|
||||||
field = value
|
field = value
|
||||||
val imageName = if (equipmentIdentifier?.isNotEmpty() == true && equipmentIdentifier?.endsWith("base_0") == false) "shop_"+equipmentIdentifier else "head_0"
|
val imageName = if (equipmentIdentifier?.isNotEmpty() == true && equipmentIdentifier?.endsWith("base_0") == false) "shop_$equipmentIdentifier" else "head_0"
|
||||||
DataBindingUtils.loadImage(imageView, imageName)
|
DataBindingUtils.loadImage(imageView, imageName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,11 +53,9 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setLeftIcon(image: Drawable?): HabiticaSnackbar {
|
fun setLeftIcon(image: Drawable?): HabiticaSnackbar {
|
||||||
if (image == null) {
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
val imageView = view.findViewById<ImageView>(R.id.leftImageView)
|
val imageView = view.findViewById<ImageView>(R.id.leftImageView)
|
||||||
imageView.setImageDrawable(image)
|
imageView.setImageDrawable(image)
|
||||||
|
imageView.visibility = if (image != null) View.VISIBLE else View.GONE
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,7 +120,7 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
|
||||||
showSnackbar(container, null, null, content, null, null, 0, null, displayType)
|
showSnackbar(container, null, null, content, null, null, 0, null, displayType)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun showSnackbar(container: ViewGroup, leftImage: Drawable, title: CharSequence, content: CharSequence, displayType: SnackbarDisplayType) {
|
fun showSnackbar(container: ViewGroup, leftImage: Drawable, title: CharSequence?, content: CharSequence?, displayType: SnackbarDisplayType) {
|
||||||
showSnackbar(container, leftImage, title, content, null, null, 0, null, displayType)
|
showSnackbar(container, leftImage, title, content, null, null, 0, null, displayType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -136,7 +134,7 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
|
||||||
}
|
}
|
||||||
|
|
||||||
fun showSnackbar(container: ViewGroup, leftImage: Drawable?, title: CharSequence?, content: CharSequence?, specialView: View?, rightIcon: Drawable?, rightTextColor: Int, rightText: String?, displayType: SnackbarDisplayType) {
|
fun showSnackbar(container: ViewGroup, leftImage: Drawable?, title: CharSequence?, content: CharSequence?, specialView: View?, rightIcon: Drawable?, rightTextColor: Int, rightText: String?, displayType: SnackbarDisplayType) {
|
||||||
val snackbar = HabiticaSnackbar.make(container, Snackbar.LENGTH_LONG)
|
val snackbar = make(container, Snackbar.LENGTH_LONG)
|
||||||
.setTitle(title)
|
.setTitle(title)
|
||||||
.setText(content)
|
.setText(content)
|
||||||
.setSpecialView(specialView)
|
.setSpecialView(specialView)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue