From 99a614ef092bfebd9001435954d36144629df203 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Sep 2024 07:41:37 +0800 Subject: [PATCH 01/15] Update dependency sh.calvin.reorderable:reorderable to v2.3.2 (#4753) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5bc44a5ab84..2ce2f651b8d 100644 --- a/build.gradle +++ b/build.gradle @@ -413,7 +413,7 @@ dependencies { implementation 'com.airbnb.android:lottie:6.5.1' // Compose drag and drop library - implementation 'sh.calvin.reorderable:reorderable:2.3.1' + implementation 'sh.calvin.reorderable:reorderable:2.3.2' // Smartspacer implementation('com.kieronquinn.smartspacer:sdk-client:1.0.11') { From 3662131f7ae52e262c89d6544a491ade02ef8ab3 Mon Sep 17 00:00:00 2001 From: Lawnchair Bot <115872683+lawnchair-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 03:52:50 +0330 Subject: [PATCH 02/15] New Crowdin translations by GitHub Action (#4754) Co-authored-by: Crowdin Bot --- lawnchair/res/values-bn-rBD/strings.xml | 4 +- lawnchair/res/values-es-rES/strings.xml | 18 +- lawnchair/res/values-hu-rHU/strings.xml | 324 ++++++++++++------------ lawnchair/res/values-pl-rPL/strings.xml | 110 ++++---- lawnchair/res/values-ru-rRU/strings.xml | 18 +- lawnchair/res/values-sr/strings.xml | 58 ++--- lawnchair/res/values-sv-rSE/strings.xml | 24 +- lawnchair/res/values-tr-rTR/strings.xml | 2 +- 8 files changed, 279 insertions(+), 279 deletions(-) diff --git a/lawnchair/res/values-bn-rBD/strings.xml b/lawnchair/res/values-bn-rBD/strings.xml index 5011e7dd74b..390a2050cd0 100644 --- a/lawnchair/res/values-bn-rBD/strings.xml +++ b/lawnchair/res/values-bn-rBD/strings.xml @@ -91,13 +91,13 @@ Drawer search Web suggestions, global search ফোল্ডার-সমুহ - Row and column count + সারি ও কলাম গণনা জেসচার Taps and swipes সাম্প্রতিক Clear All button, corner radius সম্পর্কে - App info + অ্যাপের তথ্য লনচেয়ার পুনরায় চালু করুন Experimental features diff --git a/lawnchair/res/values-es-rES/strings.xml b/lawnchair/res/values-es-rES/strings.xml index 27db38ea0d8..0c8d35938aa 100644 --- a/lawnchair/res/values-es-rES/strings.xml +++ b/lawnchair/res/values-es-rES/strings.xml @@ -318,13 +318,13 @@ --> Crear copia de seguridad - Que quieres respaldar + Qué respaldar Diseño y configuración Fondo de pantalla Copia de seguridad creada No se pudo crear la copia de seguridad Restaurar respaldo - Que quieres restaurar + Qué restaurar Copia de seguridad restaurada No se pudo restaurar la copia de seguridad Archivo de copia de seguridad inválido @@ -386,7 +386,7 @@ Desplazar fondo Efecto de profundidad del fondo de pantalla Acerca y aleja el fondo de pantalla al cambiar entre áreas del launcher - Mostrar sombra superior + Sombra superior Cuadrícula de Pantalla de Inicio Bloquear pantalla de inicio Desbloquear pantalla de inicio @@ -394,19 +394,19 @@ Evita cambios en la disposición de la pantalla de inicio Mostrar paginación de puntos Usar puntos en vez de líneas para mostrar el número de página - Usar nuevo estilo de ventana emergente - Usa el estilo del material rebotado y ligeramente consolidado estilo + Usar el nuevo estilo del menú emergente + Usar el estilo de Material You animado y consolidado para los menús emergentes Menú emergente Mostrar botón de bloqueo Mostrar botón de configuración del sistema Mostrar el botón de edición de la pantalla de inicio Barra de estado - Mostrar Barra de estado + Mostrar la barra de estado Barra de Estado Oscura Color del texto Claro Oscuro - Esquinas Redondeadas + Esquinas redondeadas Permitir superposición Forzar redimensionamiento del Widget Permite redimensionar los widgets que están limitados a un tamaño específico @@ -497,7 +497,7 @@ Buscar Mostrar Barra de Búsqueda Mostrar teclado automáticamente - Búsqueda Aproximada + Búsqueda aproximada Coincidencia aproximada de búsquedas de aplicaciones Sugerencias Mostrar las aplicaciones sugeridas en la parte superior del cajón de aplicaciones @@ -523,7 +523,7 @@ Multimedia, archivos y más Contactos y más - Via %1$s + Mediante %1$s Número máximo de aplicaciones Número máximo de personas diff --git a/lawnchair/res/values-hu-rHU/strings.xml b/lawnchair/res/values-hu-rHU/strings.xml index fa6ef9fe280..36a965fc16c 100644 --- a/lawnchair/res/values-hu-rHU/strings.xml +++ b/lawnchair/res/values-hu-rHU/strings.xml @@ -23,7 +23,7 @@ --> Előnézet Létrehoz - Mentés + Biztonsági mentés Visszaállítás Törlés Visszaállítás @@ -71,8 +71,8 @@ Mi jelenjen meg - Kézmozdulattal való telefonlezáráshoz a Lawnchar-nak jogosultságra van szüksége\n\nA Lawnchair nem figyel semmilyen felhasználói műveletet, az ehhez szükséges jogosultság minden akadálymentesítési szolgáltatáshoz szükséges. A Lawnchair figyelmen kívül hagy minden, a rendszer által küldött eseményt.\n\nA telefon zárolásához a Lawnchair a \'performGlobalAction\' hozzáférési szolgáltatást használja. - %1$d ; %2$d + A kézmozdulattal való telefonlezáráshoz a Lawnchairnek akadálymentesítési engedélyre van szüksége\n\nA Lawnchair nem figyel semmilyen felhasználói műveletet, az ehhez szükséges jogosultság minden akadálymentesítési szolgáltatáshoz szükséges. A Lawnchair figyelmen kívül hagyja az összes, rendszer által küldött eseményt.\n\nA telefon zárolásához a Lawnchair a „performGlobalAction” akadálymentesítési szolgáltatást használja. + %1$d × %2$d %s és %s - Betűtípus-módosítás - Néhány szöveg változatlan maradhat - Alternatív naptárformátum - Lehetővé teszi a nem Gergely-naptárrend szerintiek megjelenítését - A maximális rácsméret-határ növelése - Lehetővé teszi 10x10-ről 20x20-ra növelni a kezdőképernyő rácsozását - Az ikonok mindig újratöltődnek + Betűkészlet testreszabása + Egyes szövegek változatlanok maradnak + A bepillantás naptárának testreszabása + A dátum nem gregorián naptárban történő megjelenítésének engedélyezése + A maximális rácsméret-korlát növelése + A kezdőképernyő legnagyobb rácsméretének 10×10-ről 20×20-ra való növelése + Az ikonok újratöltése mindig A gyorsítótárazott ikonok használatának elkerülése - Lezárás/Feloldás - Megakadályozza, hogy a „Mindent töröljön” gomb megnyomásakor a kiválasztott alkalmazás bezáródjon + Lezárás/feloldás + Megakadályozza, hogy az „Összes törlése” gomb megnyomásakor a kiválasztott alkalmazás bezáródjon A parancsikonok és a további funkciók eléréséhez állítsa be a Lawnchair-t alapértelmezettként Értesítési pöttyök - Legyen látható az értesítés-számláló - Az értesítési pöttyök színe - A számláló színe - Ne basszon ki magával! Állítsa kontrasztosan eltérő színekre a pöttyöt és a számlálót! - Legyen biztos benne, hogy kontrasztosan eltérő színekre állította a pöttyöt és a számlálót! - Jogosultság szükséges az értesítésekhez - Az értesítési pöttyök megjelenéséhez kapcsolja be az alkalmazás (%1$s) értesítéseit + Értesítésszámláló megjelenítése + Értesítési pöttyök színe + Értesítésszámláló színe + Figyelmeztetés: Az értesítési pötty és a számláló színének túl kicsi a kontrasztja egymáshoz képest + Figyelmeztetés: Győződjön meg róla, hogy az értesítési pötty és a számláló színének mindig elég nagy legyen a kontrasztja egymáshoz képest + Értesítési engedély szükséges + Az értesítési pöttyök megjelenítéséhez kapcsolja be az alkalmazás (%1$s) értesítéseit - Átlátszó témájú ikonok + Áttetsző témázott ikonok Áttetsző háttér használata témázott ikonok esetén Automatikusan adaptív ikonok Minden nem adaptív ikonhoz Árnyék az ikonok mögött - A háttér világossága + Háttér világossága A fehér eléréséhez állítsa 100%-ra - Az egyéni ikonok visszaállítása + Egyéni ikonok visszaállítása Az összes egyéni ikon alaphelyzetbe lesz állítva. Folytatja? Ikonok Alapértelmezett visszaállítása Külső kijelölő megnyitása - Válasszon ikont innen + Ikon választása innen Nem sikerült több ikont betölteni Rendszer @@ -164,7 +164,7 @@ Hatszög One UI Lekerekített négyzet - Éles négyzet + Hegyes négyzet Négyzet Lekerekített négyzet Könycsepp @@ -190,18 +190,18 @@ Témázott ikonok Kikapcsolás Kezdőképernyő - Kezdőképernyő és Alkalmazástár + Kezdőképernyő és alkalmazástár Nem támogatott ikoncsomagok - Betűtípus-hozzáadás + Betűkészletek hozzáadása Támogatott formátumok: TTF és OTF - Nem található betűtípus - Betűtípus (kísérleti) + Nem található betűkészlet + Betűkészlet (kísérleti) Általános Címsorok Címsorok (közepes) - Betűtest - Betűtest (közepes) + Szövegtörzs + Szövegtörzs (közepes) Dőlt betű Vékony betű Extra vékony @@ -210,7 +210,7 @@ Közepes Félkövér Kövér - Extra vastag + Extra kövér Fekete Töltés Feltöltve - Alacsony akkuszint - "%1$d%% – Feltöltve %2$s múlva" + Alacsony töltöttség + "%1$d%% – %2$s múlva feltöltve" At a Glance Mi jelenjen meg @@ -271,26 +271,26 @@ Idő Időformátum Rendszerkövető - 12-órás - 24-órás + 12 órás formátum + 24 órás formátum Időjárás Akkuállapot - Most hallható + Most játszva A célok maximális száma - A \'Smartpacer\' beállításainak megnyitása - A \'Smartpacer\' beállításai + A Smartpacer beállításainak megnyitása + A Smartpacer beállításai - Érintse meg a beállításhoz - Kapcsolja be az Értesítési pöttyöket a %1$s használatához + Koppintás a beállításhoz + A(z) %1$s használatához kapcsolja be az értesítési pöttyöket. - Megjelenítés a Kezdőképernyőn - A \'Bepillantás\' manuálisan hozzáadható a Kezdőképernyőhöz a Lawnchair kisalkalmazás elhelyezésével + Megjelenítés a kezdőképernyőn + A bepillantás kézileg is hozzáadható a kezdőképernyőhöz a Lawnchair modul elhelyezésével - A \'Bepillantás\' szolgáltatója + A bepillantás szolgáltatója Google - Google Keresés + Google Kereső " — " %1$d. / %2$d oldal @@ -303,7 +303,7 @@ Hírek Támogatás Termék - Dizájn és Fejlesztés + Dizájn és fejlesztés Fejlesztés A QuickSwitch karbantartása DevOps @@ -316,48 +316,48 @@ Backup and restore --> - Egy mentés elkészítése + Biztonsági mentés létrehozása Miről kell biztonsági másolatot készíteni - Kinézet és Beállítások + Elrendezés és beállítások Háttérkép - A mentés elkészült - A mentés meghiúsult - Egy mentés visszaállítása - Mi állítható vissza - A visszaállítás elkészült - A visszaállítás meghiúsult - Hibás visszaállítási fájl + A biztonsági mentés elkészítve + A biztonsági mentés nem sikerült + Biztonsági mentés visszaállítása + Mi legyen helyreállítva + A biztonsági mentés helyreállítva + A biztonsági mentés helyreállítása nem sikerült + A biztonsági mentési fájl érvénytelen - Duplakopp - Felfelé húzás - Lefelé húzás + Dupla koppintás + Felfelé csúsztatás + Lefelé csúsztatás Kezdőképernyő gomb Vissza gomb - Ne történjen semmi + Nincs teendő Alvás - Nyíljon meg az értesítési panel - Nyíljon meg egy alkalmazás + Értesítési panel megnyitása + Alkalmazás megnyitása %1$s megnyitása - Nyíljon meg az Alkalmazástár - Nyíljon meg az alkalmazáskereső - Nyíljon meg a Keresés - Alkalmazásválasztó + Alkalmazástár megnyitása + Alkalmazáskereső megnyitása + Keresés megnyitása + Alkalmazás választása Adminisztrátori jogosultság szükséges - A \'Képernyőkikapcsolás Duplakoppal\' funkcióhoz állítsa be készülékvezérlőként a Lawnchair-t. Nyissa meg a Beállításokat és érintse meg az \"Aktiválja a készülék-adminisztrátori alkalmazást\" lehetőséget + A dupla koppintásos altatáshoz állítsa be a Lawnchairt eszközrendszergazdai alkalmazásként. Koppintson a beállítások megnyitására, majd koppintson „Az eszközrendszergazdai alkalmazás aktiválása” lehetőségre. A dupla koppintásos alvás ki lesz kapcsolva. - Kapcsolja be a kisegítő lehetőségeket - A \'Képernyőkikapcsolás Duplakoppal\' funkcióhoz kapcsolja be a Lawnchair kisegítő lehetőségeit. Nyissa meg a Beállítást, válassza a Lawnchair-t, kapcsolja be a \"Lawnchair használatát\" + Akadálymentesítési szolgáltatás bekapcsolása + A dupla koppintásos alvás bekapcsolásához kapcsolja be a Lawnchair akadálymentesítési szolgáltatást. Koppintson a „Beállítások megnyitása” gombra, majd válassza a „Lawnchair” lehetőséget, és kapcsolja be ezt: „Lawnchair használata”. Beállítások megnyitása - Lawnchair-hibajelentés + Lawnchair hibajelentés %1$s összeomlás Összeomlási napló feltöltése Feltöltési hiba @@ -372,65 +372,65 @@ --> - Kezdőképernyő elforgatása - Lehetővé teszi, hogy a Kezdőképernyő is orientálódjon, ha a készülék elforog - Homályos háttérkép (kísérleti) + Kezdőképernyő tájolása + A kezdőképernyő forgatásának engedélyezése az eszköz elforgatásakor + Háttérkép elhomályosítása (kísérleti) A homályosítás erőssége Küszöbtényező - Új alkalmazás hozzáadása a Kezdőképernyőhöz - Látható Feed - Nincs a Feed-hez alkalmazás + Új alkalmazás hozzáadása a kezdőképernyőhöz + Hírfolyam megjelenítése + Nincs hírfolyam-alkalmazás telepítve Csatorna - A Feed szolgáltatója - Görgethető háttérkép + A hírfolyam szolgáltatója + Háttérkép görgetése Mélységi hatású háttérkép - Nagyítson vagy kicsinyítsen a háttérképen, amikor a launcher területei között vált + A háttérkép nagyítása vagy kicsinyítése az indító területei közti váltások során Felső árnyék - A Kezdőképernyő rácsozata - A Kezdőképernyő lezárása - A Kezdőképernyő feloldása - Zárolt Kezdőképernyő - Megakadályozza a Kezdőképernyő elrendezésének változásait + Kezdőképernyő rácsa + Kezdőképernyő zárolása + Kezdőképernyő feloldása + A kezdőképernyő zárolva van + A kezdőképernyő elrendezése megváltozásának megakadályozása Pontozott oldalszámozás - Az oldalszám megjelenítéséhez használjon pontokat vonalak helyett - Az új felugró ablakstílus használata - Egy lendületes és konszolidált pop-up stílus (Material You) + Pontok használata vonalak helyett az oldalszám megjelenítéséhez + Az új felugróablak-stílus használata + A Material You lendületes és kissé konszolidált felugróablak-stílusának használata Felugró menü - Látható \'Lezárás\' gomb - Látható \'Rendszerbeállítások\' gomb - Látható \'Kezdőképernyő szerkesztő\' gomb + Lezárás gomb megjelenítése + Rendszerbeállítások gomb megjelenítése + Kezdőképernyő szerkesztése gomb megjelenítése Állapotsor - Látható \'Állapotsor\' - Sötét \'Állapotsor\' + Állapotsor megjelenítése + Sötét állapotsor Szövegszín Világos Sötét Lekerekített sarkok - Az átfedés engedélyezése + Átfedés engedélyezése Kényszerített átméretezés - Azok a kisalkalmazások is átméretezhetők, amelyeknek kötött a mérete + A kötött méretű modulok átméretezésének engedélyezése Méretkorlátok megszüntetése - Eltávolítja a kisalkalmazások minimális és maximális méretkorlátozását + Eltávolítja a modulok minimális és maximális méretkorlátozását - Látható dokk - Keresősor - Kisalkalmazás a kereséshez + Dokk megjelenítése + Keresősáv + Keresősáv modul Letiltva - Google Keresősor - A háttér átlátszósága - A körvonal szélessége - A körvonal színe + Google keresősáv + Háttér átlátszatlansága + Körvonal vastagsága + Körvonal színe Sarok sugár - A kiemelőszín alkalmazása + Kiemelőszín alkalmazása Keresési szolgáltató - A Dokk ikonjai + Dokkikonok Alsó kitöltés - Alkalmazás-kereső - %1$s és a Lawnchair bevételmegosztási megállapodást kötött.\n\nHa a keresést a %1$s végzi, azzal segít a Lawnchair-nek is. + Alkalmazáskereső + A(z) %1$s és a Lawnchair bevételmegosztási megállapodást kötött.\n\nHa a keresést a(z) %1$s végzi, azzal segít a Lawnchairnek is. Alkalmazás Weboldal - Ehhez kell egy alkalmazás + Alkalmazás szükséges Keresés Google Lens @@ -438,42 +438,42 @@ Rejtett alkalmazások Alkalmazások tömeges betöltése - Az ikonok tömeges betöltése és megjelenítése, nem egyenként - Fix pozíció - Emlékezzen az Alkalmazástár helyzetére, miután elhagyta azt - Látható görgetősáv - Az Alkalmazástár oszlopai + Az ikonok tömeges betöltése és megjelenítése (az egyenkénti helyett) + Pozíció megjegyzése + Az alkalmazástár helyzetének megjegyzése az elhagyása után + Görgetősáv megjelenítése + Alkalmazástár oszlopai Sormagasság Vízszintes kitöltés - Elrejtés az Alkalmazástárban + Elrejtés az alkalmazástárban Rejtett alkalmazások (%1$d) %1$d alkalmazás %1$d alkalmazás - Az ikon előnézeti hátterének átlátszósága - A mappaháttér átlátszósága - Az ikonháttér színe + Ikon előnézeti hátterének átlátszatlansága + Mappaháttér átlátszatlansága + Ikonháttér színe Mappaoszlopok maximuma Mappasorok maximuma - Ezeket a beállításokat a rendszer figyelmen kívül hagyja, mivel a Lawnchair nincs beállítva az Előzmények szolgáltatójaként - Nem kompatibilis rendszerintegráció - Eszköze úgy van konfigurálva, hogy a(z) %1$s által biztosított rendszermozdulatokat (az úgynevezett Quickstep-et) tartalmazza, de a %1$s verziója nem kompatibilis az Android-verzióval. A készülék további használatához, kérjük távolítsa el az utolsó %1$s-frissítést vagy állítsa be úgy készülékét hogy nem a(z) %1$s a rendszer mozdulatvezérlője. - Átlátszó háttér - A háttér átlátszósága - Gyorsműveletek + Ezek a beállítások figyelmen kívül lesznek hagyva, mivel a Lawnchair nincs beállítva az előzmények szolgáltatójaként + Nem kompatibilis rendszer-integráció + Az eszköze úgy van beállítva, hogy a(z) %1$s által biztosított rendszergesztusokat (más néven ez a Quickstep) tartalmazza, de a(z) %1$s ezen verziója nem kompatibilis az Android-verziójával. Az eszköze használatának folytatásához távolítsa el a(z) %1$s frissítéseit, vagy tiltsa le a(z) %1$s alkalmazást a rendszergesztusok szolgáltatójaként. + Áttetsző háttér + Háttér átlátszatlansága + Gyors műveletek Megosztás Lencse - Mindent töröljön + Összes törlése Kényszerített bezárás - A képernyősarok sugara - Egyéni képernyősarok sugár - Ha felfelé csúsztatva nyitja meg az Előzményeket, az aktuális alkalmazás követi az ujját, és kártyává zsugorodik. Ezzel a csúszkával állíthatja be a kártya sarkának sugarát, ha az majdnem teljes képernyőn van, hogy az illeszkedjen a képernyő sarkaihoz. + Képernyősarok sugara + Egyéni képernyősarok-sugár + Ha felfelé csúsztatva nyitja meg az előzményeket, az aktuális alkalmazás követi az ujját, és kártyává zsugorodik. Ezzel a csúszkával állíthatja be a kártya sarkának sugarát, ha az majdnem teljes képernyőn van, hogy az illeszkedjen a képernyő sarkaihoz. Tálca - Látható Tálca (kísérleti) + Tálca megjelenítése (kísérleti) Keresés Alkalmazások keresése - Nem található olyan alkalmazás, amely megfelel a következőnek: \"%1$s\" - Az internetről - Névjegyek a készülékről - Fájlok a készülékről - Beállítások a készülékről + Nem található olyan alkalmazás, amely megfelel a következőnek: „%1$s + A webről + Névjegyek az eszközről + Fájlok az eszközről + Beállítások az eszközről További alkalmazások keresése Keresés itt: %1$s - Nincs telepítve alkalmazás-áruház vagy böngésző - A keresési előzmények törlése - A keresőmező törlése + Nincs alkalmazás-áruház vagy böngésző telepítve + Keresési előzmények törlése + Keresőmező törlése Keresés - Látható keresősor + Keresősáv megjelenítése Billentyűzet automatikus mutatása - Megközelítő keresés + Közelítő keresés Hozzávetőleges egyezés az alkalmazáskeresésekhez Javaslatok A javasolt alkalmazások megjelenítése az alkalmazástár tetején - Keresés a készüléken - Keressen a telefon névjegyei, fájljai és beállításai között + Keresés az eszközön + Keresés a telefon névjegyei, fájljai és beállításai között A keresési eredményekben a rejtett alkalmazások is látszódnak Ha a teljes nevet beírta Keresőalgoritmus Alkalmazáskeresés - Globális keresés (a készüléken) + Globális keresés (az eszközön) Globális keresés (ASI-val) - A keresési eredmények megjelenítése - Alkalmazások és Parancsikonok - Parancsikonok + Megjelenítés a keresési találatok között + Alkalmazások és indítóikonok + Indítóikonok Emberek Pixel tippek Android beállítások @@ -520,23 +520,23 @@ Keresési előzmények Számológép - Média, fájlok, és a többi + Média, fájlok és a többi Névjegyek, kapcsolatok %1$s segítségével - Az alkalmazások maximális száma - A személyek maximális száma - A fájlok maximális száma - A beállítások maximális száma - A keresési előzmények maximális száma - A javaslatok maximális száma - Az internetes javaslatok maximális késleltetése + Alkalmazások maximális száma + Személyek maximális száma + Fájlok maximális száma + Beállítások maximális száma + Keresési előzmények maximális száma + Javaslatok maximális száma + Webes javaslatok maximális késleltetése - Névjegyek kereséséhez adjon a Lawnchair-nek hozzáférést a névjegyekhez és a telefonhoz - Fájlok kereséséhez adjon a Lawnchair-nek hozzáférést a készülék tárhelyéhez + Névjegyek kereséséhez adjon engedélyt a Lawnchairnek a névjegyekhez és a telefonhoz + Fájlok kereséséhez adjon engedélyt a Lawnchairnek az eszköz tárhelyéhez Engedély megadása - A webes javaslatok szolgáltatója - A szolgáltató ikonja megjelenik a keresősoron. - A Dokk keresőjével megegyező művelet - A Dokk keresősávjára kattintva az Alkalmazástár keresőfelülete nyílik meg + Webes javaslatok szolgáltatója + Szolgáltató ikonjának megjelenítése a keresősávon + A dokk keresőjével megegyező művelet + A dokk keresősávjára kattintva az alkalmazástár keresőfelülete nyílik meg diff --git a/lawnchair/res/values-pl-rPL/strings.xml b/lawnchair/res/values-pl-rPL/strings.xml index 22636c17673..fda2b8cd796 100644 --- a/lawnchair/res/values-pl-rPL/strings.xml +++ b/lawnchair/res/values-pl-rPL/strings.xml @@ -81,7 +81,7 @@ --> Ustawienia Ogólne - Kolory, paczki ikon, kropki powiadomień + Kolory, zestawy ikon, kropki powiadomień Ekran główny Kanał, siatka, ikony Dock @@ -89,7 +89,7 @@ Szuflada aplikacji Ukryte aplikacje, liczba kolumn, ikony Wyszukiwanie w szufladzie - Sugestie z sieci, wyszukiwanie globalne + Sugestie internetowe, wyszukiwanie globalne Foldery Liczba wierszy i kolumn Gesty @@ -108,7 +108,7 @@ Zwiększ limit maksymalnego rozmiaru siatki Zwiększ limit maksymalnego rozmiaru siatki z 10 × 10 do 20 × 20 Zawsze przeładowuj ikony - Unikaj korzystania z buforowanych ikon z pakietów ikon + Unikaj korzystania z buforowanych ikon z zestawów ikon Zablokuj/Odblokuj Zapobiegaj zamknięciu wybranej aplikacji przez opcję \"Wyczyść wszystko\" Aby uzyskać dostęp do skrótów i dodatkowych funkcji, ustaw Lawnchair jako domyślny ekran domowy - Plakietki powiadomień + Kropki powiadomień Pokazuj licznik powiadomień Kolor kropki powiadomień Kolor licznika powiadomień @@ -190,8 +190,8 @@ Ikony z motywu Wyłączono Ekran domowy - Ekran domowy i szuflada aplikacji - Brak obsługiwanych paczek ikon + Ekran główny i szuflada aplikacji + Brak obsługiwanych zestawów ikon Dodaj Czcionki Wspierane są czcionki OTF i TTF @@ -226,13 +226,13 @@ Styl kolorystyczny Spritz - Tonal Spot - Vibrant - Expressive + Punkt tonalny + Żywy + Ekspresywny Tęczowy Sałatka Owocowa - Content - Monochromatic + Treść + Monochromatyczny Kolory Kolor akcentu @@ -286,7 +286,7 @@ Aby używać %1$s, włącz kropki powiadomień. Pokazuj na ekranie domowym - At a Glance can be manually added to the home screen by placing the Lawnchair widget + Szybki Podgląd może zostać dodany ręcznie poprzez umieszczenie widżetu Lawnchair na ekranie głównym Dostawca Szybkiego Podglądu Google @@ -303,9 +303,9 @@ Wiadomości Wsparcie Produkt - Design & development + Design i rozwój Rozwój - QuickSwitch maintenance + Rozwój QuickSwitcha UstDev Wsparcie & PR Podziękowania @@ -317,7 +317,7 @@ --> Utwórz kopię zapasową - What to back up + Co ma zostać zachowane Układ i ustawienia Tapeta Utworzono kopię zapasową @@ -343,27 +343,27 @@ Otwórz aplikację Otwórz %1$s Otwórz szufladę aplikacji - Open app search - Open search + Otwórz wyszukiwarkę aplikacji + Otwórz wyszukiwarkę Wybierz aplikację Wymagane uprawnienia administratora Aby użyć opcji usypiania przy podwójnym dotyku, ustaw Lawnchair jako aplikację administrującą urządzeniem. Naciśnij \"Otwórz ustawienia\", następnie naciśnij \"Aktywuj tę aplikację do administrowania urządzeniem.\" Opcja \"Dotknij dwa razy aby uśpić\" zostanie wyłączona. Włącz usługę dostępności - To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\" + Aby użyć opcji usypiania przy podwójnym naciśnięciu, włącz usługę dostępności Lawnchair. Naciśnij \"Otwórz ustawienia\", następnie wybierz \"Lawnchair\" i włącz \"Użyj usługi Lawnchair.\" Otwórz ustawienia - Lawnchair bug report + Raport błędów Lawnchair %1$s uległ awarii - Upload crash log + Prześlij dziennik awarii Nie udało się przesłać Przesyłanie… Zgłoszenia błędów - Upload status + Status przesyłania %d nowych zgłoszeń Wiele nowych zgłoszeń Pokaż dock Pasek wyszukiwania Widżet paska wyszukiwania Wyłączono - Google Search bar - Background opacity - Outline width - Outline color + Pasek wyszukiwania Google + Przezroczystość tła + Szerokość konturu + Kolor konturu Promień narożnika - Apply accent color - Search provider + Zastosuj kolor akcentu + Silnik wyszukiwania Ikony docka Dolny odstęp - App search - %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair. + Wyszukiwanie aplikacji + %1$s i Lawnchair mają umowę o współdzieleniu przychodów.\n\nWyszukiwanie za pomocą %1$s wspiera rozwój Lawnchair. Aplikacja Witryna Wymagana aplikacja @@ -437,8 +437,8 @@ Wyszukiwanie głosowe Ukryte aplikacje - Load apps in bulk - Load and display icons in bulk instead of individually + Ładuj aplikacje zbiorczo + Ładuj i wyświetlaj ikony zbiorczo, zamiast pojedynczo Pamiętaj pozycję Zapamiętaj pozycję szuflady aplikacji po opuszczeniu szuflady Pokaż pasek przewijania @@ -455,8 +455,8 @@ %1$d aplikacji - Krycie tła podglądu ikon - Krycie tła folderu + Przezroczystość tła podglądu ikon + Przezroczystość tła folderu Kolor tła ikon Maksymalna liczba kolumn w folderze Maksymalna liczba wierszy w folderze @@ -465,7 +465,7 @@ Niekompatybilna integracja systemowa Twoje urządzenie jest skonfigurowane, żeby używało gestów systemowych (tzw. Quickstep) dostarczonych przez %1$s, ale ta wersja %1$s nie jest zgodna z twoją wersją Androida. Aby móc dalej używać swojego urządzenia, odinstaluj aktualizacje %1$s lub zmień dostawcę gestów systemowych. Prześwitujące tło - Krycie tła + Przezroczystość tła Szybkie akcje Udostępnij Obiektyw @@ -473,7 +473,7 @@ Wymuś zamknięcie Promień narożników ekranu Niestandardowy promień narożników ekranu - When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen. + Kiedy przesuwasz palcem w górę, aby otworzyć widok ostatnich aplikacji, aktualna aplikacja podąża za Twoim palcem, kurcząc się w kształt karty. Użyj tego suwaka, aby dostosować promień narożnika karty, gdy niemal wypełnia ona ekran, aby jej kształt dopasował się do kształtu Twojego ekranu. Pasek zadań Pokaż pasek stanu (eksperymentalne) Szukaj Szukaj aplikacji - No apps found matching \"%1$s\" + Nie znaleziono aplikacji pasujących do \"%1$s\" Z sieci Kontakty z urządzenia Pliki z urządzenia Ustawienia z urządzenia Szukaj więcej aplikacji Szukaj w %1$s - No app store or browser installed + Nie zainstalowano sklepu z aplikacjami lub przeglądarki Wyczyść historię wyszukiwania Wyczyść pasek wyszukiwania Szukaj Pokaż pasek wyszukiwania Automatycznie pokazuj klawiaturę - Fuzzy search - Approximate matching for app searches + Wyszukiwanie rozmyte + Przybliżone dopasowanie dla wyszukiwań aplikacji Sugestie Pokazuj najczęściej używane aplikacje na górze szuflady aplikacji - Device search - Search your phone contacts, files, and settings + Szukaj w urządzeniu + Szukaj kontaktów, plików i ustawień telefonu Pokazuj ukryte aplikacje w wynikach wyszukiwania Gdy wpisana jest cała nazwa Algorytm wyszukiwania @@ -515,7 +515,7 @@ Aplikacje i Skróty Skróty aplikacji Osoby - Pixel tips + Porady Pixel Ustawienia Androida Pliki Sugestie internetowe @@ -524,7 +524,7 @@ Multimedia, pliki i inne Kontakty i inne - Via %1$s + Przez %1$s Maksymalna ilość aplikacji Maksymalna ilość osób @@ -539,6 +539,6 @@ Przyznaj uprawnienia Dostawca sugestii internetowych Pokaż ikonę dostawcy sugestii internetowych na pasku wyszukiwania - Match dock search bar actions + Dopasuj akcje paska wyszukiwania docka Naciśnięcie paska wyszukiwania docka będzie teraz otwierało interfejs wyszukiwania szuflady aplikacji diff --git a/lawnchair/res/values-ru-rRU/strings.xml b/lawnchair/res/values-ru-rRU/strings.xml index 15362a4bdb9..5fe124dff62 100644 --- a/lawnchair/res/values-ru-rRU/strings.xml +++ b/lawnchair/res/values-ru-rRU/strings.xml @@ -99,18 +99,18 @@ О программе О приложении Перезапустить Lawnchair - Эксперимент. функции + Другие функции Настройка шрифта Некоторый текст останется без изменений Настройки календаря секции \"Самое главное\" - Разрешить отображение даты календаря негригорианского типа + Разрешить показ даты из других календарей Увеличить макс. размер сетки Увеличить максимально допустимый размер сетки главного экрана с 10 х 10 на 20 x 20 Всегда перезагружать иконки Избегать использования кэшированных иконок из наборов иконок Блокировка/Разблокировка - Запретить очистку выбранного приложения при использовании “Очистить все\" + Запретить закрытие выбран. приложения при нажатии кнопки \"Очистить всё\" Для доступа к ярлыкам и дополнительным функциям, установите Lawnchair в качестве лаунчера по умолчанию Включить Точки уведомлений - Отображать счетчик уведомлений + Отображать счётчик уведомлений Цвет Точек уведомлений - Цвет счетчика уведомлений + Цвет счётчика уведомлений Внимание: Цвета Точек уведомлений и счетчика уведомлений недостаточно контрастируют друг с другом - Внимание: Цвета Точек уведомлений и счетчика не всегда могут быть достаточно контрастны друг с другом + Внимание: Цвета Точек уведомлений и счётчика не всегда могут быть достаточно контрастны друг с другом Необходимо разрешение доступа к уведомлениям Для отображения Точек уведомлений, включите уведомления приложения для %1$s Добавить шрифты Поддерживаются OTF и TTF шрифты @@ -211,7 +211,7 @@ Полужирный Жирный Очень толстый - Черный + Чёрный Цветовой стиль - Форме шприца + Форма брызг Тональная точка Яркий Выразительно diff --git a/lawnchair/res/values-sr/strings.xml b/lawnchair/res/values-sr/strings.xml index 6d5c8d0efd6..be987a7c6db 100644 --- a/lawnchair/res/values-sr/strings.xml +++ b/lawnchair/res/values-sr/strings.xml @@ -142,7 +142,7 @@ Користи прозирну позадину на тематским иконама Прилагодљиве иконе За све неприлагодљиве иконе - Show shadow behind icons + Прикажи сенку иза икона Осветљеност позадине Бела позадина при 100% осветљености Ресетуј прилагођене иконе @@ -161,7 +161,7 @@ Јаје iOS Осмоугао - Hexagon + Шестоугао One UI Заобљени квадрат Оштри квадрат @@ -226,7 +226,7 @@ Шема боја Аперол - Нијансирање + Мешавина нијанси Живописно Експресивно Дуга @@ -278,12 +278,12 @@ Статус батерије Репродукује се - Maximum number of targets - Open Smartspacer settings - Smartspacer settings + Максималан број циљева + Отвори подешавања Smartspacer-а + Подешавања Smartspacer-а Додирните за подешавање - To use %1$s, turn on Notification Dots. + Да бисте користили „%1$s”, укључите тачке за обавештења. Прикажи на почетном екрану „Кратак преглед” можете да додате ручно постављањем виџета „Lawnchair” @@ -310,7 +310,7 @@ Подршка и односи са јавношћу Признања Превод - Donate + Донирај Ротација почетног екрана Дозволите ротацију почетног екрана када се уређај ротира - Blur wallpaper (experimental) - Blur intensity - Factor threshold + Замагли позадину (експериментално) + Ниво замагљења + Праг ефекта замагљења Додај нове апликације на почетни екран Прикажи фид Ниједна апликација за фид није инсталирана @@ -397,8 +397,8 @@ Користите анимиране и компактније искачуће прозоре у складу са дизајном Material You Искачући мени Прикажи дугме за закључавање - Show system settings button - Show edit home screen button + Прикажи дугме за системска подешавања + Прикажи дугме за уређивање почетног екрана Статусна трака Прикажи статусну траку Тамна статусна трака @@ -418,8 +418,8 @@ Онемогућено Google трака за претрагу Непрозирност позадине - Outline width - Outline color + Ширина контуре + Боја контуре Заобљеност углова Примени боју за наглашавање Претраживач @@ -454,8 +454,8 @@ %1$d апликација - Icon preview background opacity - Folder background opacity + Непрозирност позадине при приказу икона + Непрозирност позадине фолдера Позадинска боја иконе Максималан број колона у фолдеру Максималан број редова у фолдеру @@ -489,7 +489,7 @@ Фајлови са уређаја Подешавања са уређаја Претражите још апликација - Search on %1$s + Претражите помоћу услуге %1$s Није инсталирана продавница апликација ни прегледач Обриши историју претраге Обриши поље за претрагу @@ -523,21 +523,21 @@ Медији, фајлови и друго Контакти и друго - Via %1$s + Извор: %1$s - Maximum number of apps - Maximum number of people - Maximum number of files - Maximum number of settings - Maximum items for search history - Maximum number of suggestions + Максималан број апликација + Максималан број контаката + Максималан број фајлова + Максималан број подешавања + Максималан број ставки у историји претраге + Максималан број предлога Максимално кашњење веб-предлога Да бисте претраживали контакте, доделите Lawnchair-у дозволе Контакти и Телефон Да бисте претраживали фајлове, доделите Lawnchair-у приступ меморији Додели дозволе - Web suggestion provider - Show web suggestion provider icon in search bar - Match dock search bar actions - Clicking the dock search bar will now open the app drawer search UI + Добављач веб-предлога + Прикажи икону добављача веб-предлога на траци за претрагу + Подударај радње траке за претрагу на доку + Кликом на претрагу у доку сада отвара интерфејс за претрагу апликација diff --git a/lawnchair/res/values-sv-rSE/strings.xml b/lawnchair/res/values-sv-rSE/strings.xml index df4ddd85b9a..96a26a120bf 100644 --- a/lawnchair/res/values-sv-rSE/strings.xml +++ b/lawnchair/res/values-sv-rSE/strings.xml @@ -310,7 +310,7 @@ Support & pr Erkännanden Översätt - Donate + Donera Icon preview background opacity - Folder background opacity + Mappbakgrundsopacitet Ikonbakgrundsfärg Maximalt antal mappkolumner Maximalt antal mapprader @@ -524,12 +524,12 @@ Kontakter med mera Via %1$s - Maximum number of apps - Maximum number of people - Maximum number of files - Maximum number of settings - Maximum items for search history - Maximum number of suggestions + Maximalt antal appar + Maximalt antal personer + Maximalt antal filer + Maximalt antal inställningar + Maximalt antal objekt för sökhistorik + Maximalt antal förslag Maximal fördröjning av webbförslag För att söka efter kontakter, bevilja kontakter- och telefonbehörigheter till Lawnchair diff --git a/lawnchair/res/values-tr-rTR/strings.xml b/lawnchair/res/values-tr-rTR/strings.xml index 32d241cd81e..7f1c8d209c2 100644 --- a/lawnchair/res/values-tr-rTR/strings.xml +++ b/lawnchair/res/values-tr-rTR/strings.xml @@ -87,7 +87,7 @@ Alt Sıra Arama çubuğu, simge sayısı Uglama çekmecesi - Gizlenmiş uygulamalar, sutün sayısı, simgeler + Gizlenmiş uygulamalar, sütun sayısı, simgeler Uygulama çekmecesi arama çubuğu Web önerileri, global arama Klasörler From 28f417dbdb91fcec5a9a38f12b5a260ecca84865 Mon Sep 17 00:00:00 2001 From: SuperDragonXD <70206496+SuperDragonXD@users.noreply.github.com> Date: Sun, 1 Sep 2024 18:00:44 +0800 Subject: [PATCH 03/15] Fix drawer search suggestion preference state --- .../components/SearchSuggestionPreference.kt | 59 +++++++++---------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/SearchSuggestionPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/SearchSuggestionPreference.kt index a379e05030f..29417f4f941 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/components/SearchSuggestionPreference.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/components/SearchSuggestionPreference.kt @@ -49,14 +49,16 @@ fun SearchSuggestionPreference( ) { val isGranted = permissionState?.status?.isGranted ?: true - LaunchedEffect("") { + LaunchedEffect(Unit) { if (!isGranted) { adapter.onChange(false) } } SearchSuggestionPreference( - adapter = adapter, + checked = adapter.state.value, + onCheckedChange = { adapter.onChange(it) }, + enabled = isGranted, maxCountAdapter = maxCountAdapter, maxCountRange = maxCountRange, label = label, @@ -86,7 +88,7 @@ fun SearchSuggestionPreference( ) { SearchSuggestionPreference( checked = adapter.state.value, - onCheckedChange = adapter::onChange, + onCheckedChange = { adapter.onChange(it) }, enabled = isGranted, maxCountAdapter = maxCountAdapter, maxCountRange = maxCountRange, @@ -115,31 +117,27 @@ fun SearchSuggestionPreference( permissionRationale: String? = null, content: @Composable (() -> Unit)? = null, ) { - val bottomSheetHandler = bottomSheetHandler - SearchSuggestionsSwitchPreference( label = label, description = description, checked = checked, onCheckedChange = onCheckedChange, enabled = enabled, - onClick = { - bottomSheetHandler.show { - BottomSheetContent( - onHide = { bottomSheetHandler.hide() }, - isPermissionGranted = isGranted, - adapterValue = checked, - adapterEnabled = enabled, - adapterOnChange = onCheckedChange, - label = label, - maxCountLabel = maxCountLabel, - maxCountAdapter = maxCountAdapter, - maxCountRange = maxCountRange, - content = content, - onRequestPermission = onRequestPermission, - permissionRationale = permissionRationale, - ) - } + content = { onHide -> + BottomSheetContent( + onHide = onHide, + isPermissionGranted = isGranted, + adapterValue = checked, + adapterEnabled = enabled, + adapterOnChange = onCheckedChange, + label = label, + maxCountLabel = maxCountLabel, + maxCountAdapter = maxCountAdapter, + maxCountRange = maxCountRange, + content = content, + onRequestPermission = onRequestPermission, + permissionRationale = permissionRationale, + ) }, ) } @@ -169,9 +167,7 @@ private fun BottomSheetContent( Column { MainSwitchPreference( checked = adapterValue, - onCheckedChange = { - adapterOnChange(it) - }, + onCheckedChange = adapterOnChange, label = label, enabled = adapterEnabled, ) { @@ -204,7 +200,6 @@ private fun BottomSheetContent( Spacer(Modifier.weight(1f)) Button( onClick = { - onHide() onRequestPermission() }, ) { @@ -224,13 +219,17 @@ private fun SearchSuggestionsSwitchPreference( label: String, checked: Boolean, onCheckedChange: (Boolean) -> Unit, - onClick: () -> Unit, enabled: Boolean, description: String? = null, + content: @Composable ((() -> Unit) -> Unit), ) { + val bottomSheetHandler = bottomSheetHandler + PreferenceTemplate( modifier = Modifier.clickable { - onClick() + bottomSheetHandler.show { + content { bottomSheetHandler.hide() } + } }, contentModifier = Modifier .fillMaxHeight() @@ -251,7 +250,7 @@ private fun SearchSuggestionsSwitchPreference( .padding(all = 16.dp) .height(24.dp), checked = checked, - onCheckedChange = { onCheckedChange(it) }, + onCheckedChange = onCheckedChange, enabled = enabled, ) }, @@ -266,7 +265,7 @@ private fun SearchSuggestionsSwitchPreferencePreview() { SearchSuggestionsSwitchPreference( label = "example", checked = true, - onClick = { /*TODO*/ }, + content = {}, onCheckedChange = {}, enabled = true, ) From d48b9157aeea61a3c318885d3a083c5dc6d755cf Mon Sep 17 00:00:00 2001 From: SuperDragonXD <70206496+SuperDragonXD@users.noreply.github.com> Date: Sun, 1 Sep 2024 18:01:20 +0800 Subject: [PATCH 04/15] Update MainSwitchPreference style --- .../controls/MainSwitchPreference.kt | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/controls/MainSwitchPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/controls/MainSwitchPreference.kt index bf67333c45a..6e47e6063d4 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/components/controls/MainSwitchPreference.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/components/controls/MainSwitchPreference.kt @@ -1,17 +1,25 @@ package app.lawnchair.ui.preferences.components.controls import androidx.compose.animation.Crossfade +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface +import androidx.compose.material3.Switch import androidx.compose.material3.Text +import androidx.compose.material3.ripple import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import app.lawnchair.preferences.PreferenceAdapter import app.lawnchair.ui.preferences.components.layout.ExpandAndShrink +import app.lawnchair.ui.preferences.components.layout.PreferenceTemplate /** * A toggle to enable a list of preferences. @@ -86,8 +94,8 @@ fun MainSwitchPreference( ) { Surface( modifier = modifier.padding(horizontal = 16.dp), - shape = MaterialTheme.shapes.large, - color = if (checked) { + shape = MaterialTheme.shapes.extraLarge, + color = if (checked && enabled) { MaterialTheme.colorScheme.primaryContainer } else if (enabled) { MaterialTheme.colorScheme.surfaceVariant @@ -95,11 +103,35 @@ fun MainSwitchPreference( MaterialTheme.colorScheme.surfaceContainer }, ) { - SwitchPreference( - checked = checked, - onCheckedChange = onCheckedChange, - label = label, + val interactionSource = remember { MutableInteractionSource() } + + PreferenceTemplate( + modifier = Modifier + .clickable( + enabled = enabled, + indication = ripple(), + interactionSource = interactionSource, + ) { + onCheckedChange(!checked) + }, + contentModifier = Modifier + .fillMaxHeight() + .padding(vertical = 24.dp) + .padding(start = 16.dp), + title = { Text(text = label) }, + endWidget = { + Switch( + modifier = Modifier + .padding(all = 16.dp) + .height(24.dp), + checked = checked, + onCheckedChange = onCheckedChange, + enabled = enabled, + interactionSource = interactionSource, + ) + }, enabled = enabled, + applyPaddings = false, ) } } From f561aaccdc76a7337ad0110a6f6e58a65379aae3 Mon Sep 17 00:00:00 2001 From: SuperDragonXD <70206496+SuperDragonXD@users.noreply.github.com> Date: Sun, 1 Sep 2024 18:27:48 +0800 Subject: [PATCH 05/15] Simplify coroutine code in search results --- .../algorithms/LawnchairLocalSearchAlgorithm.kt | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt index c3972a9f2d1..a588df8290c 100644 --- a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt +++ b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt @@ -146,32 +146,18 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm prefs: PreferenceManager, ): Flow> = channelFlow { val allResults = mutableListOf() - var appIndex = 0 launch { if (searchApps) { getAppSearchResults(apps, query).collect { appResults -> allResults.addAll(appResults) - appIndex = appResults.size send(allResults.toList()) } } - } - - launch { getLocalSearchResults(query, prefs).collect { localResults -> - // Insert local results at the appropriate position - val insertIndex = appIndex - if (insertIndex >= 0) { - allResults.addAll(insertIndex, localResults) - } else { - allResults.addAll(localResults) - } + allResults.addAll(localResults) send(allResults.toList()) } - } - - launch { getSearchLinks(query).collect { otherResults -> allResults.addAll(otherResults) send(allResults.toList()) From 8f89197b613297ab8072abc7c572ea3864a2c56e Mon Sep 17 00:00:00 2001 From: SuperDragonXD <70206496+SuperDragonXD@users.noreply.github.com> Date: Mon, 2 Sep 2024 21:13:38 +0800 Subject: [PATCH 06/15] Icon pack improvements * Simplify UI for icon system * Add compat system for monochrome icons below T * Add option to tint backgrounds according to accent color * Fix icon shadow setting Todo: implement home screen themed icons compat setting, alongside look into calendar behavior --- .../app/lawnchair/icons/IconPackProvider.kt | 56 ++--- .../lawnchair/icons/LawnchairIconProvider.kt | 72 ++++--- .../app/lawnchair/icons/ThemedIconCompat.kt | 97 +++++++++ .../preferences/PreferenceManager.kt | 2 + .../destinations/IconPackPreferences.kt | 198 ++++++++++-------- platform_frameworks_libs_systemui | 2 +- 6 files changed, 290 insertions(+), 137 deletions(-) create mode 100644 lawnchair/src/app/lawnchair/icons/ThemedIconCompat.kt diff --git a/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt b/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt index 4dac1de5b5e..20b5a341fa4 100644 --- a/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt +++ b/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt @@ -10,7 +10,6 @@ import android.graphics.drawable.InsetDrawable import android.os.Build import android.os.Process import android.os.UserHandle -import app.lawnchair.util.getThemedIconPacksInstalled import com.android.launcher3.icons.ClockDrawableWrapper import com.android.launcher3.icons.ThemedIconDrawable import com.android.launcher3.util.MainThreadInitializedObject @@ -47,16 +46,14 @@ class IconPackProvider(private val context: Context) { iconPack.loadBlocking() val packageManager = context.packageManager val drawable = iconPack.getIcon(iconEntry, iconDpi) ?: return null - val themedIconPacks = packageManager.getThemedIconPacksInstalled(context) - val isThemedIconsEnabled = - context.isThemedIconsEnabled() && (iconEntry.packPackageName in themedIconPacks) + val shouldTintBackgrounds = context.shouldTintIconPackBackgrounds() val clockMetadata = if (user == Process.myUserHandle()) iconPack.getClock(iconEntry) else null try { if (clockMetadata != null) { val clockDrawable: ClockDrawableWrapper = ClockDrawableWrapper.forMeta(Build.VERSION.SDK_INT, clockMetadata) { - if (isThemedIconsEnabled) { + if (shouldTintBackgrounds) { wrapThemedData( packageManager, iconEntry, @@ -66,22 +63,20 @@ class IconPackProvider(private val context: Context) { drawable } } - if (clockDrawable != null) { - return if (isThemedIconsEnabled && context.shouldTransparentBGIcons()) { - clockDrawable.foreground - } else { - CustomAdaptiveIconDrawable( - clockDrawable.background, - clockDrawable.foreground, - ) - } + return if (shouldTintBackgrounds && context.shouldTransparentBGIcons()) { + clockDrawable.foreground + } else { + CustomAdaptiveIconDrawable( + clockDrawable.background, + clockDrawable.foreground, + ) } } } catch (t: Throwable) { // Ignore } - if (isThemedIconsEnabled) { + if (shouldTintBackgrounds) { return wrapThemedData(packageManager, iconEntry, drawable) } return drawable @@ -93,22 +88,27 @@ class IconPackProvider(private val context: Context) { drawable: Drawable, ): Drawable? { val themedColors: IntArray = ThemedIconDrawable.getThemedColors(context) - val res = packageManager.getResourcesForApplication(iconEntry.packPackageName) + try { + val res = packageManager.getResourcesForApplication(iconEntry.packPackageName) - @SuppressLint("DiscouragedApi") - val resId = res.getIdentifier(iconEntry.name, "drawable", iconEntry.packPackageName) - val bg: Drawable = ColorDrawable(themedColors[0]) - val td = ThemedIconDrawable.ThemeData(res, iconEntry.packPackageName, resId) - return if (drawable is AdaptiveIconDrawable) { - if (context.shouldTransparentBGIcons() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && drawable.monochrome != null) { - drawable.monochrome?.apply { setTint(themedColors[1]) } + @SuppressLint("DiscouragedApi") + val resId = res.getIdentifier(iconEntry.name, "drawable", iconEntry.packPackageName) + val bg: Drawable = ColorDrawable(themedColors[0]) + val td = ThemedIconDrawable.ThemeData(res, iconEntry.packPackageName, resId) + + return if (drawable is AdaptiveIconDrawable) { + if (context.shouldTransparentBGIcons() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && drawable.monochrome != null) { + drawable.monochrome?.apply { setTint(themedColors[1]) } + } else { + val foregroundDr = drawable.foreground.apply { setTint(themedColors[1]) } + CustomAdaptiveIconDrawable(bg, foregroundDr) + } } else { - val foregroundDr = drawable.foreground.apply { setTint(themedColors[1]) } - CustomAdaptiveIconDrawable(bg, foregroundDr) + val iconFromPack = InsetDrawable(drawable, .3f).apply { setTint(themedColors[1]) } + td.wrapDrawable(CustomAdaptiveIconDrawable(bg, iconFromPack), 0) } - } else { - val iconFromPack = InsetDrawable(drawable, .3f).apply { setTint(themedColors[1]) } - td.wrapDrawable(CustomAdaptiveIconDrawable(bg, iconFromPack), 0) + } catch (_: Exception) { + return drawable } } diff --git a/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt b/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt index 4686b28dee3..473acde517d 100644 --- a/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt +++ b/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt @@ -19,7 +19,6 @@ import android.content.res.Resources import android.graphics.drawable.AdaptiveIconDrawable import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable -import android.os.Build import android.os.Handler import android.os.UserHandle import android.os.UserManager @@ -34,6 +33,7 @@ import app.lawnchair.util.getPackageVersionCode import app.lawnchair.util.isPackageInstalled import com.android.launcher3.BuildConfig import com.android.launcher3.R +import com.android.launcher3.Utilities import com.android.launcher3.icons.IconProvider import com.android.launcher3.icons.ThemedIconDrawable import com.android.launcher3.util.ComponentKey @@ -49,25 +49,31 @@ class LawnchairIconProvider @JvmOverloads constructor( private val prefs = PreferenceManager.getInstance(context) private val iconPackPref = prefs.iconPackPackage private val themedIconPackPref = prefs.themedIconPackPackage - private val drawerThemedIcons get() = prefs.drawerThemedIcons + private val iconPackProvider = IconPackProvider.INSTANCE.get(context) private val overrideRepo = IconOverrideRepository.INSTANCE.get(context) - private val iconPack get() = iconPackProvider.getIconPack(iconPackPref.get())?.apply { loadBlocking() } - private val themedIconPack get() = iconPackProvider.getIconPack(themedIconPackPref.get())?.apply { loadBlocking() } - private var isOlderLawnIconsInstalled = context.packageManager.getPackageVersionCode(LAWNICONS_PACKAGE_NAME) in 1..3 + + private val iconPack + get() = iconPackProvider.getIconPack(iconPackPref.get())?.apply { loadBlocking() } + private val themedIconPack + get() = iconPackProvider.getIconPack(themedIconPackPref.get())?.apply { loadBlocking() } + + private var isOlderLawniconsInstalled = context.packageManager.getPackageVersionCode(LAWNICONS_PACKAGE_NAME) in 1..3 + private var iconPackVersion = 0L + private var themeMapName: String = "" private var _themeMap: Map? = null val themeMap: Map get() { - if (drawerThemedIcons.get() && !(isOlderLawnIconsInstalled)) { + if (!context.isThemedIconsEnabled()) { _themeMap = DISABLED_MAP } if (_themeMap == null) { _themeMap = createThemedIconMap() } - if (isOlderLawnIconsInstalled && themedIconPackPref.get() == LAWNICONS_PACKAGE_NAME) { + if (isOlderLawniconsInstalled) { themeMapName = themedIconPackPref.get() _themeMap = createThemedIconMap() } @@ -84,7 +90,7 @@ class LawnchairIconProvider @JvmOverloads constructor( } override fun setIconThemeSupported(isSupported: Boolean) { - _themeMap = if (isSupported && isOlderLawnIconsInstalled) null else DISABLED_MAP + _themeMap = if (isSupported && isOlderLawniconsInstalled) null else DISABLED_MAP } private fun resolveIconEntry(componentName: ComponentName, user: UserHandle): IconEntry? { @@ -151,23 +157,41 @@ class LawnchairIconProvider @JvmOverloads constructor( val icon = resolvedEntry?.let { iconPackProvider.getDrawable(it, iconDpi, user) } val td = themeData if (icon != null) return if (td != null) td.wrapDrawable(icon, iconType) else icon + + // use default icon from system var defaultIcon = super.getIconWithOverrides(packageName, component, user, iconDpi, fallback) - if (context.isThemedIconsEnabled() && defaultIcon is AdaptiveIconDrawable && - Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && defaultIcon.monochrome != null - ) { - defaultIcon = defaultIcon.monochrome - return if (td != null) { - td.wrapDrawable(defaultIcon, iconType) + + if (context.shouldTintIconPackBackgrounds() && defaultIcon is AdaptiveIconDrawable) { + if (Utilities.ATLEAST_T && defaultIcon.monochrome != null) { + defaultIcon = defaultIcon.monochrome + return if (td != null) { + td.wrapDrawable(defaultIcon, iconType) + } else { + val themedColors = ThemedIconDrawable.getThemedColors(context) + if (context.shouldTransparentBGIcons()) { + return defaultIcon.apply { setTint(themedColors[1]) } + } + CustomAdaptiveIconDrawable( + ColorDrawable(themedColors[0]), + defaultIcon.apply { setTint(themedColors[1]) }, + ) + } } else { - val themedColors = ThemedIconDrawable.getThemedColors(context) - if (context.shouldTransparentBGIcons()) { - return defaultIcon.apply { setTint(themedColors[1]) } + val iconCompat = ThemedIconCompat.getThemedIcon(context, componentName) ?: return defaultIcon + + return if (td != null) { + td.wrapDrawable(iconCompat, iconType) + } else { + val themedColors = ThemedIconDrawable.getThemedColors(context) + if (context.shouldTransparentBGIcons()) { + return iconCompat.apply { setTint(themedColors[1]) } + } + CustomAdaptiveIconDrawable( + ColorDrawable(themedColors[0]), + iconCompat.apply { setTint(themedColors[1]) }, + ) } - CustomAdaptiveIconDrawable( - ColorDrawable(themedColors[0]), - defaultIcon.apply { setTint(themedColors[1]) }, - ) } } return defaultIcon @@ -368,17 +392,13 @@ class LawnchairIconProvider @JvmOverloads constructor( } } - updateMapFromResources( - resources = context.resources, - packageName = context.packageName, - ) if (context.packageManager.isPackageInstalled(packageName = themeMapName)) { iconPackVersion = context.packageManager.getPackageVersionCode(themeMapName) updateMapFromResources( resources = context.packageManager.getResourcesForApplication(themeMapName), packageName = themeMapName, ) - if (isOlderLawnIconsInstalled) { + if (isOlderLawniconsInstalled) { updateMapWithDynamicIcons(context, map) } } diff --git a/lawnchair/src/app/lawnchair/icons/ThemedIconCompat.kt b/lawnchair/src/app/lawnchair/icons/ThemedIconCompat.kt new file mode 100644 index 00000000000..698e228a2b4 --- /dev/null +++ b/lawnchair/src/app/lawnchair/icons/ThemedIconCompat.kt @@ -0,0 +1,97 @@ +package app.lawnchair.icons + +import android.annotation.SuppressLint +import android.content.ComponentName +import android.content.Context +import android.content.pm.ActivityInfo +import android.content.pm.PackageManager +import android.content.res.Resources +import android.content.res.XmlResourceParser +import android.graphics.drawable.Drawable +import android.util.Log +import java.io.IOException +import org.xmlpull.v1.XmlPullParser +import org.xmlpull.v1.XmlPullParserException + +object ThemedIconCompat { + const val TAG = "ThemedIconCompat" + + fun getThemedIcon( + context: Context, + componentName: ComponentName, + ): Drawable? { + val activityInfo = resolveActivityInfo(context, componentName) ?: return null + val drawable = getMonochromeIconResource( + context, + activityInfo, + ) ?: return null + + return drawable + } + + private fun resolveActivityInfo(context: Context, componentName: ComponentName): ActivityInfo? { + return try { + context.packageManager.getActivityInfo( + componentName, + 0, + ) + } catch (e: PackageManager.NameNotFoundException) { + // Handle the case where the activity is not found + null + } + } + + @SuppressLint("UseCompatLoadingForDrawables") + private fun getMonochromeIconResource(context: Context, activityInfo: ActivityInfo): Drawable? { + val iconResource = activityInfo.applicationInfo.icon + + val resources = try { + context.packageManager.getResourcesForApplication(activityInfo.packageName) + } catch (e: PackageManager.NameNotFoundException) { + Log.e(TAG, e.toString()) + return null + } + var xmlParser: XmlResourceParser? = null + try { + xmlParser = resources.getXml(iconResource) + if (!xmlParser.skipToNextTag()) return null + + if (xmlParser.name != "adaptive-icon") { + return null + } + + while (xmlParser.skipToNextTag()) { + if (xmlParser.name == "monochrome") { + val drawable = xmlParser.getAttributeResourceValue( + "http://schemas.android.com/apk/res/android", + "drawable", + 0, + ) + if (drawable == 0) return null + + return resources.getDrawable(drawable, null) + } + } + } catch (e: Resources.NotFoundException) { + Log.e(TAG, e.toString()) + return null + } catch (e: IOException) { + Log.e(TAG, e.toString()) + return null + } catch (e: XmlPullParserException) { + Log.e(TAG, e.toString()) + return null + } finally { + xmlParser?.close() + } + + return null + } +} + +fun XmlPullParser.skipToNextTag(): Boolean { + while (next() != XmlPullParser.END_DOCUMENT) { + if (eventType == XmlPullParser.START_TAG) return true + } + return false +} diff --git a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt index f51fa1131d5..603be3786ce 100644 --- a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt +++ b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt @@ -94,6 +94,8 @@ class PreferenceManager private constructor(private val context: Context) : Base val themedIcons = BoolPref("themed_icons", true, recreate) val drawerThemedIcons = BoolPref("drawer_themed_icons", false, recreate) + val tintIconPackBackgrounds = BoolPref("tint_icon_pack_backgrounds", false, recreate) + val hotseatQsbCornerRadius = FloatPref("pref_hotseatQsbCornerRadius", 1F, recreate) val hotseatQsbAlpha = IntPref("pref_searchHotseatTranparency", 100, recreate) val hotseatQsbStrokeWidth = FloatPref("pref_searchStrokeWidth", 0F, recreate) diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt index a286abbf389..043b5ff9690 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt @@ -19,20 +19,26 @@ package app.lawnchair.ui.preferences.destinations import android.content.res.Configuration import android.graphics.drawable.Drawable import androidx.annotation.StringRes +import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.rememberScrollState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -41,9 +47,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.key +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource @@ -60,8 +68,9 @@ import app.lawnchair.ui.preferences.components.DummyLauncherLayout import app.lawnchair.ui.preferences.components.WallpaperPreview import app.lawnchair.ui.preferences.components.controls.ListPreference import app.lawnchair.ui.preferences.components.controls.ListPreferenceEntry +import app.lawnchair.ui.preferences.components.controls.SwitchPreference import app.lawnchair.ui.preferences.components.invariantDeviceProfile -import app.lawnchair.ui.preferences.components.layout.ExpandAndShrink +import app.lawnchair.ui.preferences.components.layout.Chip import app.lawnchair.ui.preferences.components.layout.NestedScrollStretch import app.lawnchair.ui.preferences.components.layout.PreferenceGroup import app.lawnchair.ui.preferences.components.layout.PreferenceLayout @@ -71,6 +80,7 @@ import app.lawnchair.util.isPackageInstalled import com.android.launcher3.R import com.google.accompanist.drawablepainter.rememberDrawablePainter import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.launch data class IconPackInfo( val name: String, @@ -106,6 +116,8 @@ fun IconPackPreferences( modifier: Modifier = Modifier, ) { val prefs = preferenceManager() + val context = LocalContext.current + val iconPackAdapter = prefs.iconPackPackage.getAdapter() val themedIconPackAdapter = prefs.themedIconPackPackage.getAdapter() val themedIconsAdapter = prefs.themedIcons.getAdapter() @@ -144,74 +156,98 @@ fun IconPackPreferences( } } Column { - ExpandAndShrink(visible = !drawerThemedIconsEnabled) { - PreferenceGroup( - heading = stringResource(id = R.string.icon_pack), - ) { - IconPackGrid( - adapter = iconPackAdapter, - themedIconsAdapter.state.value, - false, - ) - } - } - ExpandAndShrink(visible = themedIconsAdapter.state.value && !drawerThemedIconsEnabled) { - PreferenceGroup( - heading = stringResource(id = R.string.themed_icon_pack), - ) { - IconPackGrid( - adapter = themedIconPackAdapter, - drawerThemedIconsEnabled, - true, - ) - } - } - ExpandAndShrink(visible = drawerThemedIconsEnabled) { - PreferenceGroup( - heading = stringResource(id = R.string.themed_icon_pack), - ) { - IconPackGrid( - adapter = iconPackAdapter, - drawerThemedIconsEnabled, - true, - ) - } + val pagerState = rememberPagerState( + initialPage = 0, + pageCount = { 2 }, + ) + + val scope = rememberCoroutineScope() + val scrollToPage = + { page: Int -> scope.launch { pagerState.animateScrollToPage(page) } } + + Row( + horizontalArrangement = Arrangement.spacedBy(space = 8.dp), + modifier = Modifier.padding(horizontal = 16.dp), + ) { + Chip( + label = stringResource(id = R.string.icon_pack), + onClick = { scrollToPage(0) }, + currentOffset = pagerState.currentPage + pagerState.currentPageOffsetFraction, + page = 0, + ) + Chip( + label = stringResource(id = R.string.themed_icon_pack), + onClick = { scrollToPage(1) }, + currentOffset = pagerState.currentPage + pagerState.currentPageOffsetFraction, + page = 1, + ) } - PreferenceGroup { - val themedIconsAvailable = LocalContext.current.packageManager - .getThemedIconPacksInstalled(LocalContext.current) - .any { LocalContext.current.packageManager.isPackageInstalled(it) } || - LocalContext.current.packageManager - .isPackageInstalled(Constants.LAWNICONS_PACKAGE_NAME) - ListPreference( - enabled = themedIconsAvailable, - label = stringResource(id = R.string.themed_icon_title), - entries = ThemedIconsState.entries.map { - ListPreferenceEntry( - value = it, - label = { stringResource(id = it.labelResourceId) }, - ) - }.toPersistentList(), - value = ThemedIconsState.getForSettings( - themedIcons = themedIconsAdapter.state.value, - drawerThemedIcons = drawerThemedIconsEnabled, - ), - onValueChange = { - themedIconsAdapter.onChange(newValue = it.themedIcons) - drawerThemedIconsAdapter.onChange(newValue = it.drawerThemedIcons) - iconPackAdapter.onChange(newValue = iconPackAdapter.state.value) - if (it.themedIcons && !it.drawerThemedIcons) { - themedIconPackAdapter.onChange(newValue = themedIconPackAdapter.state.value) - } else { - themedIconPackAdapter.onChange(newValue = "") + + Spacer(Modifier.height(16.dp)) + + HorizontalPager( + state = pagerState, + verticalAlignment = Alignment.Top, + modifier = Modifier.animateContentSize(), + ) { page -> + when (page) { + 0 -> { + PreferenceGroup { + IconPackGrid( + adapter = iconPackAdapter, + false, + ) + SwitchPreference( + adapter = prefs.tintIconPackBackgrounds.getAdapter(), + label = "Tint with accent color", + ) } - }, - description = if (themedIconsAvailable.not()) { - stringResource(id = R.string.lawnicons_not_installed_description) - } else { - null - }, - ) + } + 1 -> { + val packageManager = context.packageManager + + PreferenceGroup { + val themedIconsAvailable = packageManager + .getThemedIconPacksInstalled(LocalContext.current) + .any { packageManager.isPackageInstalled(it) } || + packageManager + .isPackageInstalled(Constants.LAWNICONS_PACKAGE_NAME) + + if (themedIconsAvailable && themedIconsAdapter.state.value) { + IconPackGrid( + adapter = themedIconPackAdapter, + true, + ) + } + ListPreference( + enabled = themedIconsAvailable, + label = stringResource(id = R.string.themed_icon_title), + entries = ThemedIconsState.entries.map { + ListPreferenceEntry( + value = it, + label = { stringResource(id = it.labelResourceId) }, + ) + }.toPersistentList(), + value = ThemedIconsState.getForSettings( + themedIcons = themedIconsAdapter.state.value, + drawerThemedIcons = drawerThemedIconsEnabled, + ), + onValueChange = { + themedIconsAdapter.onChange(newValue = it.themedIcons) + drawerThemedIconsAdapter.onChange(newValue = it.drawerThemedIcons) + + iconPackAdapter.onChange(newValue = iconPackAdapter.state.value) + themedIconPackAdapter.onChange(newValue = themedIconPackAdapter.state.value) + }, + description = if (themedIconsAvailable.not()) { + stringResource(id = R.string.lawnicons_not_installed_description) + } else { + null + }, + ) + } + } + } } } } @@ -220,25 +256,21 @@ fun IconPackPreferences( @Composable fun IconPackGrid( adapter: PreferenceAdapter, - drawerThemedIcons: Boolean, isThemedIconPack: Boolean, modifier: Modifier = Modifier, ) { - val iconPacks by LocalPreferenceInteractor.current.iconPacks.collectAsStateWithLifecycle() - val themedIconPacks by LocalPreferenceInteractor.current.themedIconPacks.collectAsStateWithLifecycle() + val preferenceInteractor = LocalPreferenceInteractor.current + + val iconPacks by preferenceInteractor.iconPacks.collectAsStateWithLifecycle() + val themedIconPacks by preferenceInteractor.themedIconPacks.collectAsStateWithLifecycle() + val lazyListState = rememberLazyListState() val padding = 12.dp - var iconPacksLocal = iconPacks - val themedIconPacksName = themedIconPacks.map { it.name } - if (isThemedIconPack) { - iconPacksLocal = if (drawerThemedIcons) { - themedIconPacks - } else { - themedIconPacks.filter { it.packageName != "" } - } - } else if (drawerThemedIcons) { - iconPacksLocal = iconPacks.filter { it.packageName == "" || !themedIconPacksName.contains(it.name) } + val iconPacksLocal = if (isThemedIconPack) { + themedIconPacks.filter { it.packageName != "" } + } else { + iconPacks } val selectedPack = adapter.state.value @@ -260,7 +292,9 @@ fun IconPackGrid( state = lazyListState, horizontalArrangement = Arrangement.spacedBy(space = padding), contentPadding = PaddingValues(horizontal = padding), - modifier = Modifier.padding(bottom = 6.dp, top = 6.dp).fillMaxWidth(), + modifier = Modifier + .padding(bottom = 6.dp, top = 6.dp) + .fillMaxWidth(), ) { itemsIndexed(iconPacksLocal, { _, item -> item.packageName }) { index, item -> IconPackItem( @@ -307,7 +341,7 @@ fun IconPackItem( Surface( onClick = onClick, shape = MaterialTheme.shapes.large, - tonalElevation = if (selected) 2.dp else 0.dp, + color = if (selected) MaterialTheme.colorScheme.surfaceContainerHighest else Color.Transparent, modifier = modifier, ) { Column( diff --git a/platform_frameworks_libs_systemui b/platform_frameworks_libs_systemui index c6fa2f99fc5..a389d875832 160000 --- a/platform_frameworks_libs_systemui +++ b/platform_frameworks_libs_systemui @@ -1 +1 @@ -Subproject commit c6fa2f99fc53523c918d76b73d5bbb0e9e483043 +Subproject commit a389d8758325ad7ab87a7121446de9e8a820042c From 48097598e6c9ab4ec166a5f55b6e1e501a45fcac Mon Sep 17 00:00:00 2001 From: SuperDragonXD <70206496+SuperDragonXD@users.noreply.github.com> Date: Tue, 3 Sep 2024 20:13:37 +0800 Subject: [PATCH 07/15] `CONTRIBUTING.md`: Add link to the wiki --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 86dc50de48f..5cd6df6f05d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,6 +57,7 @@ Here are some contribution tips to help you get started: #### Additional documentation +- The Lawnchair Wiki ([at Github](https://github.com/LawnchairLauncher/lawnchair/wiki)) - Lawnchair Visual Guidelines ([README.md](/docs/assets/README.md)) - Lawnchair Quickstep Compat Lib ([README.md](compatLib/README.md)) - Lawnchair Preferences Components ([README.md](lawnchair/src/app/lawnchair/ui/preferences/components/README.md)) From 8233012554b0551d43c8f8400d8cb236163b5316 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 09:36:37 +0800 Subject: [PATCH 08/15] Update dependency com.airbnb.android:lottie to v6.5.2 (#4762) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 2ce2f651b8d..c2c55d9bc86 100644 --- a/build.gradle +++ b/build.gradle @@ -410,7 +410,7 @@ dependencies { // Persian Date implementation 'com.github.samanzamani:PersianDate:1.7.1' - implementation 'com.airbnb.android:lottie:6.5.1' + implementation 'com.airbnb.android:lottie:6.5.2' // Compose drag and drop library implementation 'sh.calvin.reorderable:reorderable:2.3.2' From 5b9cb951b58bc6c20a0255b16117b1daecac7dcc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 22:09:05 +0800 Subject: [PATCH 09/15] Update dependency com.android.tools:desugar_jdk_libs to v2.1.2 (#4763) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c2c55d9bc86..653c90e90cc 100644 --- a/build.gradle +++ b/build.gradle @@ -349,7 +349,7 @@ dependencies { implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell-14.jar') withQuickstepCompileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'framework-14.jar') - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.1' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.2' implementation 'androidx.profileinstaller:profileinstaller:1.3.1' baselineProfile projects.baselineProfile From 06a436bbfb2f9840faa047676a497178c7310827 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:09:49 +0800 Subject: [PATCH 10/15] Update dependency androidx.activity:activity-compose to v1.9.2 (#4765) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 653c90e90cc..fcaa644abab 100644 --- a/build.gradle +++ b/build.gradle @@ -377,7 +377,7 @@ dependencies { implementation 'androidx.compose.material3:material3:1.3.0-rc01' implementation 'androidx.compose.material3:material3-window-size-class:1.3.0-rc01' implementation "androidx.constraintlayout:constraintlayout:2.1.4" - implementation "androidx.activity:activity-compose:1.9.1" + implementation "androidx.activity:activity-compose:1.9.2" implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4" implementation "androidx.navigation:navigation-compose:2.8.0-rc01" implementation "androidx.palette:palette-ktx:1.0.0" From 14ae7717bfff3d9294c3d04dc194364878942cb6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:11:57 +0800 Subject: [PATCH 11/15] Update androidx.lifecycle to v2.8.5 (#4764) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- systemUnFold/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index fcaa644abab..d12ef31dd7d 100644 --- a/build.gradle +++ b/build.gradle @@ -378,7 +378,7 @@ dependencies { implementation 'androidx.compose.material3:material3-window-size-class:1.3.0-rc01' implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.activity:activity-compose:1.9.2" - implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4" + implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5" implementation "androidx.navigation:navigation-compose:2.8.0-rc01" implementation "androidx.palette:palette-ktx:1.0.0" implementation "androidx.slice:slice-core:1.1.0-alpha02" diff --git a/systemUnFold/build.gradle b/systemUnFold/build.gradle index f8d631b9930..74868d71ab7 100644 --- a/systemUnFold/build.gradle +++ b/systemUnFold/build.gradle @@ -40,6 +40,6 @@ dependencies { ksp "com.google.dagger:hilt-compiler:$daggerVersion" implementation "androidx.concurrent:concurrent-futures:1.2.0" - implementation "androidx.lifecycle:lifecycle-common:2.8.4" + implementation "androidx.lifecycle:lifecycle-common:2.8.5" implementation "androidx.dynamicanimation:dynamicanimation:1.0.0" } From d8f907fc17e66cec6121103cdf8761dbc6afb1ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 01:16:27 +0000 Subject: [PATCH 12/15] Update dependency androidx.compose.material3:material3 to v1.3.0 (#4766) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d12ef31dd7d..7917585c1b0 100644 --- a/build.gradle +++ b/build.gradle @@ -374,7 +374,7 @@ dependencies { implementation "androidx.compose.material:material-icons-extended" implementation "androidx.compose.material:material" implementation "androidx.compose.runtime:runtime-livedata" - implementation 'androidx.compose.material3:material3:1.3.0-rc01' + implementation 'androidx.compose.material3:material3:1.3.0' implementation 'androidx.compose.material3:material3-window-size-class:1.3.0-rc01' implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.activity:activity-compose:1.9.2" From 443f1a6a246c60a2192b7804306b0ed48ff21bf3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:22:56 +0800 Subject: [PATCH 13/15] Update dependency androidx.navigation:navigation-compose to v2.8.0 (#4768) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7917585c1b0..c000deac442 100644 --- a/build.gradle +++ b/build.gradle @@ -379,7 +379,7 @@ dependencies { implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.activity:activity-compose:1.9.2" implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5" - implementation "androidx.navigation:navigation-compose:2.8.0-rc01" + implementation "androidx.navigation:navigation-compose:2.8.0" implementation "androidx.palette:palette-ktx:1.0.0" implementation "androidx.slice:slice-core:1.1.0-alpha02" def accompanistVersion = '0.34.0' From ebfd5ba7799197c50e3cfe1a155e9e97b075bffe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:23:09 +0800 Subject: [PATCH 14/15] Update dependency androidx.compose.material3:material3-window-size-class to v1.3.0 (#4767) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c000deac442..4ed3b472553 100644 --- a/build.gradle +++ b/build.gradle @@ -375,7 +375,7 @@ dependencies { implementation "androidx.compose.material:material" implementation "androidx.compose.runtime:runtime-livedata" implementation 'androidx.compose.material3:material3:1.3.0' - implementation 'androidx.compose.material3:material3-window-size-class:1.3.0-rc01' + implementation 'androidx.compose.material3:material3-window-size-class:1.3.0' implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.activity:activity-compose:1.9.2" implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5" From 23f450e38d5862ce0f72990656cad10e455cac1c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:25:59 +0800 Subject: [PATCH 15/15] Update dependency androidx.compose:compose-bom to v2024.09.00 (#4769) * Update dependency androidx.compose:compose-bom to v2024.09.00 * Tweaks --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Goooler --- build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 4ed3b472553..c7aa6e4fd31 100644 --- a/build.gradle +++ b/build.gradle @@ -364,7 +364,7 @@ dependencies { implementation 'com.github.ChickenHook:RestrictionBypass:2.2' implementation 'dev.rikka.tools.refine:runtime:4.4.0' - implementation platform("androidx.compose:compose-bom:2024.08.00") + implementation platform("androidx.compose:compose-bom:2024.09.00") implementation "androidx.compose.ui:ui" implementation "androidx.compose.ui:ui-util" debugImplementation "androidx.compose.ui:ui-tooling" @@ -374,12 +374,12 @@ dependencies { implementation "androidx.compose.material:material-icons-extended" implementation "androidx.compose.material:material" implementation "androidx.compose.runtime:runtime-livedata" - implementation 'androidx.compose.material3:material3:1.3.0' - implementation 'androidx.compose.material3:material3-window-size-class:1.3.0' - implementation "androidx.constraintlayout:constraintlayout:2.1.4" + implementation 'androidx.compose.material3:material3' + implementation 'androidx.compose.material3:material3-window-size-class' implementation "androidx.activity:activity-compose:1.9.2" implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5" implementation "androidx.navigation:navigation-compose:2.8.0" + implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.palette:palette-ktx:1.0.0" implementation "androidx.slice:slice-core:1.1.0-alpha02" def accompanistVersion = '0.34.0'