From 28222a00634824f8b4e1750f0b0717ecedba9413 Mon Sep 17 00:00:00 2001 From: Jose Rubio Date: Tue, 19 Dec 2023 17:10:39 +0100 Subject: [PATCH] ANDROID-14098 set asset dimensions (#322) * ANDROID-14098 add TYPE_IMAGE_ROUNDED and configureAsset(dimensions) for traditional views * ANDROID-14098 add ImageAsset to compose ListRowIcon to accept different sizes * ANDROID-14098 add listRowAssetHeight & listRowAssetWidth * ANDROID-14098 add roborazzi tests for the xml layout * ANDROID-14098 add roborazzi tests for ListRowItem (compose) * ANDROID-14098 update the compose readme * ANDROID-14098 update listRowAssetHeight and listRowAssetWidth as dimension * ANDROID-14098 add extra image to the xml test --- .../components/ListsCatalogFragment.kt | 20 ++++++ .../catalog/ui/compose/components/Lists.kt | 13 ++++ .../check_ListRowItem_with_32x32_asset.png | Bin 0 -> 13616 bytes .../check_ListRowItem_with_64x64_asset.png | Bin 0 -> 15047 bytes library/screenshots/check_ListRowView_xml.png | Bin 0 -> 64867 bytes .../mistica/compose/list/ListRowIcon.kt | 26 +++++++ .../telefonica/mistica/compose/list/README.md | 2 + .../telefonica/mistica/list/ListRowView.kt | 67 ++++++++++++++++-- .../com/telefonica/mistica/list/README.md | 7 ++ .../mistica/list/model/ImageDimensions.kt | 6 ++ .../src/main/res/values/attrs_components.xml | 7 ++ library/src/main/res/values/dimens_lists.xml | 1 + .../mistica/compose/list/ListRowItemKtTest.kt | 61 ++++++++++++++++ .../mistica/list/ListRowViewTest.kt | 29 ++++++++ library/src/test/res/drawable/placeholder.xml | 14 ++++ .../test/res/layout/test_list_row_view.xml | 57 +++++++++++++++ 16 files changed, 306 insertions(+), 4 deletions(-) create mode 100644 library/screenshots/check_ListRowItem_with_32x32_asset.png create mode 100644 library/screenshots/check_ListRowItem_with_64x64_asset.png create mode 100644 library/screenshots/check_ListRowView_xml.png create mode 100644 library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt create mode 100644 library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt create mode 100644 library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt create mode 100644 library/src/test/res/drawable/placeholder.xml create mode 100644 library/src/test/res/layout/test_list_row_view.xml diff --git a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt index 884360956..eef476668 100644 --- a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt +++ b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt @@ -17,13 +17,16 @@ import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_16_9 import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_1_1 import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_7_10 +import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_ROUNDED import com.telefonica.mistica.list.ListRowView.Companion.TYPE_LARGE_ICON import com.telefonica.mistica.list.ListRowView.Companion.TYPE_SMALL_ICON import com.telefonica.mistica.list.MisticaRecyclerView +import com.telefonica.mistica.list.model.ImageDimensions import com.telefonica.mistica.tag.TagStyle import com.telefonica.mistica.tag.TagView import com.telefonica.mistica.tag.TagView.Companion.TYPE_INVERSE import com.telefonica.mistica.tag.TagView.Companion.TYPE_PROMO +import com.telefonica.mistica.util.convertDpToPx class ListsCatalogFragment : Fragment() { @@ -438,6 +441,17 @@ class ListsCatalogFragment : Fragment() { withInverseBackground = withInverseBackground, ) }, + { + it.configureView( + withAsset = true, + withAssetType = TYPE_IMAGE_ROUNDED, + withDimensions = ImageDimensions(width = 64, height = 64), + withAction = true, + withSubtitle = true, + withHeadline = true, + withInverseBackground = withInverseBackground, + ) + }, ) @SuppressLint("SetTextI18n") @@ -448,6 +462,7 @@ class ListsCatalogFragment : Fragment() { withDescriptionMaxLines: Int? = null, withAsset: Boolean = false, @AssetType withAssetType: Int = TYPE_SMALL_ICON, + withDimensions: ImageDimensions? = null, withAction: Boolean = false, withBadge: Boolean = false, withBadgeNumeric: Int = 0, @@ -487,6 +502,10 @@ class ListsCatalogFragment : Fragment() { } ) + withDimensions?.let { + setAssetHeight(context.convertDpToPx(withDimensions.height).toFloat()) + setAssetWidth(context.convertDpToPx(withDimensions.width).toFloat()) + } setAssetType(withAssetType) withUrlIcon?.let { setAssetUrl(it, errorDrawable = withErrorIcon) @@ -522,6 +541,7 @@ class ListsCatalogFragment : Fragment() { TYPE_IMAGE_1_1, TYPE_IMAGE_16_9, TYPE_IMAGE_7_10, + TYPE_IMAGE_ROUNDED, -> R.drawable.highlighted_card_custom_background else -> R.drawable.ic_lists diff --git a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt index 5ae18f5a0..9d1e918c4 100644 --- a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt +++ b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt @@ -33,6 +33,7 @@ import com.telefonica.mistica.compose.list.ListRowItem import com.telefonica.mistica.compose.shape.Chevron import com.telefonica.mistica.compose.tag.Tag import com.telefonica.mistica.compose.theme.MisticaTheme +import com.telefonica.mistica.list.model.ImageDimensions import com.telefonica.mistica.tag.TagView.Companion.TYPE_PROMO const val TITLE = "Title" @@ -276,6 +277,18 @@ fun samples() = listOf( painter = painterResource(id = R.drawable.list_row_drawable), aspectRatio = ListRowIcon.AspectRatio.RATIO_7_10 ), + ), + ListItem( + title = TITLE, + subtitle = SUBTITLE, + description = DESCRIPTION, + action = { Switch(checked = true, onCheckedChange = {}) }, + isBadgeVisible = true, + badge = "1", + listRowIcon = ListRowIcon.ImageAsset( + painter = painterResource(id = R.drawable.list_row_drawable), + dimensions = ImageDimensions(width = 64, height = 64), + ), ) ) diff --git a/library/screenshots/check_ListRowItem_with_32x32_asset.png b/library/screenshots/check_ListRowItem_with_32x32_asset.png new file mode 100644 index 0000000000000000000000000000000000000000..cf495f640ee9735bce8073de39ecf6d618ab27df GIT binary patch literal 13616 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
  • Y+ucaZSi z8-Sz*fg`li<4iv#22S;Gd`77vZr8YM)U1rCiR)7=IUK-B6ql8fADPL2IzyQ2%h82h zT^i-miSb33ySO%qk&X3S*QWz@-TW*q z<_s4+Lv#H1v)2v3ZFfk6=Xp*p(^p$cc<(S7)UE%~w-{@lXjT50co`MQo+V=gR0GDX zp1$-twLD?fF5zXaQJEd~)+0ORQ;fRQ)R8Im`T+c86yEzQHO`m6KTfm22(1A}v=>!l zmSfx2GlNi;IGl4J=tlRAfnaDHtEIR;X zG##rsbid7V`y?u5u1uG~m;7Vreq&RxXO4|qNP4K!-*Prz|CXhBy>kgo?5ay$^vb`| z*9X226}w8uKsZAB6Y!TnI&dtPJaW_n9@1wGa^btwlXA$Z>DK1J)xGPOJ6xb;wK73< zT(d2`D|=VCi*AQ3b>A9zNI`Qw(4$kxUH6KaJ?+W9cO|c)u|j0NpazGLl3U zY@74s-`}X-QonL83*mNJ)olKojWpsPN}Ahte|Yi4*Cq%7<#L{79j61yT~c1yOnZtS z?9(&J3ugp20tR7InZ6>9hZ62$Vv} zyV~A|H^Te>8g+|qc^a3R#x-@dsb@XORp0mi{?lnMP%HTwyC_}Ba6TTaKfA200NOZ? z>oF_MPuATc`S-MH16*?amdSiDU*8=E=?y+ji_sTVrD<|+Y!DsNuR?70{KSo#EQ;8@ z&bsZ_+B7`8UI?nK%gtAYKLl+#Dmi(`zh~ouv}Fen>kRP#t1HfR-Tv-)B+s{U{sO;` z-(~6C8_NYfsfi_btCg&)gAg?f_;dK)tPJy_Lp{up9ftcI?><&*s6VJ2NG*Rw77V9a zD*Z*i!`JzCZW+Yjt+9+tP5vPsjiq?HLZx@BOHBkt)bR}t!8J1xHu%U`YZ&9;tb{^E zbV}*#UEu8?%x^sq>&)*NgXJ{CA21+iI*4Y-!19%I?!z~p9WNgC;Qzhtcp%Pu{(|Gp zg5C>TN$DWx`>jp)G3_Oa_j2q~x0}|;m&b3=!TO|vtCA<)bjee$TxAghvw%^7gE9lG zUu_|zcwG-u9?xEX zyFpL$0B&IJAQLaqv8T(T)JfbZt1#lQ*X(kCZl|kmBWI1WuEICF4;ez5>qauaUOb^i zuwU&h;*S~`6J?=3=M*ZIiH!=zA}F?n9?*W{s@P!lfCXpwjX@v6tAt0oXx}v<`8!fA&hu|GY00COkK3bOeHLlTHq~3epw(zKq=g*~TyfHdJEI0^PwX)DZgIUgeBe{JD zoRRB-FtYsMtmoc5`mP`=E#3V`l}tSdt3p{T@1?=CR)s7q+^aC3+x(~I-{&R^0-{Ht zOCk#+mD|9pV}5+xmgUJJdiTmoeXr^wj%`0u@L2+EQ$B$%zUnzpFX1Ru%s4GUNW-sT zvTw@1`n3JPoI8Fq%^P;5bBHLLy!&w0c4F(1k~ev81>fFP0pcRLv=(MZAhwb|E++vp z7s&041`!_&if4hHF#FLMJZ3qtynGhrN$eFf&b-6VgI(Vk$5<8J&!hL2`fPxc#wIXB zeCbTdu{-DzYR1Xf=&MnN`pu%;4SHRZT?8vUUQ}bK(1?DE&hi+_h_uW%AGF56Oe@5or$!AQBnoIHLs*gR5xjXKJ@7ffzQlCf@5MX9*%f6^@Y zz8kwgTtdhYQd##XG@QVD&$FZaCK>{Z$=k{V)mIt-9o++a2NLrgWgC94Uqs0*sfOtn8^!ij_Wb~fG}D^GWR`JkR{K%&TRlJA zo7#v7jv|30JA?1YTwg&YCjgNE4YEvw^ULEqU*2+cg=Kk+FUeNJFujVa=k`OXL3T2) z?`*F8<@UAePBj6!+pU8C`WzvwdTEc!$Z)xg8{Ve~4w>&Z_+aFqaj`cB(i<#Ck2Cd$ zpmdT;EEC5+$ot57O|>SC%41x{%sB$KoBDsa$a<30EZMDbnr7_6q0a%BB#l1j-<)@~ z7ySmRo}}Fu_i`rYzGVhSxbFPQU7c*nWg51hGpM?Qy$>rSm@^A)$z^+dYly(qwai|P zaa>g(t>8ECdj~(!bk-)?w_#)RnBHpAQ06F!_leP{oh`GCDT)l-A_OpkVSdo;o|6gi z%cicVu)~IzA1GbPZE^073s_&2z+gKKo?6$gChs1am%aNf|EyqUBp_F=zfa!(5Nl#b zXsjI+8+3}uL&m4^^U2yuY$bBG*)JN6Dz(K#2B93EhKDqpF8i-ln4!bJJeRl+sAg&p zx56#l{&Z~|L4q0_uvM*r30=a?3!pP=guCep5*U#I4HAYTIBRXI_-pUp#pHlI#gwwU zvKbA>!+$_MHUY1GlAgNwK8P5pZD;KblV3j}9n@sP7d~EW;mLV7-a&$%T_vDV4yRn~ z&alkv)LH732lrYtb-}c|`SI_|f7{qg+)z~$5qdFv{WN!_#B`I0n+p8b=gV}BFHN$^ zC)#f$6TxX?mpbU+Sd0mt(-bd>#dB^oP4Bc-9$jn1^_Kok=-*H{^Q9EI* zyFkaY1h-X%oI055Yc*N5FZ_j?6pG%4!dGB*G2k1qrV*&d@xs50MipVC>aP#E`_|!RBha& zPGk4yDPxq5CNo1xZ2XPx)1U2NtkbaM63J>~MQ%tQqb@Vd#ZWSnYrr{tu$&W$BLsI1 zbyULFIU!IpXKn>KT>9q6jtK!5LtAFyoB0~)iaa?mdVdh0o=ENyD4C>nmp`E6UDV#z zo=$3c%5?>C$9I+={jv>L))KHMx&+qI{(z}t$bp^48Kn`7IsK=ON?B;_zO&T1IA{=E z7xI?-zCoztHPvHUUf@0f#ayA~iU7Pp`SW8`Lx9qbl6>OXl9S6}qDV*=%ua4(J-Kyopz~X^B_Jd)xl(Vc-vWF(C74o!Lfb=c%MEvwhI^w zLS2$R3~mv$shML>=@RpYSrac%qZ+TQ4_gP87T+!tejA@_Kk(0KN5f`%YF`EmL9{|2 zO=BezVCkPrM)Xt;jxa=(61tD7 zZ**4wDWOVk#TwasMATzz)X!qu@)DAYhlU&@@`zXK&dg1*px|-lQcP=8Ps95jH78u4 ze(=iuAl_lg0ueWEviK0XxiDGKkT?BeEM$z$@sBP4VpDuJGBA@tmvS!cL>_fC)bxWX%Dsk0$>n8#_W~ z>sC1j)ClWe3P-%1xqs8^(u&D;|5tBb(3oldMNh^3%#h*IacRh+07`YP42^|6wbZCsZN@xFpC2sWLWAb-(cUNfWi~)u6i|Ve2{lVq~i7;xXY1P&Tk%iyWxUU9d9D ze408bCy%6`VV;Pc_#d;V+3g43?>pI|y&u$l;GkOym(SZIh6WZ?aoE8=Fc^ zz&5#e!Z4aTMM+P7!&|O6D^3Q4ep!E_B>(ALqh>Oru6pmt=c-T*r6fZNzd?|IF@%Kr z&xrst=t?Pb04+S#J|&i3Ds>y?OAnQ|X)3Ovi@P^A$Lnsgn=bw7Eb6)AZ)da|+s?!` z{le=Kko}*KMq|pyQ5hYRO{+sC-_*sF;>vnhIi)O8;unRwz_I@JUd5ATuJek)MTVL& zFZv|Nv!Cree}4RPJu(0wla3UlZg=We#+wPOz+%aI~QgapHiRZ5p_mdHrS3)RV;m(-FD! zbr@V>8_5ird&2aIHUUzQ6pMWEP|~CSa8K~vfiO_1N^vL+G%Bx)y#5TrOcXaFE?UwR zedplD33Zf4eZU<*YS7x-VZ8SV&P_#7W8%sS3f;&2Ppm4kZ0;<372Vk1f1sx;@Q!E6 zbD~tEAPB+nW@Fg;(u;$lvzb@v{zkE zoI6ju6 z7XZ1EH&I4Td51^p^!#vo@$>3V9b2&gRmbbG{xkcX(IbMj$xGT&y|?I9&L=vZ!ePX? z?#=!z!wkI}w-nsWM<^Zd;>3~VQzt;l>HbTIX)Gk*7$DT9YH6ZGR{%PgCK2a5wD<8N z=P$9;?7TYL25un6yp3i=JUh6v3wUVp_(ly;_PdfU!eb4Gb5gQO9{75>A#F0-6kxCN z%VW-6LqgS*yA^J?7X49*PA#v_m_yo8WoXbkbH~OlNNM_?-M+&o7?Zy(K=F2)sF;~j zK*(E{KXP{uG~V9@O=;G~-rHHl^bUWd_++*#$aD(R*w4bC5G*XqX^VNu|05r9L`+FM zwnu#+R9iaSnI{$Wc+a;*NxEnSmY3ZK4e!orYgX5g&o51S67VN2wY^K+6DtdkIwunA z7&w~=_yEt#!JqN2?sJ+OxSv<9M!gaX4X=u?`}cV{_~7aafkEy{*Esg=MtAi6rl;;f ziS}oWGBr^$*5&!{N!M*TuG#-Obw+1YiB~YW1qu99Bp!LzLqsXygLCU|CYOq)%yCt9vD8?RACH=~dqev2lyZdL;BGqY(6%b;+1 z{^PUH*$1*I0g-FLBrP~pEp*S^ooTcRG-vqj4shPPdxVa`3|0Egj4@JwDkDz%TY3Q$ zMn6!R0e|>&e!;|VLC*~IgRbTe$LZgI6F7#BTaa8em#^K7pc!|b&WmFH+yeODJ;niQ k{QrNU`NzKrP0)_I>HiYUd15sI%)+2|-RN4W_PwY71q3-alK=n! literal 0 HcmV?d00001 diff --git a/library/screenshots/check_ListRowItem_with_64x64_asset.png b/library/screenshots/check_ListRowItem_with_64x64_asset.png new file mode 100644 index 0000000000000000000000000000000000000000..acab689413c6a49f0ee5b21a2ec13bcb6414e57d GIT binary patch literal 15047 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 literal 0 HcmV?d00001 diff --git a/library/screenshots/check_ListRowView_xml.png b/library/screenshots/check_ListRowView_xml.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc4084516b21f079e2484d0f02be6d5e3372aed GIT binary patch literal 64867 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 DrawCircleIcon() is SmallAsset -> DrawSmallAsset() is LargeAsset -> DrawLargeAsset() + is ImageAsset -> DrawImageAsset() } } @@ -121,4 +132,19 @@ sealed class ListRowIcon(val contentDescription: String?) { ) } } + + @Composable + private fun ImageAsset.DrawImageAsset() { + painter?.let { + Image( + painter = painter, + contentDescription = contentDescription, + modifier = Modifier + .width(dimensions?.width?.dp ?: dimensionResource(id = R.dimen.asset_default_size)) + .height(dimensions?.height?.dp ?: dimensionResource(id = R.dimen.asset_default_size)) + .clip(RoundedCornerShape(4.dp)), + contentScale = contentScale, + ) + } + } } diff --git a/library/src/main/java/com/telefonica/mistica/compose/list/README.md b/library/src/main/java/com/telefonica/mistica/compose/list/README.md index 451f974d7..90071cedb 100644 --- a/library/src/main/java/com/telefonica/mistica/compose/list/README.md +++ b/library/src/main/java/com/telefonica/mistica/compose/list/README.md @@ -49,6 +49,8 @@ There are 4 types of icons: - `SmallAsset`: it's a circle icon, it could be a `Drawable` resource or a external url with a `description` parameter inside. - `LargeAsset`: it's a custom image, it could be a `Drawable` resource or a external url with a `description` parameter inside. It's possible to define the `aspectRatio` of the image and the `contentScale` type +- `ImageAsset`: it's a custom image, it could be a `Drawable` resource or a external url with a `description` parameter inside. It's possible to define the + `dimensions` which is of type `ImageDimensions`. ![image](https://user-images.githubusercontent.com/944814/143047368-3494885c-6324-4b4b-bcc0-4177525208bf.png) diff --git a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt index d1797b762..a26d9bc71 100644 --- a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt +++ b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt @@ -25,6 +25,7 @@ import androidx.databinding.BindingMethods import coil.load import com.telefonica.mistica.R import com.telefonica.mistica.badge.Badge +import com.telefonica.mistica.list.model.ImageDimensions import com.telefonica.mistica.util.convertDpToPx import com.telefonica.mistica.util.getThemeColor import com.telefonica.mistica.util.setAlpha @@ -95,6 +96,16 @@ import com.telefonica.mistica.util.setAlpha attribute = "listRowActionLayout", method = "setActionLayout" ), + BindingMethod( + type = ListRowView::class, + attribute = "listRowAssetHeight", + method = "setAssetHeight" + ), + BindingMethod( + type = ListRowView::class, + attribute = "listRowAssetWidth", + method = "setAssetWidth" + ), ) class ListRowView @JvmOverloads constructor( context: Context, @@ -109,7 +120,8 @@ class ListRowView @JvmOverloads constructor( TYPE_LARGE_ICON, TYPE_IMAGE_1_1, TYPE_IMAGE_7_10, - TYPE_IMAGE_16_9 + TYPE_IMAGE_16_9, + TYPE_IMAGE_ROUNDED, ) annotation class AssetType @@ -143,6 +155,8 @@ class ListRowView @JvmOverloads constructor( private var currentHeadlineLayoutRes: Int = HEADLINE_NONE private var currentActionLayoutRes: Int = ACTION_NONE private var assetType: Int = TYPE_SMALL_ICON + private var assetHeight: Float = UNDEFINED + private var assetWidth: Float = UNDEFINED init { LayoutInflater.from(context).inflate(R.layout.list_row_item, this, true) @@ -201,6 +215,18 @@ class ListRowView @JvmOverloads constructor( backgroundTypeDefaultValue ) ) + setAssetHeight( + styledAttrs.getDimension( + R.styleable.ListRowView_listRowAssetHeight, + UNDEFINED + ) + ) + setAssetWidth( + styledAttrs.getDimension( + R.styleable.ListRowView_listRowAssetWidth, + UNDEFINED + ) + ) setAssetType( styledAttrs.getInt( R.styleable.ListRowView_listRowAssetType, @@ -242,7 +268,8 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE -> assetCircularImageView TYPE_IMAGE_1_1, TYPE_IMAGE_7_10, - TYPE_IMAGE_16_9 -> assetRoundedImageView + TYPE_IMAGE_16_9, + TYPE_IMAGE_ROUNDED -> assetRoundedImageView else -> assetImageView }.also { imageView -> imageView.load(url) { @@ -270,6 +297,7 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE_1_1, TYPE_IMAGE_7_10, TYPE_IMAGE_16_9, + TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setImageDrawable(drawable) else -> assetImageView.setImageDrawable(drawable) @@ -283,15 +311,35 @@ class ListRowView @JvmOverloads constructor( private fun updateIconVisibility() { assetCircularImageView.isVisible = assetType == TYPE_IMAGE - assetRoundedImageView.isVisible = assetType == TYPE_IMAGE_1_1 || assetType == TYPE_IMAGE_7_10 || assetType == TYPE_IMAGE_16_9 + assetRoundedImageView.isVisible = assetType == TYPE_IMAGE_1_1 || assetType == TYPE_IMAGE_7_10 + || assetType == TYPE_IMAGE_16_9 || assetType == TYPE_IMAGE_ROUNDED assetImageView.isVisible = assetType == TYPE_SMALL_ICON || assetType == TYPE_LARGE_ICON } - fun setAssetType(@AssetType type: Int) { + fun setAssetType(@AssetType type: Int, dimensions: ImageDimensions? = null) { assetType = type + dimensions?.let { + setAssetHeight(context.convertDpToPx(it.height).toFloat()) + setAssetWidth(context.convertDpToPx(it.width).toFloat()) + } configureAsset() } + fun setAssetHeight(height: Float) { + assetHeight = if (height > 0) { + height + } else { + resources.getDimension(R.dimen.asset_default_size) + } + } + + fun setAssetWidth(width: Float) { + assetWidth = if (width > 0) + width + else + resources.getDimension(R.dimen.asset_default_size) + } + private fun configureAsset() { when (assetType) { TYPE_IMAGE -> { @@ -311,6 +359,7 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE_1_1 -> assetRoundedImageView.setSize(80, 80) TYPE_IMAGE_7_10 -> assetRoundedImageView.setSize(80, 116) TYPE_IMAGE_16_9 -> assetRoundedImageView.setSize(138, 80) + TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setSizePx(assetWidth, assetHeight) } recalculateAssetPosition() } @@ -541,6 +590,14 @@ class ListRowView @JvmOverloads constructor( } } + private fun ImageView.setSizePx(pxWidth: Float, pxHeight: Float) { + layoutParams.apply { + height = pxHeight.toInt() + width = pxWidth.toInt() + layoutParams = this + } + } + private fun View.isVisible(): Boolean = visibility == View.VISIBLE @@ -555,6 +612,7 @@ class ListRowView @JvmOverloads constructor( companion object { private const val BADGE_GONE = 0 + private const val UNDEFINED = -1f const val ACTION_NONE = -1 const val HEADLINE_NONE = -1 const val TYPE_IMAGE = 0 @@ -563,6 +621,7 @@ class ListRowView @JvmOverloads constructor( const val TYPE_IMAGE_1_1 = 3 const val TYPE_IMAGE_7_10 = 4 const val TYPE_IMAGE_16_9 = 5 + const val TYPE_IMAGE_ROUNDED = 6 @BindingAdapter( value = ["listRowBadgeCount", "listRowBadgeDescription"], diff --git a/library/src/main/java/com/telefonica/mistica/list/README.md b/library/src/main/java/com/telefonica/mistica/list/README.md index e72aa5c28..93ffb1eb9 100644 --- a/library/src/main/java/com/telefonica/mistica/list/README.md +++ b/library/src/main/java/com/telefonica/mistica/list/README.md @@ -29,6 +29,13 @@ Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used i + + + + + + + diff --git a/library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt b/library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt new file mode 100644 index 000000000..70772e8e3 --- /dev/null +++ b/library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt @@ -0,0 +1,6 @@ +package com.telefonica.mistica.list.model + +data class ImageDimensions( + val width: Int, + val height: Int, +) \ No newline at end of file diff --git a/library/src/main/res/values/attrs_components.xml b/library/src/main/res/values/attrs_components.xml index da7f7c025..53366270e 100755 --- a/library/src/main/res/values/attrs_components.xml +++ b/library/src/main/res/values/attrs_components.xml @@ -69,6 +69,13 @@ + + + + + + + diff --git a/library/src/main/res/values/dimens_lists.xml b/library/src/main/res/values/dimens_lists.xml index 9553f08bc..e2ea70652 100644 --- a/library/src/main/res/values/dimens_lists.xml +++ b/library/src/main/res/values/dimens_lists.xml @@ -1,4 +1,5 @@ 1dp + 64dp diff --git a/library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt b/library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt new file mode 100644 index 000000000..a702b665a --- /dev/null +++ b/library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt @@ -0,0 +1,61 @@ +package com.telefonica.mistica.compose.list + +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onRoot +import com.telefonica.mistica.compose.shape.Chevron +import com.telefonica.mistica.compose.tag.Tag +import com.telefonica.mistica.compose.theme.MisticaTheme +import com.telefonica.mistica.compose.theme.brand.MovistarBrand +import com.telefonica.mistica.list.model.ImageDimensions +import com.telefonica.mistica.testutils.ScreenshotsTest +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import com.telefonica.mistica.R + +@RunWith(RobolectricTestRunner::class) +internal class ListRowItemKtTest: ScreenshotsTest() { + @get:Rule + val composeTestRule = createComposeRule() + + @Test + fun `check ListRowItem with 64x64 asset`() { + `when ListRowItem with asset`(ImageDimensions(width = 64, height = 64)) + + `then screenshot is OK`() + } + + @Test + fun `check ListRowItem with 32x32 asset`() { + `when ListRowItem with asset`(ImageDimensions(width = 32, height = 32)) + + `then screenshot is OK`() + } + + @OptIn(ExperimentalMaterialApi::class) + private fun `when ListRowItem with asset`(dimensions: ImageDimensions) { + composeTestRule.setContent { + MisticaTheme(brand = MovistarBrand) { + ListRowItem( + listRowIcon = ListRowIcon.ImageAsset( + painter = painterResource(id = R.drawable.placeholder), + dimensions = ImageDimensions(width = dimensions.width, height = dimensions.height), + ), + headline = Tag("Promo"), + isBadgeVisible = true, + title = "Title", + subtitle = "Subtitle", + description = "Description", + trailing = { Chevron() }, + ) + } + } + } + + private fun `then screenshot is OK`() { + compareScreenshot(composeTestRule.onRoot()) + } +} diff --git a/library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt b/library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt new file mode 100644 index 000000000..144d9e6d1 --- /dev/null +++ b/library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt @@ -0,0 +1,29 @@ +package com.telefonica.mistica.list + +import android.widget.FrameLayout +import androidx.test.espresso.Espresso +import androidx.test.espresso.matcher.ViewMatchers +import androidx.test.ext.junit.rules.activityScenarioRule +import com.telefonica.mistica.DummyActivity +import com.telefonica.mistica.R +import com.telefonica.mistica.testutils.ScreenshotsTest +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner + +@RunWith(RobolectricTestRunner::class) +internal class ListRowViewTest: ScreenshotsTest() { + @get:Rule + val rule = activityScenarioRule() + + @Test + fun `check ListRowView xml`() { + rule.scenario.onActivity { activity -> + val wrapper: FrameLayout = activity.findViewById(R.id.dummy_activity_wrapper) + activity.layoutInflater.inflate(R.layout.test_list_row_view, wrapper, true) + + compareScreenshot(Espresso.onView(ViewMatchers.withId(R.id.dummy_activity_wrapper))) + } + } +} \ No newline at end of file diff --git a/library/src/test/res/drawable/placeholder.xml b/library/src/test/res/drawable/placeholder.xml new file mode 100644 index 000000000..076893494 --- /dev/null +++ b/library/src/test/res/drawable/placeholder.xml @@ -0,0 +1,14 @@ + + + + diff --git a/library/src/test/res/layout/test_list_row_view.xml b/library/src/test/res/layout/test_list_row_view.xml new file mode 100644 index 000000000..9b1dfea6f --- /dev/null +++ b/library/src/test/res/layout/test_list_row_view.xml @@ -0,0 +1,57 @@ + + + + + + + + \ No newline at end of file