From 73a220205fdff816367f9cb6af2c1f08014c5066 Mon Sep 17 00:00:00 2001
From: XorTroll
Date: Sun, 11 Aug 2024 21:54:06 +0200
Subject: [PATCH] Add basic lockscreen, verify support, fix several bugs
---
README.md | 17 +-
.../default-theme/Main/EntryIcon/Amiibo.xcf | Bin 0 -> 27412 bytes
.../default-theme/Main/OverIcon/Corrupted.xcf | Bin 0 -> 7459 bytes
.../default-theme/Main/OverIcon/Gamecard.xcf | Bin 0 -> 21617 bytes
.../Main/OverIcon/NeedsUpdate.xcf | Bin 0 -> 6739 bytes
.../Main/OverIcon/NotLaunchable.xcf | Bin 0 -> 8063 bytes
assets/orig/Empty.png | Bin 0 -> 1089 bytes
assets/orig/Update.png | Bin 0 -> 781 bytes
default-theme/ui/Main/EntryIcon/Amiibo.png | Bin 0 -> 7414 bytes
default-theme/ui/Main/OverIcon/Corrupted.png | Bin 0 -> 6815 bytes
default-theme/ui/Main/OverIcon/Gamecard.png | Bin 0 -> 7099 bytes
.../ui/Main/OverIcon/NeedsUpdate.png | Bin 0 -> 7259 bytes
.../ui/Main/OverIcon/NotLaunchable.png | Bin 0 -> 7974 bytes
default-theme/ui/UI.json | 42 +-
docs/udesigner.data | Bin 2603524 -> 2626318 bytes
docs/udesigner.js | 14 +-
docs/udesigner.wasm | Bin 1168430 -> 1168246 bytes
libs/uCommon/include/ul/cfg/cfg_Config.hpp | 31 +-
libs/uCommon/include/ul/menu/menu_Cache.hpp | 2 +-
libs/uCommon/include/ul/menu/menu_Entries.hpp | 50 +-
.../uCommon/include/ul/os/os_Applications.hpp | 10 +-
libs/uCommon/include/ul/smi/smi_Protocol.hpp | 30 +-
.../include/ul/system/system_Message.hpp | 2 +-
libs/uCommon/include/ul/ul_Result.hpp | 6 +-
libs/uCommon/include/ul/ul_Results.rc.hpp | 1 +
libs/uCommon/source/ul/menu/menu_Cache.cpp | 16 +-
libs/uCommon/source/ul/menu/menu_Entries.cpp | 229 +++-
libs/uCommon/source/ul/os/os_Applications.cpp | 19 +-
projects/uDesigner/source/main.cpp | 12 +-
.../ul/loader/loader_ProgramIdUtils.cpp | 2 +-
projects/uManager/source/main.cpp | 7 +
.../include/ul/menu/smi/smi_Commands.hpp | 65 ++
.../ul/menu/smi/smi_MenuMessageHandler.hpp | 2 +-
.../uMenu/include/ul/menu/ui/ui_Common.hpp | 102 +-
.../uMenu/include/ul/menu/ui/ui_EntryMenu.hpp | 34 +-
.../include/ul/menu/ui/ui_IMenuLayout.hpp | 13 +-
.../ul/menu/ui/ui_LockscreenMenuLayout.hpp | 26 +
.../include/ul/menu/ui/ui_MainMenuLayout.hpp | 20 +-
.../include/ul/menu/ui/ui_MenuApplication.hpp | 140 +--
.../uMenu/include/ul/menu/ui/ui_QuickMenu.hpp | 2 +-
.../ul/menu/ui/ui_SettingsMenuLayout.hpp | 55 +-
projects/uMenu/romfs/lang/en.json | 71 +-
projects/uMenu/romfs/lang/es.json | 69 +-
projects/uMenu/romfs/lang/it.json | 69 +-
projects/uMenu/romfs/lang/ko.json | 69 +-
projects/uMenu/romfs/lang/pt-BR.json | 71 +-
projects/uMenu/source/main.cpp | 154 ++-
.../ul/menu/am/am_LibnxLibappletWrap.cpp | 2 +-
.../uMenu/source/ul/menu/ui/ui_Common.cpp | 37 +-
.../uMenu/source/ul/menu/ui/ui_EntryMenu.cpp | 208 +++-
.../source/ul/menu/ui/ui_IMenuLayout.cpp | 115 +-
.../uMenu/source/ul/menu/ui/ui_InputBar.cpp | 1 -
.../ul/menu/ui/ui_LockscreenMenuLayout.cpp | 76 ++
.../source/ul/menu/ui/ui_MainMenuLayout.cpp | 238 ++--
.../source/ul/menu/ui/ui_MenuApplication.cpp | 90 +-
.../uMenu/source/ul/menu/ui/ui_QuickMenu.cpp | 2 +-
.../ul/menu/ui/ui_SettingsMenuLayout.cpp | 1004 ++++++++++++-----
.../ul/menu/ui/ui_StartupMenuLayout.cpp | 5 +-
.../source/ul/menu/ui/ui_ThemesMenuLayout.cpp | 21 +-
projects/uSystem/source/main.cpp | 465 ++++++--
.../source/ul/system/app/app_Application.cpp | 92 +-
.../source/ul/system/la/la_LibraryApplet.cpp | 50 +-
.../ul/system/sf/sf_IPrivateService.cpp | 2 +-
63 files changed, 2974 insertions(+), 886 deletions(-)
create mode 100644 assets/default-theme/Main/EntryIcon/Amiibo.xcf
create mode 100644 assets/default-theme/Main/OverIcon/Corrupted.xcf
create mode 100644 assets/default-theme/Main/OverIcon/Gamecard.xcf
create mode 100644 assets/default-theme/Main/OverIcon/NeedsUpdate.xcf
create mode 100644 assets/default-theme/Main/OverIcon/NotLaunchable.xcf
create mode 100644 assets/orig/Empty.png
create mode 100644 assets/orig/Update.png
create mode 100644 default-theme/ui/Main/EntryIcon/Amiibo.png
create mode 100644 default-theme/ui/Main/OverIcon/Corrupted.png
create mode 100644 default-theme/ui/Main/OverIcon/Gamecard.png
create mode 100644 default-theme/ui/Main/OverIcon/NeedsUpdate.png
create mode 100644 default-theme/ui/Main/OverIcon/NotLaunchable.png
create mode 100644 projects/uMenu/include/ul/menu/ui/ui_LockscreenMenuLayout.hpp
create mode 100644 projects/uMenu/source/ul/menu/ui/ui_LockscreenMenuLayout.cpp
diff --git a/README.md b/README.md
index 2c8abc5..b8d3a1f 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@
-### Want to find **themes** for uLaunch? Check the [r/uLaunchThemes subreddit](https://www.reddit.com/r/uLaunchThemes/) or the [Discord server](https://discord.gg/3KpFyaH)!
+### Want to find **themes** for uLaunch? Check the `ulaunch-themes` channel on our [Discord server](https://discord.gg/3KpFyaH)!
### Want to make your own uLaunch **themes**? Check our [web theme editor](https://xortroll.github.io/uLaunch/) or the [wiki](https://github.com/XorTroll/uLaunch/wiki)!
@@ -56,6 +56,7 @@
- [Installing uLaunch](#installing-ulaunch)
- [Removing uLaunch](#removing-ulaunch)
- [FAQ](#faq)
+- [Translating](#translating)
- [Components](#components)
- [uSystem](#usystem)
- [uMenu](#umenu)
@@ -240,6 +241,18 @@ List of not implemented official HOME menu features:
- Aside from the two excuses above, there is always room for further optimizations in uLaunch's code. Feel free to submit any issues of excessive lag/slowdowns, I'll do my best to improve it :)
+## Translating
+
+Translations for uLaunch are always welcome!
+
+The files to be translated are [uMenu translations](https://github.com/XorTroll/uLaunch/blob/unew/projects/uMenu/romfs/lang/en.json) and [uManager translations](https://github.com/XorTroll/uLaunch/blob/unew/projects/uManager/romfs/lang/en.json). They are pretty straightforward to understand, just JSON files with English sentences meant to be translated to **any language officially supported by the Nintendo Switch**.
+
+Character `\n` is a new-line escape (indicates a new line) and must remain unchanged. Punctuation marks (mainly dots at the end of sentences, questions, double dots) must be respected, with perhaphs the exception of commas in the middle of sentences.
+
+Feel free to open pull requests for translations, but it's better to keep contact with me through [Discord](https://discord.gg/3KpFyaH).
+
+As I work on new features and new strings are needed, I will manually add them as English on other language files to keep support.
+
## Components
### uSystem
@@ -354,6 +367,6 @@ In order to only build a certain subproject, you can run `make` plus the subproj
- Several scene developers for their help with small issues or features.
-- uMenu/uManager translations: [DDinghoya](https://github.com/DDinghoya) for Korean, [NedcloarBR](https://github.com/NedcloarBR) for Brazilian Portuguese
+- uMenu/uManager translations: [DDinghoya](https://github.com/DDinghoya) for Korean, [NedcloarBR](https://github.com/NedcloarBR) for Brazilian Portuguese, [Gabriele73](https://github.com/Gabriele73) for Italian
- Everyone from my Discord and other places whose suggestions made this project a little bit better! Specially all the testers for being essential in reporting bugs and helping a lot with the project's development <3
diff --git a/assets/default-theme/Main/EntryIcon/Amiibo.xcf b/assets/default-theme/Main/EntryIcon/Amiibo.xcf
new file mode 100644
index 0000000000000000000000000000000000000000..bf04931f0f86281aeef0ead9a63fca27e9facaca
GIT binary patch
literal 27412
zcmd_TcbrtmmG^zSZ|9lr0frm|4l4`W@;a`wAFsoDy=(7UZY0@j*?KG_!3C5M%7F`r
zAOy+?goFqJL=Z>OzN(Bzo+i)riYc^ef;^nf4vX-^i}qj
z{@UZN8+-J1?#yw&d&7hM9_w>gmk00bNa(kYBY4m!Mg-%h`F&2}|I6hsub!Xa
zk|*xR39Qc-#5)$m69w@u1##&vDM$Vl^UKAP1@RK%QeW<0l!)+2`TyX@39K(lT=S3c
z3kC7q(8xU#B>5M7*bC)v{vG)B2Pb*7o>D&lddgt*|K)i}+u!s+`)7Xmdq2Fx5B>LE
zG{#G}`Mei?wT%~k)2II=?4^I}=l{#|Ub;t_AJ%wbPoJ-+3~TeRe=|!L{H%hw;Qw>l
z{+f=Zzo|>oH|o-KSFO9XPG1jFdvpIc=ggZoZBVyp`inY}&fGrZKwU&BUG+0A!_(w`$+D6NK^vsEk|RO;ej8!VL0zE-bF(pgnIGMMf{S`Dr%O=oHz
zPm{9K>W|c=ZY5q^P+ctDStpuS*O~SdR@Yev(td>{US*wWp?a;pxiVFCrg>78GF5e!
zivM_~mCBagO4*^b{-BLgbG_(UqLu&Enbzq3?UbHkVzb(1^&S&jMXc7uwzkijaNGZJ
znDO~PJKWkn(@_V?wA8${ePai0m+6ziwBFLbp@R;W@qk-W4f=edp}mflsr2Sly?VYn
zUf)jZld&>gPIA~DNhU}n>(sF6@w#@pxU9G?9thO6C8o>cwc1JsBp$2P!ID6G9WRSr
zX&&fA`TAtErbVE$)+d5xdPAh9lsGL}AFgis-(sPvRvxx4RGAE9tx78tXsy-s84<~{
zHgvft5J;=PoDW_O23l!7BQ{-6<4M-omx=-~Y_l%~0{vx}ISez0VdgN*dbVFwlC39QDcto18(d
zF28Jpg`Dh!28zz=x-mhAf##@}>r0(X?XwOk+fnyYTeepp62%4e#T-Uj)A|@`P3mK$
zIev{LUTustM@?vGu9eiqNHcY5Qx}7ay3V!I*;9QWg&e)0jaCc2=y{^m_wkk;J(6CW
zZDJoX<~}vC^~CB-Y-f9A!d?Hzp^QvN?=mCvGebt2rG1_bI%EYMy|aCWac1#&J5w2b
zF_B@MS<2awYE-Y+#v2(}7SU1rC0b-98`P*d@dieiRouV`YiO&JR=mL*)pU51pK8M^S8
z45=%-UXQp8DK|TKU7ZZ6-NQrf=SZvZml#kk1FCYo4H9y*GZ|2BR@YAnx(p~d8cN+v
z-58gY?dm~oTs4qraY0=%m*Ld3E{0Q+x;pEq)WuMedKgNsnkhp`YGEjuTC}N!(c`K?
z7Z^%s20{wCdKu$qg%`a@wB{LJudCl+D9tyqB@Cd$CbpGWy@~BLL&(+p{=W+uN}aUS
zOxYc@zRvCxlz5iG)G0tLmDQDrEQ6_&a!IJE_3>TT)JCdAqM3P0Fk{LB=VLT&I
z-LW{skjgNmI>j^IkkTEBI>j>HpwidHI>j1|+UlgQi#8gybzQKN-W_Q)L(A2>!;NM@
zNvt6k3pJRb1r}h@N~{>IxiOlF=2YCcP)bSJC6!-I#kK9)dCJM3ttJ6oC1Z>D!ARl2je{xZ#&
z-GV^>sZ@8hRN`<#H(n__az1O5)PIQUnv*@+1+3UNUdw9T+EQO^#>8PoOsi$BB38Cr
zy>4aIM9cO04bz6-`@0*PQEbZ^p5@bKF-twD``b6@II{%(`xNs8-K|Ah-`Z8TPJc;9
z({;DM^1+AmX1&}ymJVy3z7FG?={EjQ27$Y{@%bp6K^;spKGN#BiejzGM@7>CEJr(G
zoS#uDp0<_RdV3_TG0tuIWmhZe2`F{)uHtlSG2b6iWA@e~w-lvYi2)zcI;|JRm;(gU
zEyV^gM=5B9?p2&FrMU&IC{4GZ)vP_S}Cu}FaVFzt)jJ3b-hyQ6l6WItTHhQ_>v!8{^|H?r!jqZ1&0@cl<8xm<-^4(UALAi1{*#KIvF5b)t0M>6YtJ$zIRUZn3>h;Unbsy}T=)#>N#bf`|9>lTL+NJkLkSe^VWHY6Pg)#{P)
zw9-})(V{@SHWmoh>J{;HDiAPJBpr;_#>M!Yj-@{zh+Iho0yTOVbz7vcHmYW6B>lxe
zxTZLu%fjh@pzKg}GN1>B($@z}>|;Cqr9h}E#eC<6fL)mi=qG~dL?C!sD&^%_iGY0>
zbe^F0C4MFhGcQ80{CSb?-NMm*5Gx0eWIf#{mSUH*A(~hDjvX{1w
zjlvm}$w@B+%TceLMzBtek2(mJgJ3zCC5U<4K}GF+FybIs4ua*V4a|}Ph~Oi|4szwF
zB~+R1bF5F1gIqa!bZbX1k5OpQL9Pg!G($gG>>yW#%_wz{t6s5u1DcZuxuW1KMsDYW
z%^c*)(HmMwoh1%(<>)0XwK~?P#6hkcH9E_T(Nq}*;7NL&VQN|bWXefVaM;l^+G@SD
z#6hwsnkF41T`p;OpUAdVs_`Ds2jUKrCH(W+D?JQkrXW1|5z?bc?@KsHmZKhP1bCe}
zVcq?42g#B=b2@mCnl6xE(cv7pC*dGnj(W7wLvUyAjXOx!U1a^Bqe70dda59P&Vxvy
zNLLndc91SdJ%nH)U0HSIp148utPWYEE2}5R9i+>9wEaG|GeM7&t8bkLsOmm(gXozZ
z$z^Bs#JGcWIr=UhY;Q+o89B=6tqJ;@eD`0$y4F=C5ojCH>@CB9rcO&W2DYUd5w1p*
z0kdb`&Ti&-QvvlDgsVYsN-#Po;a=o3TXX+bJP_Vps6k!q6^9aVjBqs=;W8wIt3kgW
zcRb;0K)4zZt_Hn6?jT%deu!`}W6WCh=VK1yRF81g=~2`z!c~WG)vbv*2v;4#bvo=A
z;i^NpUJN-1S1qv>wu5lhB3ur_bpbB7FeBCWv#K~2wMV$5yX+|pQ>TQVA>ER`AGfJlss}ZQOfhBH<
zW&%caYO)B`S^;>70p}2?hLI^3ff^8Y^*jV-MYQxb>oc@d_}AX+#i?jlV6
z;azNmhdhFKh3n&Bli@m$a1kgM%Lp)qTI&bLUF?#p7a=DCsJR08*^cGF{RtOwa@BJp
zPOxQF-7|3)aT-L09~*H}`U648*`JDz!YAUSkYN{ba@DhBMVxT<2gMDdKkA?mC#7e{
z-H0>+;WgxohZQOY1n8NDs;B1&dnj3_Zv&RUI^VlKkdh$uDc
zx2ao1sS#0X+#GQcrA9>QLfAE;)QAAR6>kuMHI&e{
z5NztZmA3wYrGB_GsDEf>BH#YQ@4H!b&3^aDv%~w}l8RY%t!^Lu%5(SqB;4H69hzC0
zz>jCtF`up)**0WluOBDz)6ab_ZmE}#+Q+iBBU>k}Y_oCMxUN6TYHhIhl{jk!_l2UC
zo{s=m{Cgl_skYmSbz@_{$QXr}rzS-rmj0N@Y~v#olh~BfD!Zjb>(_x7G6Pl*#Vq~G
z=e52q48XiS`|lA;-BAB|t&YS)mR`i9{X{cpW4@^M9Rd_-{cOlm(PIFMJwTmK+RUm|
zl!{;ekN>@s>G!f*(o;yQb5QhRMCv~Yf6Ykm7qnE1!!g~knq|$v7+BO7e3l7>w*Xvf
zMx+FL+C8_3217qpNZhZ$nc1w(j
zWQ=7rcfg%tCVnj7-M{!mV^C+ZXE%(Dg2*g=+^);EZn$#ry*txp(wDt^V}|EHF(T^C
z@7_4a%dJ~-TU6%YBQB#2)v_paHCa&Gl+^l6glKkD11&=PZR-{xkcndEj|ZfELRC-K
zHDm6zf(f;xw$j+JOxbU4nbt2b#p*_ULUXWUzu~3O@(mBkQeZ*DTVK=YkgN>m8eN)J
zxdw-rz~>r_pKud1cxkXYL*t2$YCxTCV|JW*E}f>m>W>Fdp3FCySUz3XT23aX2(`xW4GVP|EiRtuOsyT97daTOjK}7XsL;R=QF=-b=?aQoy+eY-lYE
zFYxHpU~;Ra_V@P{^$qog*e6e`1G(=XNU8;U%LQDc_OX;tCFT2*pdnAY}v=>
zd2GBWc`kKxMOZhe6RQ`jJ55{ED@C|QA${dyI{nnLbrWw+zn7?c6cAwfVDAto>tRDZ@i-YN5q9Ckr>|4o#rufvAdJ3q=$QN?uXfcz}#8WVRryOod=6^9tz`Q>DizZ$s`p#Wf@YFQRlb39tFXN>@{^y6@#qy$oxkfY;@G~
zP$pl%KGd(epTUAFS1I;kbrf$ymch64e$Qe7ob32Umff)ryLv?kLQdws!_qoLxhH{vr8jNjl@(nI^RIahu
zhJ0i3b??RtmBy;GG@ST&k?dXK7QRO6zQY&>*=caRwxSo-LfVM`!WvxAJdf&KA+}*G
z4s;o`>8SS0i`O*r<{FkvFGHpbmwt~YD&=obm!2|DV$$pY~iRQ3wT>3anwP!7WmGHnE}BGW#~
znc+B_sOI?n&SX>})$p4Q&op>Xk>^vwm88pPSoz%$(M{RxQIu|D%^9%_UY6xlbNC+T
z4Mo!%M>#I`1EF{HCV3uF^!Lz-Yf!(JPtfeFy3mMDu7hDLzrLkf4}-qkSO!P+kqnF@
z{T|vlb51Nnc`ZYNH>7z%x(YJmP(OoZ80$gV0#MVd-Xut5V|_bnjyr
zE<4Wf)thJZb|&RmDeQSx>rLm2L%k2>R6mfq*T6AG3d41tlo3y@H^ug3*pTIclRR7X
z+z05eR}a#2Fd85GjcPFr>)Fmi3?%0RV#FIyl~-aIF2aRjaI#PC6vJ@pjR;b}aGZG=
z!_csGlQ#??Hnq^=-bsU^jKE0u5}8$#dlx%;Ox`p=3bRfj
zQm(7z5qbK9UX!RTC@L=^n4zOB4vKl8y;6%bRX=JQa;bw#B!+%-%L1SCY)+%SW_G`p)nH$oR|rX
znaCr`axfDbGf@a(CU}NxpoqpIcwATX3C-}-TM}>XGCM?qK*8SwrAdbXkV*wSZR2)wxLOLTVK;uY=fI`YN@Mo&BQk3o5?!QAU5cvnd$;fCO!k(p!ec%
z<8-S*$7I0;DV0{D7B;hfu@%}L?1Fg=HQ=<^g{iCuRX{`2XDU~161&j2dQJsmX}H*D
zKtJ)Q)v|Om;Ii0-(XP7?ww10s47=bx`)RQY8yB8JNqjPOgV=?)q10121?vWOuHGVi
zKj^9pCJV$@QP}HTmn|-8fB^-gw}RJ@=^*9Ib=~b$b8@gd3q?pZ{62zb4!mc`bC7Ty
z=?WTlN)||}#4a31Kl1U9u?rU_@w#VThT}|v6`E?Ac5IK>h0|*>
z%d#jX&!z@o4;oKxU9;ny*oEngw*}aRO4l8`amU;N?yMXug}o_uVH?#k8c-M5g_lWe
z%5gA6W{F)mzycgb!Bs=bd9a#AL+GuEN9Z=HG^<7L)QC~o3LE+ow*6uf&Ya@Ct4r|6
zV9So&D<li>0f70?1KXA%sANpSNf0mP;j55XLe4tp{>JIT6d
z-WC`fH-W(?PsSr3@mi9%1V$<78g#-Du>&+xik9{<*@xKDMdJ}-1w3@3hl&jVh9oAS
z2}xGmFaV!{(Zge+b4}qBQU9)J{U|F`vjag(eN};#MFnoBG;U$(dx3`E|>Obnyy-&jMpwI9XmJTW5MeNpe7BxGI
zT71f<&!+%G4_eRTCf>>$3eKfJh2D?+IeKl-8lf)kS+nyp3!%Fs*d8JjwlB*