diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/HashtagIcon.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/HashtagIcon.kt index 29877f938..11a5dc813 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/HashtagIcon.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/HashtagIcon.kt @@ -34,6 +34,7 @@ import com.vitorpamplona.amethyst.commons.hashtags.Cashu import com.vitorpamplona.amethyst.commons.hashtags.Coffee import com.vitorpamplona.amethyst.commons.hashtags.CustomHashTagIcons import com.vitorpamplona.amethyst.commons.hashtags.Footstr +import com.vitorpamplona.amethyst.commons.hashtags.Gamestr import com.vitorpamplona.amethyst.commons.hashtags.Grownostr import com.vitorpamplona.amethyst.commons.hashtags.Lightning import com.vitorpamplona.amethyst.commons.hashtags.Mate @@ -56,7 +57,7 @@ import com.vitorpamplona.quartz.events.EmptyTagList fun RenderHashTagIconsPreview() { ThemeComparisonColumn { RenderRegular( - "Testing rendering of hashtags: #Bitcoin, #nostr, #lightning, #zap, #amethyst, #cashu, #plebs, #coffee, #skullofsatoshi, #grownostr, #footstr, #tunestr, #weed, #mate", + "Testing rendering of hashtags: #Bitcoin, #nostr, #lightning, #zap, #amethyst, #cashu, #plebs, #coffee, #skullofsatoshi, #grownostr, #footstr, #tunestr, #weed, #mate, #gamestr, #gamechain", EmptyTagList, ) { word, state -> when (word) { @@ -83,6 +84,7 @@ fun checkForHashtagWithIcon(tag: String): HashtagIcon? = "tunestr", "music", "nowplaying" -> tunestr "mate", "matechain", "matestr" -> matestr "weed", "weedstr", "420", "cannabis", "marijuana" -> weed + "gamestr", "gaming", "gamechain" -> gamestr else -> null } @@ -100,6 +102,7 @@ val footstr = HashtagIcon(CustomHashTagIcons.Footstr, "Footstr", Modifier.paddin val tunestr = HashtagIcon(CustomHashTagIcons.Tunestr, "Tunestr", Modifier.padding(start = 1.dp, bottom = 1.dp, top = 1.dp)) val weed = HashtagIcon(CustomHashTagIcons.Weed, "Weed", Modifier.padding(start = 1.dp, bottom = 0.dp, top = 0.dp)) val matestr = HashtagIcon(CustomHashTagIcons.Mate, "Mate", Modifier.padding(start = 1.dp, bottom = 0.dp, top = 0.dp)) +val gamestr = HashtagIcon(CustomHashTagIcons.Gamestr, "GameStr", Modifier.padding(start = 1.dp, bottom = 0.dp, top = 0.dp)) @Immutable class HashtagIcon( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt index 53b63b365..bbdc0c696 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt @@ -25,12 +25,14 @@ import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size -import androidx.compose.foundation.text.InlineTextContent -import androidx.compose.foundation.text.appendInlineContent +import androidx.compose.foundation.layout.width import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.IconButton @@ -54,12 +56,11 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalView import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.Placeholder -import androidx.compose.ui.text.PlaceholderVerticalAlign import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.dp import androidx.core.net.toUri import coil3.compose.AsyncImage import coil3.compose.AsyncImagePainter @@ -86,7 +87,6 @@ import com.vitorpamplona.amethyst.ui.note.HashCheckFailedIcon import com.vitorpamplona.amethyst.ui.note.HashCheckIcon import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes -import com.vitorpamplona.amethyst.ui.theme.Font17SP import com.vitorpamplona.amethyst.ui.theme.Size20dp import com.vitorpamplona.amethyst.ui.theme.Size24dp import com.vitorpamplona.amethyst.ui.theme.Size30dp @@ -444,7 +444,6 @@ fun ImageUrlWithDownloadButton( withStyle(clickableTextStyle) { pushStringAnnotation("routeToImage", "") - appendInlineContent("inlineContent", "[icon]") pop() } @@ -452,8 +451,6 @@ fun ImageUrlWithDownloadButton( } } - val inlineContent = mapOf("inlineContent" to InlineDownloadIcon(showImage)) - val pressIndicator = remember { Modifier @@ -461,30 +458,31 @@ fun ImageUrlWithDownloadButton( .clickable { runCatching { uri.openUri(url) } } } - Text( - text = annotatedTermsString, - modifier = pressIndicator, - inlineContent = inlineContent, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - ) + Row( + modifier = + Modifier + .width(IntrinsicSize.Max), + horizontalArrangement = Arrangement.spacedBy(2.dp), + ) { + Text( + text = annotatedTermsString, + modifier = + pressIndicator + .weight(1f, fill = false), + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + InlineDownloadIcon(showImage) + } } @Composable private fun InlineDownloadIcon(showImage: MutableState) = - InlineTextContent( - Placeholder( - width = Font17SP, - height = Font17SP, - placeholderVerticalAlign = PlaceholderVerticalAlign.Center, - ), + IconButton( + modifier = Modifier.size(Size20dp), + onClick = { showImage.value = true }, ) { - IconButton( - modifier = Modifier.size(Size20dp), - onClick = { showImage.value = true }, - ) { - DownloadForOfflineIcon(Size24dp) - } + DownloadForOfflineIcon(Size24dp) } @Composable @@ -537,7 +535,6 @@ fun DisplayUrlWithLoadingSymbol(content: BaseMediaContent) { withStyle(clickableTextStyle) { pushStringAnnotation("routeToImage", "") - appendInlineContent("inlineContent", "[icon]") pop() } @@ -545,8 +542,6 @@ fun DisplayUrlWithLoadingSymbol(content: BaseMediaContent) { } } - val inlineContent = mapOf("inlineContent" to InlineLoadingIcon()) - val pressIndicator = remember { if (content is MediaUrlContent) { @@ -556,26 +551,26 @@ fun DisplayUrlWithLoadingSymbol(content: BaseMediaContent) { } } - Text( - text = annotatedTermsString, - modifier = pressIndicator, - inlineContent = inlineContent, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - ) + Row( + modifier = + Modifier + .width(IntrinsicSize.Max), + horizontalArrangement = Arrangement.spacedBy(2.dp), + ) { + Text( + text = annotatedTermsString, + modifier = + pressIndicator + .weight(1f, fill = false), + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + InlineLoadingIcon() + } } @Composable -private fun InlineLoadingIcon() = - InlineTextContent( - Placeholder( - width = Font17SP, - height = Font17SP, - placeholderVerticalAlign = PlaceholderVerticalAlign.Center, - ), - ) { - LoadingAnimation() - } +private fun InlineLoadingIcon() = LoadingAnimation() @Composable fun DisplayBlurHash( diff --git a/amethyst/src/main/res/values-fa/strings.xml b/amethyst/src/main/res/values-fa/strings.xml index ad9c93894..074235d56 100644 --- a/amethyst/src/main/res/values-fa/strings.xml +++ b/amethyst/src/main/res/values-fa/strings.xml @@ -838,6 +838,51 @@ بارگيری روشن کردن متن متن خاموش + پیام مهروموم شده خاموش است. برای روشن کردن کلیک کنید. + پیام مهروموم شده روشن است. برای خاموش کردن کلیک کنید. ارسال + نام کاربری را به شکل صوتی بخوان. + Pushpin + کد QR را اسکن کنید + رفتن به البی، ارائه دهنده کیف پول شخص ثالث. + پاسخ به پیش نویس یادداشت ممکن نیست. + نقل قول از پیش نویس یادداشت ممکن نیست. + واکنش به پیش نویس یادداشت ممکن نیست. + زپ زدن به پیش نویس یادداشت ممکن نیست. پیش نویس یادداشت + از پیام + جستجوی اپلیکیشن + درخواست شغل ارسال شد، در انتظار پاسخ + درخواست شغل از DVM + درخواست پرداخت ارسال شد، در انتظار تایید کیف پول + در انتظار تایید پرداخت یا ارسال نتیجه توسط DVM + درخواست بد - سرور نمی تواند یا نمی خواهد این درخواست را پردازش کند. + غیرمجاز - کاربر دارای مشخصات معتبر احراز هویت شده نیست + پرداخت الزامی - سرور برای تکمیل درخواست به پرداخت دارد. + ممنوع - کاربر مجاز به انجام این درخواست نیست. + یافت نشد - سرور نتوانست آدرس درخواست شده را بیابد. + این روش مجاز نیست - سرور روش درخواست را پیشتیبانی می کند ولی مرجع هدف را نه. + غیرقابل قبول - سرور نتوانست محتوایی مناسب درخواست بیابد. + احراز هویت الزامی پروکسی - کاربر اعتبارات احراز هویت معتبر ندارد + زمان درخواست سپری شد - زمان درخواست در انتظار شخصی دیگر تمام شد + تعارض - سرور نتوانست درخواست را انجام دهد چون در مرجع تعارض وجود دارد + نیست - محتوای درخواست شده برای همیشه از سرور پاک شده و بازیابی نخواهد شد + الزام طول - سرور درخواست را رد کرد چون نیاز به اندازه تعریف شده دارد + پیش شرط انجام نشد - پیش شرطی در سربرگ وجود دارد که سرور نمی تواند براورده کند + حجم زیادی - درخواست از محدودیت های تعریف شده سرور بزرگتر است و سرور آن را پردازش نمی کند + آدرس زیادی بلند - آدرس درخواست شده توسط کاربر زیادی برای پردازش سرور بلند است. + نوع رسانه پشتیبانی نشده - درخواست از نوعی رسانه استفاده می کند که توسط سرور پشتیبانی نمی شود + بازه براورده نشد - سرور نتوانست مقدار مورد نظر در سربرگ بازه را براورده کند. + انتظارات براورده نشد - سرور نتوانست انتظارات تعیین شده در سربرگ توقع درخواست را براورده کند + ارتقاء الزامی - سرور درخواست را با پروتکل فعلی پردازش نمی کند تا کلاینت پروتکل را ارتقاء دهد. + سرورهای NIP-96 + سرورهای Blossom + حذف همه + استک: + فایل تورنت + بارگيری + فایل باز نشد + هیچ اپ تورنتی برای باز کردن و بارگیری فایل نصب نیست. + لیستی را برای فیلتر خبرنامه انتخاب کنید + با قفل کردن دستگاه از حساب کاربری خارج شو diff --git a/amethyst/src/main/res/values-hi-rIN/strings.xml b/amethyst/src/main/res/values-hi-rIN/strings.xml index f9ae0e7a5..165c2670e 100644 --- a/amethyst/src/main/res/values-hi-rIN/strings.xml +++ b/amethyst/src/main/res/values-hi-rIN/strings.xml @@ -204,6 +204,8 @@ इससे अनुवादित इस तक प्रथम %1$s में दिखाएँ + सार्वजनिक चर्चा %1$s के विषय पर + सार्वजनिक समूह %1$s विषय पर सर्वदा अनुवाद करें %1$s में कभी भी अनुवाद ना करें %1$s से नोस्ट्र पता @@ -832,6 +834,7 @@ समावृत संदेश सक्रिय। समावृत संदेश निष्क्रिय करने के लिए टाँकें भेजें उपयोगकर्ता नाम को ध्वनि के रूप में चलाएँ + घुण्डी क्यूआर॰ क्रमचित्र परखें तृतीय पक्ष धनकोष प्रदाता आल्बी तक जाएँ एक टीका पाण्डुलिपि को उत्तर नहीं दे सकते diff --git a/amethyst/src/main/res/values-hu/strings.xml b/amethyst/src/main/res/values-hu/strings.xml index b0c169eff..781988f4f 100644 --- a/amethyst/src/main/res/values-hu/strings.xml +++ b/amethyst/src/main/res/values-hu/strings.xml @@ -229,7 +229,7 @@ \n- Az Amethyst fejlesztői az Ön titkos kulcsát **soha** nem fogják Öntől elkérni. \n- A fiók-helyreállításának érdekében, a titkos kulcsáról **mindig** készítsen biztonsági másolatot. Javasoljuk egy jelszókezelő használatát. - A nagyobb biztonság érdekében a kulcsot jelszóval titkosíthatja. Ez a kulcs **ncryptsec1**-vel kezdődik, és a jelszava nélkül nem használható. + A nagyobb biztonság érdekében titkosítsa egy jelszóval. A jelszóval védett kulcs **ncryptsec1**-vel kezdődik, és a jelszava nélkül nem használható. \n\nHa elveszíti a jelszavát, nem tudja visszaállítani a kulcsát. Nem sikerült a privát kulcsot titkosítani diff --git a/amethyst/src/main/res/values-sl-rSI/strings.xml b/amethyst/src/main/res/values-sl-rSI/strings.xml index 9de68a9df..1f2320a68 100644 --- a/amethyst/src/main/res/values-sl-rSI/strings.xml +++ b/amethyst/src/main/res/values-sl-rSI/strings.xml @@ -17,7 +17,7 @@ Eksplicitna vsebina Nezaželjena vsebina Iz tega releja izvira številna nezaželjena vsebina - Imitacija + Oponašanje Nedovoljeno obnašanje Drugo Neznano @@ -34,17 +34,17 @@ Blokiraj / Prijavi Prijavi nazaželjeno vsebino / prevaro - Prijavi imitacijo + Prijavi oponašalca Prijavi eksplicitno vsebino Prijavi nedovoljeno obnašanje - Prijavi zlonamerno programsko opremo + Zlonamerna programska vsebina Prijavi moderatorja - Zlonamerna programska oprema + Zlonamerna programska vsebina Administrator Uporabljaš javni ključ in javni ključi omogočajo le branje. Prijavi se s privatnim ključem, da omogočiš tudi pisanje Uporabljaš javni ključ in javni ključi omogočajo le branje. -Prijavi se s privatnim ključem za potisk sporočila +Prijavi se s privatnim ključem za posredovanje sporočila Uporabljaš javni ključ in javni ključi omogočajo le branje. Prijavi se s privatnim ključem za všečkanje sporočila Nimaš nastavljene Zap vsote. Za spremembo uporabi daljši pritisk @@ -60,13 +60,13 @@ Prijavi se s privatnim ključem, za cenzuro besed ali stavkov Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Zapi Števec vpogledov - Potisk - potisnjeno - urejeno + Posreduj + posredovano + posodobljeno uredi #%1$s original - Citat - Razcep + Citiraj + Razcepi Prošnja za urejanje Nova vrednost v Sat Dodaj @@ -76,8 +76,8 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Profilna pasica Plačilo uspešno Napaka pri razčlembi sporočila o napaki - " Sledenje" - " Sledilci" + " Sledim" + " Sledilcev" Profil Varnostni filtri Odjavi se @@ -143,12 +143,12 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Znano Nova prošnja Blokirani uporabniki - Nova nit + Nove objave Pogovori Zapiski - Odgovori + Pogovori Galerija - "Sledilci" + "Sledim" "Reportaže" Več možnosti " Releji" @@ -160,7 +160,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Kopiraj javni ključ (NPub) v odložišče Pošlji direktno sporočilo Uredi uporabnikove metapodatke - Slediti + Sledi Sledi nazaj Odblokiraj Kopiraj uporabnikov ID @@ -212,9 +212,11 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov prevedeno iz v Prikaži najprej v %1$s + Javni pogovor o %1$s + Javna skupnost o %1$s Vedno prevedi v %1$s Nikoli ne prevedi iz %1$s - Nostr naslov + Nostr naslov t. i. Nip-05 nikoli zdaj h @@ -381,7 +383,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Da Ne Spisek komu sledimo - Vsi katerim sledimo + Vse, čemur sledimo V moji okolici Globalno Spisek utišanih @@ -507,12 +509,12 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Prenos v živo je odklopljen Prenos v živo je končan Odjava bo izbrisala vse vaše lokalne informacije. Poskrbite, da imate varnostno kopijo svojih zasebnih ključev, da se izognete izgubi računa. Ali želite nadaljevati? - Oznake katerim sledimo + Spremljana vsebina Releji Odkrivanje zapiskov Tržnica V živo - Skupnost + Skupnosti Pogovori Odobrene objave Ta skupina nima opisa ali pravil. Obrnite se na lastnika, da jih doda @@ -523,14 +525,14 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Nastavitve Vedno Samo Wifi - Wi-Fi brez omejitev + Samo z WiFi Nikoli - Končaj - Poenostavljeno - Zmogljivost - Sistem - Svetlo - Temno + Celovit + Poenostavljen + Optimiziran + Sistemska + Svetla + Temna Nastavitve aplikacije Wallet Connect Jezik @@ -642,10 +644,10 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Ni bilo mogoče nastaviti \"Wallet Connect\" Napaka pri razčlenjevanju NIP-47 connection string. Preverite pri vašem ponudniku denarnice, ali je to pravilno: %1$s. Napaka: %2$s Napaka pri razčlenjevanju NIP-47 connection string. Preverite pri vašem ponudniku denarnice, ali je to pravilno: %1$s. - Cashu ni bilo mogoče unovčiti + Cashu žetona ni bilo mogoče unovčiti Kovnica je posredovala naslednje sporočilo o napaki: %1$s Cashu žeton je že zapravljen. - Cashu prejet + Prejeli ste Cashu žeton V vašo denarnico je bilo poslanih %1$s satoshi-jev. (Provizija: %2$s sat) Na sistemu ni najdene združljive Cashu denarnice Ni mogoče pridobiti fakture s strežnikov prejemnika @@ -755,7 +757,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Odpri vse odzive na to objavo Zapri vse odzive na to objavo Odgovori - Potisni ali citiraj + Posreduj ali citiraj Všečkaj Zap Spremeni hitre odzivne ikone @@ -841,6 +843,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Zapečateno sporočilo je vklopljeno. Kliknite, da izklopite zapečateno sporočilo. Pošlji Predvajaj uporabniško ime + Pushpin Skeniraj QR kodo Pojdite na stran tretjega ponudnika denarnice Alby. Ni mogoče odgovoriti na osnutek zapiska. @@ -848,9 +851,9 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov Ni mogoče reagirati na osnutek zapiska. Osnutke zapisa ni mogoče Zap-niti Osnutek zapiska - Iz zapisa + Iz zapiska Iščem aplikacijo - Delo zahtevano, čakam na odgovor + Zahteva poslana, čakam na odgovor Zahtevam delo od DVM Zahteva za plačilo poslana, čakam na potrditev iz vaše denarnice. Čakam, da DVM potrdi plačilo ali pošlje rezultate. diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/CustomHashTagIcons.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/CustomHashTagIcons.kt index 52346e19d..022f4914c 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/CustomHashTagIcons.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/CustomHashTagIcons.kt @@ -23,11 +23,11 @@ package com.vitorpamplona.amethyst.commons.hashtags import androidx.compose.ui.graphics.vector.ImageVector import kotlin.collections.List as ____KtList -public object CustomHashTagIcons +object CustomHashTagIcons private var customHashTagIconsAllIconsCache: ____KtList? = null -public val CustomHashTagIcons.AllIcons: ____KtList +val CustomHashTagIcons.AllIcons: ____KtList get() { if (customHashTagIconsAllIconsCache != null) { return customHashTagIconsAllIconsCache!! @@ -47,6 +47,7 @@ public val CustomHashTagIcons.AllIcons: ____KtList Zap, Tunestr, Nostr, + Gamestr, ) return customHashTagIconsAllIconsCache!! } diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/Gamestr.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/Gamestr.kt new file mode 100644 index 000000000..7069f3244 --- /dev/null +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/Gamestr.kt @@ -0,0 +1,278 @@ +/** + * Copyright (c) 2024 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.commons.hashtags + +import androidx.compose.foundation.Image +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.ImageVector.Builder +import androidx.compose.ui.graphics.vector.path +import androidx.compose.ui.graphics.vector.rememberVectorPainter +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun CustomHashTagIconsGamestrPreview() { + Image( + painter = + rememberVectorPainter( + CustomHashTagIcons.Gamestr, + ), + contentDescription = "", + ) +} + +val CustomHashTagIcons.Gamestr: ImageVector + get() { + if (customHashTagIconsGamestr != null) { + return customHashTagIconsGamestr!! + } + customHashTagIconsGamestr = + Builder( + name = "Gamestr", + defaultWidth = 512.0.dp, + defaultHeight = 512.0.dp, + viewportWidth = 512.0f, + viewportHeight = 512.0f, + ).apply { + path( + fill = SolidColor(Color(0xFFED5564)), + ) { + moveTo(511.53f, 309.68f) + curveToRelative(-2.48f, -42.44f, -15.15f, -98.23f, -37.64f, -165.84f) + curveToRelative(-0.48f, -1.42f, -1.25f, -2.73f, -2.25f, -3.84f) + lineToRelative(-37.11f, -40.55f) + curveToRelative(-2.02f, -2.21f, -4.88f, -3.47f, -7.86f, -3.47f) + horizontalLineToRelative(-42.67f) + curveToRelative(-1.66f, 0.0f, -3.28f, 0.39f, -4.77f, 1.13f) + lineToRelative(-19.08f, 9.52f) + horizontalLineTo(151.84f) + lineToRelative(-19.09f, -9.52f) + curveToRelative(-1.47f, -0.73f, -3.11f, -1.13f, -4.76f, -1.13f) + horizontalLineTo(85.33f) + curveToRelative(-3.0f, 0.0f, -5.86f, 1.26f, -7.88f, 3.47f) + lineToRelative(-37.09f, 40.55f) + curveToRelative(-1.02f, 1.11f, -1.78f, 2.41f, -2.25f, 3.84f) + curveTo(15.61f, 211.45f, 2.94f, 267.25f, 0.46f, 309.68f) + curveToRelative(-2.16f, 36.75f, 3.31f, 64.5f, 16.26f, 82.44f) + curveToRelative(11.27f, 15.62f, 28.09f, 23.87f, 48.69f, 23.87f) + curveToRelative(14.97f, 0.0f, 28.55f, -6.81f, 40.37f, -20.28f) + curveToRelative(8.58f, -9.78f, 16.26f, -23.16f, 22.83f, -39.8f) + curveToRelative(7.19f, -18.17f, 11.47f, -36.17f, 13.59f, -46.58f) + horizontalLineToRelative(227.58f) + curveToRelative(2.13f, 10.41f, 6.41f, 28.41f, 13.59f, 46.58f) + curveToRelative(6.56f, 16.64f, 14.25f, 30.02f, 22.83f, 39.8f) + curveToRelative(11.83f, 13.47f, 25.42f, 20.28f, 40.38f, 20.28f) + curveToRelative(20.59f, 0.0f, 37.44f, -8.25f, 48.7f, -23.87f) + curveTo(508.22f, 374.18f, 513.68f, 346.43f, 511.53f, 309.68f) + close() + } + path( + fill = SolidColor(Color(0xFFDA4453)), + ) { + moveTo(263.53f, 259.12f) + curveToRelative(4.17f, 4.16f, 4.17f, 10.92f, 0.0f, 15.09f) + curveToRelative(-4.16f, 4.16f, -10.92f, 4.16f, -15.08f, 0.0f) + curveToRelative(-4.17f, -4.17f, -4.17f, -10.93f, 0.0f, -15.09f) + curveTo(252.61f, 254.96f, 259.37f, 254.96f, 263.53f, 259.12f) + close() + } + path( + fill = SolidColor(Color(0xFFE6E9ED)), + ) { + moveTo(412.88f, 178.2f) + curveToRelative(-4.17f, 4.17f, -10.92f, 4.17f, -15.08f, 0.0f) + curveToRelative(-4.17f, -4.16f, -4.17f, -10.91f, 0.0f, -15.09f) + curveToRelative(4.16f, -4.16f, 10.9f, -4.16f, 15.08f, 0.0f) + curveTo(417.05f, 167.29f, 417.05f, 174.04f, 412.88f, 178.2f) + close() + } + path( + fill = SolidColor(Color(0xFFE6E9ED)), + ) { + moveTo(412.88f, 220.87f) + curveToRelative(-4.17f, 4.16f, -10.92f, 4.16f, -15.08f, 0.0f) + curveToRelative(-4.17f, -4.16f, -4.17f, -10.92f, 0.0f, -15.09f) + curveToRelative(4.16f, -4.16f, 10.9f, -4.16f, 15.08f, 0.0f) + curveTo(417.05f, 209.95f, 417.05f, 216.71f, 412.88f, 220.87f) + close() + } + path( + fill = SolidColor(Color(0xFFE6E9ED)), + ) { + moveTo(434.2f, 199.54f) + curveToRelative(-4.16f, 4.16f, -10.91f, 4.16f, -15.08f, 0.0f) + reflectiveCurveToRelative(-4.17f, -10.91f, 0.0f, -15.09f) + curveToRelative(4.17f, -4.16f, 10.92f, -4.16f, 15.08f, 0.0f) + curveTo(438.38f, 188.62f, 438.38f, 195.37f, 434.2f, 199.54f) + close() + } + path( + fill = SolidColor(Color(0xFFE6E9ED)), + ) { + moveTo(391.55f, 199.54f) + curveToRelative(-4.17f, 4.16f, -10.92f, 4.16f, -15.09f, 0.0f) + curveToRelative(-4.16f, -4.16f, -4.16f, -10.91f, 0.0f, -15.09f) + curveToRelative(4.17f, -4.16f, 10.92f, -4.16f, 15.09f, 0.0f) + curveTo(395.7f, 188.62f, 395.7f, 195.37f, 391.55f, 199.54f) + close() + } + path( + fill = SolidColor(Color(0xFF656D78)), + ) { + moveTo(224.0f, 277.34f) + curveToRelative(0.0f, 23.56f, -19.11f, 42.65f, -42.67f, 42.65f) + reflectiveCurveToRelative(-42.67f, -19.09f, -42.67f, -42.65f) + curveToRelative(0.0f, -23.58f, 19.11f, -42.68f, 42.67f, -42.68f) + reflectiveCurveTo(224.0f, 253.76f, 224.0f, 277.34f) + close() + } + path( + fill = SolidColor(Color(0xFF434A54)), + ) { + moveTo(181.33f, 224.0f) + curveToRelative(-29.41f, 0.0f, -53.34f, 23.92f, -53.34f, 53.34f) + curveToRelative(0.0f, 29.4f, 23.94f, 53.33f, 53.34f, 53.33f) + reflectiveCurveToRelative(53.33f, -23.92f, 53.33f, -53.33f) + curveTo(234.65f, 247.92f, 210.73f, 224.0f, 181.33f, 224.0f) + close() + moveTo(181.33f, 309.34f) + curveToRelative(-17.64f, 0.0f, -32.0f, -14.38f, -32.0f, -32.0f) + curveToRelative(0.0f, -17.66f, 14.36f, -32.01f, 32.0f, -32.01f) + reflectiveCurveToRelative(32.0f, 14.35f, 32.0f, 32.01f) + curveTo(213.33f, 294.96f, 198.97f, 309.34f, 181.33f, 309.34f) + close() + } + path( + fill = SolidColor(Color(0xFF656D78)), + ) { + moveTo(373.33f, 277.34f) + curveToRelative(0.0f, 23.56f, -19.09f, 42.65f, -42.67f, 42.65f) + curveToRelative(-23.56f, 0.0f, -42.65f, -19.09f, -42.65f, -42.65f) + curveToRelative(0.0f, -23.58f, 19.09f, -42.68f, 42.65f, -42.68f) + curveTo(354.24f, 234.66f, 373.33f, 253.76f, 373.33f, 277.34f) + close() + } + path( + fill = SolidColor(Color(0xFF434A54)), + ) { + moveTo(330.66f, 224.0f) + curveToRelative(-29.41f, 0.0f, -53.33f, 23.92f, -53.33f, 53.34f) + curveToRelative(0.0f, 29.4f, 23.92f, 53.33f, 53.33f, 53.33f) + curveToRelative(29.42f, 0.0f, 53.34f, -23.92f, 53.34f, -53.33f) + curveTo(384.0f, 247.92f, 360.08f, 224.0f, 330.66f, 224.0f) + close() + moveTo(330.66f, 309.34f) + curveToRelative(-17.64f, 0.0f, -32.0f, -14.38f, -32.0f, -32.0f) + curveToRelative(0.0f, -17.66f, 14.36f, -32.01f, 32.0f, -32.01f) + curveToRelative(17.66f, 0.0f, 32.01f, 14.35f, 32.01f, 32.01f) + curveTo(362.67f, 294.96f, 348.31f, 309.34f, 330.66f, 309.34f) + close() + } + path( + fill = SolidColor(Color(0xFFF5F7FA)), + ) { + moveTo(106.66f, 224.0f) + curveToRelative(-5.89f, 0.0f, -10.67f, -4.77f, -10.67f, -10.67f) + verticalLineToRelative(-42.66f) + curveToRelative(0.0f, -5.89f, 4.78f, -10.66f, 10.67f, -10.66f) + reflectiveCurveToRelative(10.67f, 4.77f, 10.67f, 10.66f) + verticalLineToRelative(42.66f) + curveTo(117.33f, 219.23f, 112.55f, 224.0f, 106.66f, 224.0f) + close() + } + path( + fill = SolidColor(Color(0xFFE6E9ED)), + ) { + moveTo(127.99f, 202.66f) + horizontalLineTo(85.33f) + curveToRelative(-5.89f, 0.0f, -10.67f, -4.77f, -10.67f, -10.66f) + reflectiveCurveToRelative(4.78f, -10.67f, 10.67f, -10.67f) + horizontalLineToRelative(42.65f) + curveToRelative(5.89f, 0.0f, 10.67f, 4.78f, 10.67f, 10.67f) + curveTo(138.66f, 197.89f, 133.88f, 202.66f, 127.99f, 202.66f) + close() + } + path( + fill = SolidColor(Color(0xFFFFCE54)), + ) { + moveTo(181.32f, 106.64f) + horizontalLineToRelative(149.33f) + verticalLineToRelative(42.69f) + horizontalLineToRelative(-149.33f) + close() + } + path( + fill = SolidColor(Color(0xFF434A54)), + ) { + moveTo(495.28f, 392.12f) + curveToRelative(8.92f, -12.36f, 14.28f, -29.38f, 16.06f, -50.78f) + curveToRelative(-0.03f, 0.0f, -59.73f, 43.54f, -117.26f, 36.28f) + curveToRelative(0.0f, 0.0f, 0.05f, 0.41f, 0.17f, 1.11f) + curveToRelative(3.75f, 6.5f, 7.75f, 12.17f, 11.95f, 16.98f) + curveToRelative(11.83f, 13.47f, 25.42f, 20.28f, 40.38f, 20.28f) + curveTo(467.17f, 415.99f, 484.01f, 407.74f, 495.28f, 392.12f) + close() + } + path( + fill = SolidColor(Color(0xFF434A54)), + ) { + moveTo(16.72f, 392.12f) + curveToRelative(-8.92f, -12.36f, -14.3f, -29.38f, -16.06f, -50.78f) + curveToRelative(0.0f, 0.0f, 59.72f, 43.54f, 117.26f, 36.28f) + curveToRelative(0.0f, 0.0f, -0.06f, 0.41f, -0.17f, 1.11f) + curveToRelative(-3.77f, 6.5f, -7.75f, 12.17f, -11.97f, 16.98f) + curveToRelative(-11.83f, 13.47f, -25.41f, 20.28f, -40.37f, 20.28f) + curveTo(44.82f, 415.99f, 27.99f, 407.74f, 16.72f, 392.12f) + close() + } + path( + fill = SolidColor(Color(0xFF434A54)), + ) { + moveTo(70.88f, 106.64f) + horizontalLineToRelative(80.97f) + lineToRelative(-19.09f, -9.52f) + curveToRelative(-1.47f, -0.73f, -3.11f, -1.13f, -4.76f, -1.13f) + horizontalLineTo(85.33f) + curveToRelative(-3.0f, 0.0f, -5.86f, 1.26f, -7.88f, 3.47f) + lineTo(70.88f, 106.64f) + close() + } + path( + fill = SolidColor(Color(0xFF434A54)), + ) { + moveTo(441.13f, 106.64f) + horizontalLineToRelative(-80.95f) + lineToRelative(19.08f, -9.52f) + curveToRelative(1.48f, -0.73f, 3.11f, -1.13f, 4.77f, -1.13f) + horizontalLineToRelative(42.67f) + curveToRelative(2.98f, 0.0f, 5.84f, 1.26f, 7.86f, 3.47f) + lineTo(441.13f, 106.64f) + close() + } + }.build() + return customHashTagIconsGamestr!! + } + +private var customHashTagIconsGamestr: ImageVector? = null diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/Skull.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/Skull.kt index 793658b40..515446ef9 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/Skull.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/hashtags/Skull.kt @@ -20,6 +20,8 @@ */ package com.vitorpamplona.amethyst.commons.hashtags +import androidx.compose.foundation.Image +import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.PathFillType.Companion.NonZero import androidx.compose.ui.graphics.SolidColor @@ -28,9 +30,23 @@ import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector.Builder import androidx.compose.ui.graphics.vector.path +import androidx.compose.ui.graphics.vector.rememberVectorPainter +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -public val CustomHashTagIcons.Skull: ImageVector +@Preview +@Composable +fun CustomHashTagIconsSkullPreview() { + Image( + painter = + rememberVectorPainter( + CustomHashTagIcons.Skull, + ), + contentDescription = "", + ) +} + +val CustomHashTagIcons.Skull: ImageVector get() { if (customHashTagIconsSkull != null) { return customHashTagIconsSkull!!