123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- package com.develop.common.widget
- import android.content.Context
- import android.util.AttributeSet
- import android.view.View
- import android.widget.RelativeLayout
- import com.blankj.utilcode.util.ThreadUtils.runOnUiThread
- import com.develop.base.ext.load
- import com.develop.base.ext.navigateTo
- import com.develop.base.ext.resId2Dimension
- import com.develop.base.ext.updateText
- import com.develop.base.util.TopResumedAtyHolder
- import com.develop.common.R
- import com.develop.common.data_repo.FoodDataProvider
- import com.develop.common.data_repo.db.FoodContentModel
- import com.develop.common.data_repo.db.entity.UserFavoriteRecipes
- import com.develop.common.databinding.FoodContentViewBinding
- import com.develop.common.dialog.CancelConfirmDialog
- import com.develop.common.event.RefreshDataEvent
- import com.develop.common.router.Screens
- import com.develop.common.tag.*
- import org.greenrobot.eventbus.EventBus
- class FoodContentView : RelativeLayout {
- constructor(context: Context?) : super(context) {}
- constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {}
- constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
- context, attrs, defStyleAttr
- ) {
- }
- private val cancelConfirmDialog by lazy {
- CancelConfirmDialog()
- }
- private var binding: FoodContentViewBinding
- private var mFoodContent: FoodContentModel? = null
- private var mIsFoodList = false
- var mIsHistoryList = false
- init {
- val root = View.inflate(context, R.layout.food_content_view, this)
- binding = FoodContentViewBinding.bind(root)
- binding.contentLayout.setOnClickListener {
- mFoodContent?.apply {
- TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_DETAIL) {
- withString(
- SOURCE_TAG, if (isNetRecipes) {
- "remote"
- } else {
- "local"
- }
- )
- withString(NUMBER_TAG, foodId)
- withBoolean(IS_LIKE_TAG, isLike)
- if (!mIsFoodList) {
- withString(RECIPES_EDITION_TAG, recipesEdition)
- }
- }
- }
- }
- }
- /**
- * 显示菜谱数据
- * @param isFoodList 是否为FoodListActivity
- */
- fun setFoodContent(content: FoodContentModel, isFoodList: Boolean = false) {
- mFoodContent = content
- mIsFoodList = isFoodList
- val isNetRecipes = content.isNetRecipes
- val hasDownload = content.hasDownloaded
- val isLike = content.isLike
- val cover = if (isFoodList) {
- if (isNetRecipes && !content.hasDownloaded) {
- content.cover
- } else {
- FoodDataProvider.getResourcePath(content.cover.toString())
- }
- } else {
- if (isNetRecipes) {
- content.cover
- } else {
- FoodDataProvider.getResourcePath(content.cover.toString())
- }
- }
- binding.apply {
- ivCover.load(cover)
- tvFoodName.updateText(content.foodName)
- FoodDataProvider.getUserDatabase().runInTransaction {
- val result = FoodDataProvider.getUserDatabase().userInfoDao()
- .queryUserTag(CURRENT_USER_ID, content.foodId)
- runOnUiThread {
- result?.starCount?.apply {
- starView.setStarCount(this)
- }
- }
- }
- starView.apply {
- setCommentNumber(content.useNum.toString())
- setCommentTextColorGray()
- }
- tvTimeAndLevel.updateText("${content.time}・${content.level}")
- if (isNetRecipes) {
- ivNet.visibility = View.VISIBLE
- } else {
- ivNet.visibility = View.GONE
- }
- if (hasDownload) {
- ivLike.load(R.drawable.ic_delete)
- } else {
- if (isLike) {
- ivLike.load(R.drawable.ic_like)
- } else {
- ivLike.load(R.drawable.ic_unlike)
- }
- }
- //喜欢点击
- likeLayout.setOnClickListener {
- //收藏/取消收藏
- if (content.isNetRecipes && isFoodList) {
- val titleStr = context.getString(R.string.are_you_sure_to_delete)
- val confirmStr = context.getString(R.string.yes)
- val cancelStr = context.getString(R.string.no)
- TopResumedAtyHolder.getCurrentActivity()?.apply {
- cancelConfirmDialog.apply {
- this.title = titleStr
- this.confirmStr = confirmStr
- this.cancelStr = cancelStr
- onDialogClickListener =
- object : CancelConfirmDialog.OnDialogClickListener {
- override fun onConfirm() {
- FoodDataProvider.getUserDatabase().runInTransaction {
- FoodDataProvider.getUserDatabase().userInfoDao()
- .removeOnlineRecipe(
- CURRENT_USER_ID, content.foodId
- )
- }
- FoodDataProvider.getDatabase().runInTransaction {
- val recipeDao =
- FoodDataProvider.getDatabase().recipeDao()
- val recipes = recipeDao.queryRecipe(content.foodId)
- recipes?.apply {
- recipeDao.deleteRecipe(this)
- }
- FoodDataProvider.deleteRecipeResource(content.foodId)
- }
- EventBus.getDefault().post(RefreshDataEvent())
- }
- override fun onCancel() {
- }
- }
- showDialog(supportFragmentManager, "cancelConfirmDialog")
- }
- }
- } else {
- if (content.isLike) {
- content.isLike = false
- ivLike.load(R.drawable.ic_unlike)
- FoodDataProvider.getUserDatabase().runInTransaction {
- FoodDataProvider.getUserDatabase().userInfoDao().removeFavoriteRecipe(
- CURRENT_USER_ID, content.foodId
- )
- }
- if (!mIsHistoryList) {
- EventBus.getDefault().post(RefreshDataEvent())
- }
- } else {
- content.isLike = true
- ivLike.load(R.drawable.ic_like)
- FoodDataProvider.getUserDatabase().runInTransaction {
- FoodDataProvider.getUserDatabase().userInfoDao().insertFavoriteRecipe(
- UserFavoriteRecipes(CURRENT_USER_ID, content.foodId)
- )
- }
- if (!mIsHistoryList) {
- EventBus.getDefault().post(RefreshDataEvent())
- }
- }
- }
- }
- }
- }
- companion object {
- val dp10 = (com.develop.base.R.dimen.convert_10px).resId2Dimension()
- }
- }
|