From 994948fbde3dd57f0ecc1fd426301f6f37a7e831 Mon Sep 17 00:00:00 2001 From: "Darryl L. Pierce" Date: Thu, 17 Jul 2025 11:20:41 -0400 Subject: [PATCH] Added the total number of comics to the comic display [#136] --- .../variant/android/view/VariantAppTopBar.kt | 11 +++---- .../android/view/comics/ComicBookListView.kt | 9 ++++++ .../android/view/comics/ComicBookView.kt | 4 +-- .../res/drawable-anydpi/ic_browse_library.xml | 13 ++++++++ .../res/drawable-anydpi/ic_comic_library.xml | 16 ++++++++++ .../res/drawable-anydpi/ic_delete_comics.xml | 20 +++++++++++++ .../main/res/drawable-anydpi/ic_settings.xml | 19 ++++++++++++ .../res/drawable-hdpi/ic_browse_library.png | Bin 0 -> 633 bytes .../res/drawable-hdpi/ic_comic_library.png | Bin 0 -> 494 bytes .../res/drawable-hdpi/ic_delete_comics.png | Bin 0 -> 509 bytes .../main/res/drawable-hdpi/ic_settings.png | Bin 0 -> 910 bytes .../res/drawable-mdpi/ic_browse_library.png | Bin 0 -> 453 bytes .../res/drawable-mdpi/ic_comic_library.png | Bin 0 -> 342 bytes .../res/drawable-mdpi/ic_delete_comics.png | Bin 0 -> 390 bytes .../main/res/drawable-mdpi/ic_settings.png | Bin 0 -> 661 bytes .../res/drawable-xhdpi/ic_browse_library.png | Bin 0 -> 806 bytes .../res/drawable-xhdpi/ic_comic_library.png | Bin 0 -> 615 bytes .../res/drawable-xhdpi/ic_delete_comics.png | Bin 0 -> 561 bytes .../main/res/drawable-xhdpi/ic_settings.png | Bin 0 -> 1291 bytes .../res/drawable-xxhdpi/ic_browse_library.png | Bin 0 -> 1350 bytes .../res/drawable-xxhdpi/ic_comic_library.png | Bin 0 -> 1027 bytes .../res/drawable-xxhdpi/ic_delete_comics.png | Bin 0 -> 1002 bytes .../main/res/drawable-xxhdpi/ic_settings.png | Bin 0 -> 2004 bytes .../src/main/res/values/strings.xml | 4 +++ iosVariant/Translations.xcstrings | 28 ++++++++++++++++++ iosVariant/Variant.xcodeproj/project.pbxproj | 9 ++++-- .../Views/Comics/ComicBookListView.swift | 6 ++-- 27 files changed, 124 insertions(+), 15 deletions(-) create mode 100644 androidVariant/src/main/res/drawable-anydpi/ic_browse_library.xml create mode 100644 androidVariant/src/main/res/drawable-anydpi/ic_comic_library.xml create mode 100644 androidVariant/src/main/res/drawable-anydpi/ic_delete_comics.xml create mode 100644 androidVariant/src/main/res/drawable-anydpi/ic_settings.xml create mode 100644 androidVariant/src/main/res/drawable-hdpi/ic_browse_library.png create mode 100644 androidVariant/src/main/res/drawable-hdpi/ic_comic_library.png create mode 100644 androidVariant/src/main/res/drawable-hdpi/ic_delete_comics.png create mode 100644 androidVariant/src/main/res/drawable-hdpi/ic_settings.png create mode 100644 androidVariant/src/main/res/drawable-mdpi/ic_browse_library.png create mode 100644 androidVariant/src/main/res/drawable-mdpi/ic_comic_library.png create mode 100644 androidVariant/src/main/res/drawable-mdpi/ic_delete_comics.png create mode 100644 androidVariant/src/main/res/drawable-mdpi/ic_settings.png create mode 100644 androidVariant/src/main/res/drawable-xhdpi/ic_browse_library.png create mode 100644 androidVariant/src/main/res/drawable-xhdpi/ic_comic_library.png create mode 100644 androidVariant/src/main/res/drawable-xhdpi/ic_delete_comics.png create mode 100644 androidVariant/src/main/res/drawable-xhdpi/ic_settings.png create mode 100644 androidVariant/src/main/res/drawable-xxhdpi/ic_browse_library.png create mode 100644 androidVariant/src/main/res/drawable-xxhdpi/ic_comic_library.png create mode 100644 androidVariant/src/main/res/drawable-xxhdpi/ic_delete_comics.png create mode 100644 androidVariant/src/main/res/drawable-xxhdpi/ic_settings.png create mode 100644 iosVariant/Translations.xcstrings diff --git a/androidVariant/src/main/java/org/comixedproject/variant/android/view/VariantAppTopBar.kt b/androidVariant/src/main/java/org/comixedproject/variant/android/view/VariantAppTopBar.kt index eeb82677..cc835a91 100644 --- a/androidVariant/src/main/java/org/comixedproject/variant/android/view/VariantAppTopBar.kt +++ b/androidVariant/src/main/java/org/comixedproject/variant/android/view/VariantAppTopBar.kt @@ -18,10 +18,6 @@ package org.comixedproject.variant.android.view -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.AccountCircle -import androidx.compose.material.icons.rounded.Home -import androidx.compose.material.icons.rounded.Settings import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -29,6 +25,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import org.comixedproject.variant.android.R @@ -49,21 +46,21 @@ fun VariantTopAppBar( actions = { IconButton(onClick = { onBrowseComics() }) { Icon( - imageVector = Icons.Rounded.Home, + painterResource(R.drawable.ic_comic_library), contentDescription = stringResource(R.string.browseServerDestinationLabel) ) } IconButton(onClick = { onBrowseServer() }) { Icon( - imageVector = Icons.Rounded.AccountCircle, + painterResource(R.drawable.ic_browse_library), contentDescription = stringResource(R.string.browseServerDestinationLabel) ) } IconButton(onClick = { onUpdateSettings() }) { Icon( - imageVector = Icons.Rounded.Settings, + painterResource(R.drawable.ic_settings), contentDescription = stringResource(R.string.settingsDestinationLabel) ) } diff --git a/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookListView.kt b/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookListView.kt index 143a1825..94a7b435 100644 --- a/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookListView.kt +++ b/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookListView.kt @@ -23,10 +23,12 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells import androidx.compose.foundation.lazy.staggeredgrid.items +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -46,6 +48,13 @@ fun ComicBookListView( modifier: Modifier = Modifier ) { Scaffold( + topBar = { + Text( + pluralStringResource(R.plurals.comicBookListTitle, comicBookList.size, + comicBookList.size), + style = MaterialTheme.typography.headlineMedium + ) + }, content = { padding -> if (comicBookList.isEmpty()) { Log.debug( diff --git a/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookView.kt b/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookView.kt index 1ca9aa1f..a0222987 100644 --- a/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookView.kt +++ b/androidVariant/src/main/java/org/comixedproject/variant/android/view/comics/ComicBookView.kt @@ -19,8 +19,6 @@ package org.comixedproject.variant.android.view.comics import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Delete import androidx.compose.material3.BottomAppBar import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -81,7 +79,7 @@ fun ComicBookView( onDeleteComics() }) { Icon( - Icons.Filled.Delete, + painterResource(R.drawable.ic_delete_comics), contentDescription = stringResource(R.string.deleteSelectionsLabel) ) } diff --git a/androidVariant/src/main/res/drawable-anydpi/ic_browse_library.xml b/androidVariant/src/main/res/drawable-anydpi/ic_browse_library.xml new file mode 100644 index 00000000..117e380c --- /dev/null +++ b/androidVariant/src/main/res/drawable-anydpi/ic_browse_library.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/androidVariant/src/main/res/drawable-anydpi/ic_comic_library.xml b/androidVariant/src/main/res/drawable-anydpi/ic_comic_library.xml new file mode 100644 index 00000000..8e9b6a77 --- /dev/null +++ b/androidVariant/src/main/res/drawable-anydpi/ic_comic_library.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/androidVariant/src/main/res/drawable-anydpi/ic_delete_comics.xml b/androidVariant/src/main/res/drawable-anydpi/ic_delete_comics.xml new file mode 100644 index 00000000..b44c8206 --- /dev/null +++ b/androidVariant/src/main/res/drawable-anydpi/ic_delete_comics.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/androidVariant/src/main/res/drawable-anydpi/ic_settings.xml b/androidVariant/src/main/res/drawable-anydpi/ic_settings.xml new file mode 100644 index 00000000..3085f104 --- /dev/null +++ b/androidVariant/src/main/res/drawable-anydpi/ic_settings.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/androidVariant/src/main/res/drawable-hdpi/ic_browse_library.png b/androidVariant/src/main/res/drawable-hdpi/ic_browse_library.png new file mode 100644 index 0000000000000000000000000000000000000000..a147001fa0957921e4b70bce096f412ee428db15 GIT binary patch literal 633 zcmV-<0*3vGP)m z*OAF&UO6$=J|Gv60_#BP9j@&ht06$bb4s{{CoZr}9)>#E)&Wh;r_bk8K2XF+i}__h90d zon#N&kZV9y=~&9<-8pFFK6bDTJWYeDLXSeod#UT4tXhG}e7PL*zPCz7lZ~4JCggou zVDwUKY#WhCWWeNyJWEq8nFVk3nh4}vRQV6gqA8ht@63{qP58zhQ$A8$1)&wi@+%Yy z^^l_#$e1fa_pE%dmpgGZLxc{4AWJ#11b3yU9y=XsMs5Uj(SFbrRNk-amx=(_Hh))$M#3|uIcN~c<9 z=x=#e&`)W77r9(6Ly>1K?uTLwZTc&EG;POm#=AzuCBaLb_}j$8RiRMGru0UKeAXv; z!3a-$-`{4v1M7pBf6uLpR%*aw*5^`N=XMw|M3IJ^BV(GqFhcPe3O9S`Te3&as1})! z9^_tY{RcxdIMBi*L<$ZF% z0~sop%UJ|PxWT=pB5Qpyk26HQdC_titD@h9%fzP5oLEC_9>FC<_qvfLId?Qz)p44y zvG=Isn&dRluh4Jbj7Q#Z*!&-c2El`DnfPDQFNeAGn|#DysSThD|UnI0NR zbTW)yIHW!I=H8FY&`E2xA4D9-=g?b{Bp<^ha?mB;S4m*tG6UoZP%XaSctlZjB!_i4 zrvf#{66%C=#=|;L7={V7lqU?k5W{f2=A05>yAry~IbA^zq&$Bh)G(U@^bK=lfy6i$ z+Y)9^F^_mUS6paIL!S~7TU=;M*iXC6GZ1N-&WJ*gzi{rift7d`y|JO^IhPxM3dr~U zCYrX{hj)t0sP17YX3^tJ_lyFeNp@`DdZ_!Tdk{W8jw#Rcyh+*PNh>uAqy{sP+MG2F z2!nSj2ST%6381!9K&aVs3P}96I0a;750%{1+fD(YCOe9p0m2^Iv;lNq0%*f2Ak?;; z0>bxo8$fqOfv{w2P61)?s#8FyU8x)h-fdB!ME=9A6bQ`<1Bw4#Hh{9Tj9~Wo1%me|2ak|12KRIi(EGw~G#ZP#Zxjg4n)P~pTK7a?c)}h)7N9xyjRKj7 z{{bXIZPcoSrJvxL-v*ve2YTm52J{LY@H`cti9l4+wj|4u00000NkvXXu0mjfg52I& literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-hdpi/ic_settings.png b/androidVariant/src/main/res/drawable-hdpi/ic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..fe5e1431e333ceada4f6be9e8d1a6fc4a8ed05f7 GIT binary patch literal 910 zcmV;919AL`P)Zf=Z=wB8sA~{r&wvY^&Gn-_d`P?Gr_@SlqyY za2psH=wV%AsMTr@)v?P|uQa?L#dAse@%+rX#Gt{z={pZMqC9hnK^>xAo-v2)4JHy$ zUteDiQ?QTw;qaU~tX8X+m`B#OnhcIHUnmrILU)k+gFrFv)d7v;YiLLC-Zaj>u~q@@ zleL4kisvYgi;q6U+8AU27IKs2j+M5VwFYU}&9RP~Y!NJM0}NiNu}&HKUYbA_F=a*8 zg@DAIwjY79?v%^r!+75%!MOej*0qq&=eMXBPDh#l+klUo>aSEP?O|TBv*03LW-ckf z*B3W+3(VQQ_GpRdGr;ON1Man>)A#j!8DAsCv4!5wtJA&8S1Gb*9!DsH+nfZy&EJnFN}WK8x%Tk zsS)ZUmKlp^1sfv{(e13WfK6nA`oO%s1&%Wpz&bm9+GJS^$HqQ%+yW$ZE}&WFk^+29 zYetz9GOy9DWcU12$UbIfq_B5O&8bC%|>IM|s#@WnStgCx){t$}^W3OhE6ML*Lk%2UIh^81TdLy!?~FwVDa`BkPhx#um7*t;Jr}24pFV kEX;5q5-7Mqw*P1G6Osnl=L5_-od5s;07*qoM6N<$g0%3vR{#J2 literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-mdpi/ic_browse_library.png b/androidVariant/src/main/res/drawable-mdpi/ic_browse_library.png new file mode 100644 index 0000000000000000000000000000000000000000..4108ba9ea4240f4aed9d36009835436fa85ad49f GIT binary patch literal 453 zcmV;$0XqJPP)g7)zHnEg!1ah#t#bjG>O6z*_7MR`E%BsXGei3OS>wla{j%M;lk=jm6iCRmm= z#sc?hjc0TDu$>1tL(Jwrr zRke_P2Y9~Yo|zHxrGP@SV~Xc%j-VGpgfjStuvQVn6|;*GUub(%x=L~aEYi|Nsu+ZB v`u-^eK`@7^)?wR4423oETrq062?h|~c*&~VFHnG|00000NkvXXu0mjfS{2Eu literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-mdpi/ic_comic_library.png b/androidVariant/src/main/res/drawable-mdpi/ic_comic_library.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b2a36e649fa971de33722d6b845b86b65048b3 GIT binary patch literal 342 zcmV-c0jd6pP)kD|vA%}pF*8Cs6iT5I?x0d<<;zcjocc=)8Z|lsmv0*owOM5V6V8~{_ z`DXG1-wIJTw0z%hJC5@b1i>57_dKt|eO(B&Sfhqo_OO@xx=^HP+DnpTjq5qfvP&6J z+tZB1`dhCTbZ2@oP@3arp^N^C2%CxG2Eul(>voZAtCzF*+7N!~&ESXnB$m?J?4?Ih zcMAx^@Kp&*L9<+|jPHV8O+XW1q6w%$0OrjIb7Tr0^SuI>7|DbDo@?m7bR9en;5)sH zfd8Tqz*!$f(FE5dj^i<&bgOG}qPC%iTGeBm6EXmWlbqcTFa*>m_^J9|2%ghZ2H*)+ o;&-N3fybeFB$mTM2)&;iSNz=*ajO>p6aWAK07*qoM6N<$f>oBBmjD0& literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-mdpi/ic_delete_comics.png b/androidVariant/src/main/res/drawable-mdpi/ic_delete_comics.png new file mode 100644 index 0000000000000000000000000000000000000000..485c3f1d92328b7fdda085d619cc8611edbeed08 GIT binary patch literal 390 zcmV;10eSw3P)IGv)?;vWoNT!x9>?)S7wzlRYyer7UFm{-9TT~<&d`8Pm<)notaDw)9`;g0=NfAR zV4i_ha)_E!StLnv6h+aLu@eBtJmXsO_}4rExREvDE$<0qCjc*!4WPIUFth&00K|7{ zL~E}AG|z?x+$uor6#&8OK>?Y$;gSbn5=oKknHe1TT*u{{R3007*qoM6N<$f{m-PCjbBd literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-mdpi/ic_settings.png b/androidVariant/src/main/res/drawable-mdpi/ic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..59d2f49dad5fe7ef18a4e818515c1d8ccbfc0052 GIT binary patch literal 661 zcmV;G0&4w*`v1+IZf7BAd-VsZ=T}w0gb%!d)K-)oS%;5Cpf@z_nam-=IT8 z{#)l5uamQyL6D%cQmIr?BA?F>3zxCNdr_;^7GYnIewuUE9pl4J(UODqvQQ{YVVW!! zi&zXgT`I0 z0IVj z7!IDfI)Xl=RNpPRpsC@8%o#l!KcTgSZHR?6M@gPqZ6=eMQ9lgIu6b+>8%x9Vf%0&6 zOov9QJTp0RxC`!QZ!8}HX@8I`hJ{K>Rwmd6KuRh6+MLbO`a3ZH`4wg(VpwP+T};6 vZ@}T6tuYOm{c?2!0ay63{@c>_Que@Kh)LfNvRDlK00000NkvXXu0mjfe%dwp literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-xhdpi/ic_browse_library.png b/androidVariant/src/main/res/drawable-xhdpi/ic_browse_library.png new file mode 100644 index 0000000000000000000000000000000000000000..14661b050caa5280bdf7b9aff6a48a189642fb0b GIT binary patch literal 806 zcmV+>1KIqEP)~_09aQ#V!pLaaZ>#4mf zsCGJ?rx5xljY#k}Y#+mCR)b6h5K~i;yn#v&QA4zDVwn+U5q_?74k& z3c@H}P`f0=?Hj~=rFMCtsw0T+x6~*Nn27~VVlWuwe==dDUdYJps?E6Iez9X=X6~p> zCg5=gp&L44VFEYQeq2Cs-;RZZR@CO7z>Sq8d_=7M(<`*7CNW*%BTYn(jtNb4VEH$-D4J>jWTp zO=jTQs3Y<$Fl);(BtFOpOwASTbfK8DzFCTdTf=@zV8`pK!Kq9Hv>JtGR=haE+4_~&;{{XTi zD-w!b8?d`l0-tGQ2cNBzCR6?^7;G|exLFCn#<*0a9jl|U>Pxw>!N_VoYV#y zRnZjfpojD-IgT^MbvEerJZ}?%PZ0WShiLi%7P8sw42xzmnItq1C5P*xD6_~+G8^lL z(TBt$7sn;E9x?0$8c)hGug4{{j%3!l$$*D}hwd(T$#EM(vjWXM)Zg-2gMm(C_Zh%;K7cnI z|1CvRv^gHdmIfer4X)L0A`|3G3a-yn6Q*tEN=Ie{}mKj(h%%%p=U>}9UENFoq z+-$SWUc^dF)+C3Eq9C(?d#u@D07+-bWO9fF;s8&w?a&F?;`KO?+5Dexa`gseTftE- z_$`7n7iTA1B9%&w)Gk+Pvd#&e0_^Mt#}tZg!xws26OlajUqJu>002ovPDHLkV1iCM B6b=9Y literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-xhdpi/ic_delete_comics.png b/androidVariant/src/main/res/drawable-xhdpi/ic_delete_comics.png new file mode 100644 index 0000000000000000000000000000000000000000..92d883db3652d684a204748da4643c675cc5d48d GIT binary patch literal 561 zcmV-10?z%3P)?kNOA=|Jl#KK67@AoSb8?7xYw9!AI7DiO`-+Hcb$avgEBrrQS z*^}I6?%ccQn`LGf$mIs0a=AQPtJNN(D0;8g>mS`h=E&S22xhoXS{muaIEU1rHqXtR z3#+-r=6a1V3>Uedb73XVjG=0^y2g2y%rWz&mh;Y)0SsD&LSX`pU+mAS4*^fDVzD^R zet!v@@`j6j33$6^zdwYtd5nvE3-QRlJHl#_NyRIFeQ>zjH zrdKn7Gy(91W<@msYL_#BGy!0`kpZ{@z-vRBb7I;8XmH*u02sXFoDC57&x!?q#W`mH zvhpx`!Q&zUK-{Cp9Opz*i=O8^E^-DiEM)*j>H+NEH{~;ncyknOYvJbESIk8FPXG9v99=HBuVj>{ja>UR9Js z!0A_xgEo6rUm7sOlV)Z=sNMmqFztAFzM%Tj0A~)F0X$W`0|t7^4B(CG%R-yYK6t*O z1P2VDZbJ=&7*`u37=o*$mpWqk?iu4JqpN`u3D|xq_x`YRikF2a*%c7-UH8_<&g*;EJl9ETKG<3L(5(`rD^A=0J=+6LqD(zkeMD zHO0dzXl7YG;9i2gZra7qcGbg=$JQs+Cx8)N7V;c}Wk4qNs_GpoHZJkJUkOcum%HT@ zKC7}B3=a=C!kRt?9(#$*6L?5@fWuu3J(~*SP0n|jDK-n@TWaVgE@X(ygG$H&545M& zMw(#nJRw&bX90GnWB}=t3*rMyj51DDLAyGdCqcnMAY|@}Pq&oQ06sKUYeyWE@)YRg zwY0g<%)$)gvJBr@4%?_5h1#Wbc6KgPUIOT7O(X|dl(F*>5;e=k@3YErfbN`dYszte z^Jm0|*@=mX)yngM8R@+>pacgPerY=KUZou(^S#Wrs&}v%5%O5|MWA0L+Y!=T zpAr=0IDVWGtI8p4-wZ?57lJhc*`s<4YPsd`%Ap(uW7xK#4doD)qq@S#8$d@#M`8e& z-4)7FOioTF2H@M2EgwL9_fb?Ogf=Tdff?^|{GuTg%;!qO^jTyUWD~zty#h`@GIn36 z-of^bHrG|3iBM`h`2Act4$ut<_q=i(u!;wSJD?l~OvX*i#qU=^k(E&Anf8L5Q&SHd zw&C}$+Y`Jh+Q{SAJ@`w1GEOPv+AQ6nj+qWwFu zcV9^jU{*dkBA)N6J_kG#-l(H0@yr)-zJXAR2Z3i&6Bn{*o>gRY)*Jb+(_55Z6xKK2 z!In6A>-G9JB{YeaebB&0zpOy|qS8Q97`RH`$R64i3(#oH4ZG zt1^pCsj=83sUHh`H}uSWBPov_5NwtV0$s*OCMPeVgPYt>dNKt8Vq3QBIx zAGQytw96G1xztuB(BPyR!A#$AcYZvtfiw4%lT(PTD4&xR#90N;1F$=z9M46v7h@06mkK)o=5nmcAy)UC;N30D$=U1+k5Th?RGvfy$}goL zOsS-)@X!lda|QV`fP)jvHgr@RpTR24scii7_z8<}EN-R%7#9El002ovPDHLkV1mFV BT@?TT literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-xxhdpi/ic_browse_library.png b/androidVariant/src/main/res/drawable-xxhdpi/ic_browse_library.png new file mode 100644 index 0000000000000000000000000000000000000000..52cf4a5b7cebd3738f2c19f1791be618744e5c32 GIT binary patch literal 1350 zcmV-M1-bf(P)6WIovrB0{w4fuv2^S!nQSQaB_%t9^z6eR?+0A@)6(jcLEi0ZE+D;6jBr9*LN~ zRNKu&0|8vppt1)K6L9 z($(>X5q<7JypJa*Ctp>6g}`Y$Y&n^zeo98>J~RrE&jNj@({%%mzE$To;wt@(KflA3 z>Z`A^k>{c*;o~RuJ2J4Weo%)>23gwGSSK`=BIK)I^>0PH-JVw`N(l2?85MFKOifL_ zqVW_ZCd6ktjuA{+J1cn?(SDl=2((9I!t!1QFY}!@;`~|joLt?_MekW`%Xg*4A8F-wT*8XdN!IXANk)^yfkWED1 zig^qfV{J?r*5Pek0oWd+)@BiIo6%jtMDgb&!i>XB z-X$XgD0NmFNi475#g~(?Ew#u1e_7B55*76c@#QSCW)UVylL9Sj18FUq90P>-T=OTf zx-L__yV^kZ`~7#+k*nZ$N}4|jZEjJ$huT2$6hR%i49%Z}HcJ%9STHr4&3)>`WoZ7f zK=&!ok~WZ-L38TFWoZ7fK+6=!`1P0TMWRCUj|KXVb=?y=7>K zsE%Akr_(vExs#YAmm&jgNXT<0@#Q2SgmE8UyHWA6LK|ZR`JycE3#wXxXJwjq!Zjll zN*`)tN~8-Zf6k$s@qGbrUIT`q<*aGlMkEb=)grOczpze83jZ(%>1NW9%L-R~i zjU#kloQ}R^9E-G)`9iyfK(2Q*#}v&)GLJ|M#>!eh<@5ay#CdGUD`Hd}+JKqT(oSh| zxkV*-b&i2X2I4eoos5)|yg+AHgZ?$?G@XMVl5Ho%iJg7P60%p_I zVH;eX$n8LLEDU}g1Cf5#!RkZ^b7NC}1jCa@KIC>SzoV!MSpf6=FBs((z7aqGJHT;@ zh8cE}x7Dp8Hr%fe$1&WM4zutL9R0Sy!^6YF!^6YF!=u`G4%CE{n|YtboS5Sndn(%V!;|8KbF_ zN1k)unVtOOj%v4u*UFGv&8<5%Ouqe8^_p?{SHJTr?#?dH4?m^DE(|Z~(eD~@*&pgxoNn;L2 zDIdep1(lX|{3-V)uy0blV##nufz{aKAWx7%vj{bqt#8vVY*>FJB}brGz54!6n6+-k zJ%?<+*f%{Z{IgZ?tA0o3wEVdDIQs>6@yVS5 z(r@oCFt?bu?)vNSwp}yC4aXe)EsVY-@|s59bx^jM1CVQ^pdcHI;ACU!h<5$#;aFZP|RIk?H5gAI$rY$XJxk z*u0tT+L2ok%GqzrH+$v?bT{QCp0>Xe>7oDOe?sByU25l2c_hs>*UZg+@ib*6+rgjZ zm48GTTy3$&aS}k)X&U=S4*W#_e}k{WS7(tZ=TJoN#5am>TiWc zc75ym#n*V94tvSfSKeB6fxBu`p1}Xfdh8O?2bR3vbQYA;w(>Sv-g*E4 literal 0 HcmV?d00001 diff --git a/androidVariant/src/main/res/drawable-xxhdpi/ic_delete_comics.png b/androidVariant/src/main/res/drawable-xxhdpi/ic_delete_comics.png new file mode 100644 index 0000000000000000000000000000000000000000..f78ce91a4b14220c2329ea492d81e6586d938055 GIT binary patch literal 1002 zcmVv2~2)<1KDYYnN%>v2}x+^~Yzw+k+H<(zJk5zzc?Yx!%Y6FpUFIYUzGrD| zG<}@&sxYamDosD;e5zang8!@H)dIp^^FXbw10+BBw3XSulYpkCrjC$T3rO{v0HM|o zYT7+OGLF~+!Z@;bKtL;Q;yDQjxkt8u0Q1;@fR>#HB)?@vKpH?i=;{C=Hx?Wqc<Xq;w5H2;W0oCjEeZc|3z4)U?vN)**pn)^faF`HrkB{0O7<4=YF}~_*s53dR`#TF z29WMBU_hw5$R1S;i1VtP00iGR&Z}ZT1;fj_Dj@7VCpoVw*MOuEd60^8tP~KuujI0W z^DL<=+k(F*ILFE@pu8voGAIHvC;~EQqXF^T(BIX6VUx#@ZKN;t9rraf0nh>gaxoUT zuc4{YXso!$<6=xqOpI|~Llx#KA9=>nLBUpotcKtgOi-l&YbVN-~Hy!-R72B?Kajm23oDwc&F28hhZ2f+wJyLqtSRk zjcx@D20?HJiTT%+NZ2NI(vz5;o*qSV{?P=u5O#Cwuct6FGIEbr+LuW1bLzKefEI8{ zE9^_QKDg>r-<8Mg?ChXcmPFt3GydHJ?pEU7*Qz&38dLw3$Jp4|X00d^a9VW==ys?b zMz`-&S9##6ziFxHTdK1`?MT&B9!Ss;tt2|!r&VWz+VyIJ5<`2Q}YJ>p85t$^sQ^Xa#)|gkQJl@m^A0L{2Zjp}7CtC}Vk`L~!2o7_{E|Y%Q?}M@L8R)^faopf0Q9 zBIGNlWw-)~olt*82!B_!3@@OmzNSv|lKn-i)p}OT@CE#A0{>9|1^BL(;fj8XvncER z=$9Vk&sohLn(N>T>bxjW?i*QU^FCuV{bL^<_*vDEsLP$|KNE2Ly*eUsYap&OeZxN0 z8Sa3jKdvtmtQg9k({d5}e528LO7(ZgZ@7WiR8%Hx%NN#NbqS!UomWF#yF+zl06}&T)EV1o#B1hWsCFeG(TYNs zNCM@j-bn)3SPGvwMhd5PJ$Pp1T-`M;z_NYJ0Et2#QCZQ!=c z7i6y5ZM{4@Z`D>6q2>G}>+F0o1rEMZ2jR-@UFO1Yy~7+xO*DYecb6fwtiri2Qyl^A z78LrE=y|r0pNrQrsRMW|-qAP_%SF>~Cd$V3W2z@rmx;jg37Q-p9$q~@i^2}FWvM1k zjz*k!#C?|mZo1nZqLj_!e~VG4k2qddjnR4UF5G}RDnbNt++}ks3-x+^OXzX%!G&6e zGuTYkSy6I=rscQ-wx6oMqAc9H5!6X_T9kM_wre?AKpY>bpQ2=cq~+v7VEJ1wDTwd- zd~AQGAHV;gx;T9%gSHO_adHPB(sHOqya#L}Rh+p0MZAo{K*9II=_Pi`ESyQ<@7%Ld zZG`dhaUS|kEF%n^cLr>eSHs_HmXRs~`zsSOV`ajw@r|gh;nCz=K!As|a)HOE7rqK= zkEHEaU6qmeY)q;s4Qfa70K4ic4XvO_kkjWMwev}CWq?;AacT{(*{iCvLG5}nL8#QM zR+6(^)hUp~Nww?bIT5zrk@6Wj^Ymtj3wxpuj@6atJK{*-0AFYS<@PKTqEZ m;KFtzPl_ph7PPlMark selected comics as read. Mark selected comics as unread. Delete selected comics from device. + + %d Comic Book + %d Comic Books + diff --git a/iosVariant/Translations.xcstrings b/iosVariant/Translations.xcstrings new file mode 100644 index 00000000..dfc94812 --- /dev/null +++ b/iosVariant/Translations.xcstrings @@ -0,0 +1,28 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "%lld Comic Books" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld Comic Book" + } + }, + "other" : { + "stringUnit" : { + "state" : "new", + "value" : "%lld Comic Books" + } + } + } + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/iosVariant/Variant.xcodeproj/project.pbxproj b/iosVariant/Variant.xcodeproj/project.pbxproj index 3e52e86d..4c4ffa12 100644 --- a/iosVariant/Variant.xcodeproj/project.pbxproj +++ b/iosVariant/Variant.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; + 6A1EDFD12E294F7D00429CEF /* Translations.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 6A1EDFD02E294F7D00429CEF /* Translations.xcstrings */; }; 6A4D18062E14191D00FF9EA2 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A4D18052E14191D00FF9EA2 /* Constants.swift */; }; 6AA598492DE72E910078CC9F /* ServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AA598482DE72E910078CC9F /* ServerView.swift */; }; 6AA5984C2DE72EF40078CC9F /* Fixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AA5984B2DE72EF40078CC9F /* Fixtures.swift */; }; @@ -50,6 +51,7 @@ 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; + 6A1EDFD02E294F7D00429CEF /* Translations.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Translations.xcstrings; sourceTree = ""; }; 6A4D18052E14191D00FF9EA2 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; 6AA598482DE72E910078CC9F /* ServerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerView.swift; sourceTree = ""; }; 6AA5984B2DE72EF40078CC9F /* Fixtures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fixtures.swift; sourceTree = ""; }; @@ -114,6 +116,7 @@ 7555FF72242A565900829871 = { isa = PBXGroup; children = ( + 6A1EDFD02E294F7D00429CEF /* Translations.xcstrings */, 7555FF7D242A565900829871 /* iosVariant */, 7555FF7C242A565900829871 /* Products */, 7555FFB0242A642200829871 /* Frameworks */, @@ -256,9 +259,6 @@ knownRegions = ( en, Base, - es, - fr, - "pt-BR", ); mainGroup = 7555FF72242A565900829871; packageReferences = ( @@ -279,6 +279,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 6A1EDFD12E294F7D00429CEF /* Translations.xcstrings in Resources */, 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, ); @@ -394,6 +395,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; @@ -448,6 +450,7 @@ MTL_FAST_MATH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; VALIDATE_PRODUCT = YES; }; diff --git a/iosVariant/iosVariant/Views/Comics/ComicBookListView.swift b/iosVariant/iosVariant/Views/Comics/ComicBookListView.swift index ff5c875e..380c6464 100644 --- a/iosVariant/iosVariant/Views/Comics/ComicBookListView.swift +++ b/iosVariant/iosVariant/Views/Comics/ComicBookListView.swift @@ -30,6 +30,8 @@ struct ComicBookListView: View { var onClick: (ComicBook) -> Void + var comicBookCount: Int { return comicBookList.count } + var body: some View { NavigationStack { ScrollView { @@ -48,8 +50,8 @@ struct ComicBookListView: View { } .navigationTitle( String( - localized: "comic-book-list.title", - defaultValue: "Comic List" + localized: "\(comicBookCount) Comic Books", + table: "Translations" ) ) }