Display favorite icon on recipe holders

This commit is contained in:
Kirill Kamakin
2022-12-13 19:31:53 +01:00
parent aefb974cb3
commit 3eb99206e8
5 changed files with 56 additions and 6 deletions

View File

@@ -1,5 +1,7 @@
package gq.kirmanak.mealient.ui.recipes
import android.view.View
import androidx.annotation.StringRes
import androidx.recyclerview.widget.RecyclerView
import gq.kirmanak.mealient.R
import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity
@@ -43,6 +45,24 @@ class RecipeViewHolder private constructor(
logger.d { "bind: item clicked $entity" }
clickListener(entity)
}
binding.favoriteIcon.setImageResource(
if (item.isFavorite) {
R.drawable.ic_favorite_filled
} else {
R.drawable.ic_favorite_unfilled
}
)
binding.favoriteIcon.setContentDescription(
if (item.isFavorite) {
R.string.view_holder_recipe_favorite_content_description
} else {
R.string.view_holder_recipe_non_favorite_content_description
}
)
}
}
}
private fun View.setContentDescription(@StringRes resId: Int) {
contentDescription = context.getString(resId)
}

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M12,21 L10.55,19.7Q8.025,17.425 6.375,15.775Q4.725,14.125 3.75,12.812Q2.775,11.5 2.388,10.4Q2,9.3 2,8.15Q2,5.8 3.575,4.225Q5.15,2.65 7.5,2.65Q8.8,2.65 9.975,3.2Q11.15,3.75 12,4.75Q12.85,3.75 14.025,3.2Q15.2,2.65 16.5,2.65Q18.85,2.65 20.425,4.225Q22,5.8 22,8.15Q22,9.3 21.613,10.4Q21.225,11.5 20.25,12.812Q19.275,14.125 17.625,15.775Q15.975,17.425 13.45,19.7Z" />
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorPrimary"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M12,21 L10.55,19.7Q8.025,17.425 6.375,15.775Q4.725,14.125 3.75,12.812Q2.775,11.5 2.388,10.4Q2,9.3 2,8.15Q2,5.8 3.575,4.225Q5.15,2.65 7.5,2.65Q8.8,2.65 9.975,3.2Q11.15,3.75 12,4.75Q12.85,3.75 14.025,3.2Q15.2,2.65 16.5,2.65Q18.85,2.65 20.425,4.225Q22,5.8 22,8.15Q22,9.3 21.613,10.4Q21.225,11.5 20.25,12.812Q19.275,14.125 17.625,15.775Q15.975,17.425 13.45,19.7ZM12,18.3Q14.4,16.15 15.95,14.612Q17.5,13.075 18.4,11.938Q19.3,10.8 19.65,9.912Q20,9.025 20,8.15Q20,6.65 19,5.65Q18,4.65 16.5,4.65Q15.325,4.65 14.325,5.312Q13.325,5.975 12.95,7H11.05Q10.675,5.975 9.675,5.312Q8.675,4.65 7.5,4.65Q6,4.65 5,5.65Q4,6.65 4,8.15Q4,9.025 4.35,9.912Q4.7,10.8 5.6,11.938Q6.5,13.075 8.05,14.612Q9.6,16.15 12,18.3ZM12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Q12,11.475 12,11.475Z" />
</vector>

View File

@@ -17,8 +17,7 @@
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="9dp"
android:layout_marginBottom="5dp"
android:layout_marginVertical="@dimen/margin_small"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?textAppearanceHeadline6"
@@ -32,18 +31,27 @@
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="13dp"
android:layout_marginHorizontal="@dimen/margin_medium"
android:contentDescription="@string/content_description_view_holder_recipe_image"
android:scaleType="centerCrop"
app:layout_constraintBottom_toTopOf="@+id/name"
app:layout_constraintDimensionRatio="2:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/favorite_icon"
app:layout_constraintVertical_chainStyle="packed"
app:shapeAppearance="?shapeAppearanceCornerMedium"
tools:srcCompat="@drawable/placeholder_recipe" />
<ImageView
android:id="@+id/favorite_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="@dimen/margin_small"
android:contentDescription="@string/view_holder_recipe_favorite_content_description"
app:layout_constraintBottom_toTopOf="@+id/image"
app:layout_constraintEnd_toEndOf="@id/image"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@drawable/ic_favorite_unfilled" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View File

@@ -57,4 +57,6 @@
<string name="activity_share_recipe_success_toast">Recipe saved successfully.</string>
<string name="activity_share_recipe_failure_toast">Something went wrong.</string>
<string name="content_description_activity_share_recipe_progress">Progress indicator</string>
<string name="view_holder_recipe_favorite_content_description">Item is favorite</string>
<string name="view_holder_recipe_non_favorite_content_description">Item is not favorite</string>
</resources>