From 5c301353ecfd2c4b3a3c47dd774d3439a07051c4 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 20 Dec 2024 10:38:06 +0400 Subject: [PATCH] Improve verified badge display. --- Telegram/Resources/art/verified_bg.webp | Bin 0 -> 1036 bytes Telegram/Resources/art/verified_fg.webp | Bin 0 -> 500 bytes .../icons/dialogs/dialogs_verified_check.png | Bin 248 -> 1436 bytes .../dialogs/dialogs_verified_check@2x.png | Bin 329 -> 1494 bytes .../dialogs/dialogs_verified_check@3x.png | Bin 433 -> 1550 bytes .../icons/dialogs/dialogs_verified_star.png | Bin 398 -> 1553 bytes .../dialogs/dialogs_verified_star@2x.png | Bin 672 -> 1778 bytes .../dialogs/dialogs_verified_star@3x.png | Bin 1001 -> 1995 bytes Telegram/Resources/qrc/telegram/telegram.qrc | 2 ++ Telegram/SourceFiles/boxes/peer_list_box.cpp | 3 -- .../chat_helpers/stickers_lottie.cpp | 31 +++++++++++------- .../chat_helpers/stickers_lottie.h | 4 +++ Telegram/SourceFiles/data/data_session.cpp | 16 ++++++--- Telegram/SourceFiles/dialogs/dialogs.style | 13 +------- .../dialogs/dialogs_inner_widget.cpp | 5 --- .../SourceFiles/dialogs/ui/dialogs_layout.cpp | 5 --- .../view/history_view_top_bar_widget.cpp | 1 - Telegram/SourceFiles/info/info.style | 2 -- .../info/profile/info_profile_badge.cpp | 23 +++++++------ .../info/profile/info_profile_badge.h | 4 +-- .../info/profile/info_profile_cover.cpp | 6 ++-- Telegram/SourceFiles/settings/settings.style | 4 --- 22 files changed, 55 insertions(+), 64 deletions(-) create mode 100644 Telegram/Resources/art/verified_bg.webp create mode 100644 Telegram/Resources/art/verified_fg.webp diff --git a/Telegram/Resources/art/verified_bg.webp b/Telegram/Resources/art/verified_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..f08059f45501358a219e991bb3b733eb70cca537 GIT binary patch literal 1036 zcmV+n1oQh+Nk&El1ONb6MM6+kP&il$0000G0001g004gg06|PpNS6Zu01=?VY?~WN zD)56slPnb}V$_n+q%%C^G$9L8Guw(VJSDRPoLk2xyN0O^q zI=zcxMvvyw{Jr`q>gxh{vZBr3MH=7*yK-gP7FnH9_$Q!#{G~K))q;;!?W!~#>XobU zFr$?AvGJ2lp-hMJ5<`l8Y<3CDxhKd+2~#noZJ0Kk7Om)ba~#Yaau1*iJ_T~U$?ZJbpr zpI?f`8FdAMlONp|r7|vSRTa0=h=UU}{HV|dMfLNg8n|%u+tOgEi!=cHSgs7BGGX@Z zFAb{qL+jXCgR7VZ%V2l`8JTj+=&p~DDYL+~;RS3Km}P`bBU4O+Z4g$t+z*NM-cP8g zl-oz50+ajusRMnP!lOLfM;wIu3Lf{ziIeQA!lG<=ZqRrW34Q+vbpwW*6%OTsPaI{5 z#6e6`SLmApho6rUS0UQO;mLkyXpF@XXZlVG99CjySVQ7aoTZMyc&>1$vYI3GO<{1< zt(dyuH#HJQW!wpfHw~IU?{|WKuJNc+?m{9BqAL-#kFOY1Gv7Kms&RQzw~i+U*J7Gl zM#nQ`Z^w!CG*y_aob>D?!GhFS=%3H} z#6j@SKB;ghZ=LkP1wy9;LWX_s^`K^VVxt8_*ec@l*+j}oVWhi7k9 zZpbgEcX>b%guY!1LOUQX1${uUWM?<+6R!cmlqH32o39aM`BiO~yad>gVPTd2G9c)} zN6MyRx(^=`t!R66J`M=+&y_u8;t_=DrOF-=0Y(rN_OwER^7t)#@)}NjL3g7o@$-`> zD@CQdk%@;BjaRxT?=MUr-G3xLo3&JD`lmX@iTFv;NqMVr#HWN1LTho>syg}kO^+ZA zwFTKm-9J0-QPP(3{pm`(m9suU8-m9DLY8H5|GoWvq)Q%UtwKt`I!J6J{6P`GyK;j%8f6ggI;bLfQbHt@ zPLT*AIx7GFh9ZPKFK;lfEc^F}xT1#oG*+m*pL91^`Ur+7otK zMb_*hj$YnWG5_AE{>J?ieq2d(MHD#(th`~{beK$xlb9*$jmks-gj!XY%v2PhHT<8z@a16(*y)Q1SHg28d%;beLkH@&-3fghRrHB+-Mi2k07EbC5XAmfnnFjg?<#K~hFE-B&qWMSM@~IrtXh?c7_ep&%gSUy zz(+U`1KvLWzYw2l{DSd zOj7}bl5|5sI!c&~4H;~f(AbZJ&qI_lk{WLbO9oZ@HUv>d8zuukfycBCi8MpiQ=57~ zmu9%A6*qgrU8=Dr3s@);z#17gYH-1m2LB3mcKw+E@U7!yGB(vE2r?0gm{|rh1`gR2 zom9IK)8<*iTQOxb%b@01YE6WvV@3pztDHB7k(wK-jLf`hm}q>#4_)3)4sUqDY$BK? zr(sicL(wOzhKWrGTk)tqfpxtPb-3$$-3?F(uTiQRMVvQrzVI0olEx*1YzcNL_IMl+ zu-FesooP{6mr>?NJk6Ut2Em|RuBV0L;7XVX5>i&NEg6hfec#2kT+zsTx~EW9D=0N@ zf+=LOKo!p@GBU{u1<&(_?`=+7X=sP<-S2#VF7~0eNORjfX~m^Efy;gZ(drIL;yk-N zST%jrO9M=3n%9J^Ov(+Q;>aw!Q1u5w{hF;eXG%SFSw1_VNEGPi|bt=*8OFvF^K9aIojMThi65 j>)rRSp}&lNDDRMdd?_FLCwh7>?VpvIS^MFsOE*6OFI&%= literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9Q!2~3yr0n1ZQjEnx?oJHr&dIz4a$Hg)JkxxA z8MJ_G4hF{dOa>N^5+IfWVg?501&j>LK$;OGwtxvPE3|+a&K3YEe31Fj6i6j`x;Tbt zh$bgUu$J&JiiwHU*Vn75sR_Mdc@??0>g)IS_g!6FII@{nv1v8EE-WrqUUU5R?caZY zf9K=l6R7UE#B4IPzyJM{lav4d`^&tmH^Nrn_=nG*&(AhLfAVDKhTCm3xfq^CE2%I2 RKIbpUR!>(ymvv4FO#p^2N7n!V diff --git a/Telegram/Resources/icons/dialogs/dialogs_verified_check@2x.png b/Telegram/Resources/icons/dialogs/dialogs_verified_check@2x.png index 677770111ab2e3e0cb55a932ecf0063b050ad9f5..e360526c72a6fdddd27599fa844b6e074cdb3cf8 100644 GIT binary patch literal 1494 zcmbVMONbmr7;YC2n@B(rbP*4g-ixB$)m<~QGhIm=H#4gd6H_0{*k z|Lx_a=MNox?4Y73hicWziku%$$Mlr^-{RFvayk%IUrrR|frry^pK|Wq8AZAOSHHd{ z)|?kH<$+FI-e7t^h$LE3jvnhrgtnOg4c7ESTfOT&<{Fcg8Q~QfdM~H* zxCu?mvY>$=LYhQq$siP@uZ79%grUL`8vBv(c?eQQ(%@ZTt5VgG4MCLAhRN7Z(qphs zB53MHYSR$t(hL`MTuWh2K%5gyrxw*i@1=(rga-sCXGu3 zxhvSE*yC|Pq{V(fnhZu^Qw5nHahZ2`ECoyLaziZ~2iL+xkdU%k#a5-!y6?Lfc@{DY z4W#8gqo~c%Jk>0(;c2K?GK#3g8YcB7?<<^k)6h=dyZ`h3OR+C&i*)XpC#|?NCveqI zWV8n3k~qO$9j`h*7^VRxG)-??rD<=fmURe7cZyovc?CJ8=Bd1EIetKkmvsSwPX5ISZ{H5Z>)h};c-CO^d z?hJ00r>74a7k1;<&=uv(hlL&UlW(lQ-g$3#>dd#FSWd1XfVd9i(~OD?~0vVHoY)#KCcy&JFp_zV18IrrPv`-L_+oOa&Y!cyg<KVxkL}LK?XK_%bTC6rZcMKX3eQ@vJF9zy4g?mfI1bKQ%}qIpT(br>6YmX{j&Y zJ5BjkyMNtl3%+xe%7RPFsyP_l6prm!_u5wQt-Wm||E0{e*=rxnea^`)!fBIy=B+7D zpwyl@pFe*+@S=R_l&xhm&irGx3TD*$5Y(t|`>1&fWwm)E)Ejyxn1M~7Ly$o~H zuXb)KoH8E+h&TeYNFEDy$D?S5*)>%6AS&aK&Eul&>fGw74>;DgbZ*~(DVg2~F4<$V zKHfV!kwdd(q*>h1L+q|Ppac#MAzODUZUE{!*W?9s9sL$Lwh0N#IyW2{WT(tYc7*tt z)dZPGlBBSzCcqR-CA8E7tRg8%QA&ui!b>Vh4gw{?wl9vF^Q{8N8jrM%(J!4Vg`o#T zu~w@IwS++Yq9|*cCQ6E^C_F{*LBkDUop*!24ugRMjv#O(TIt4=!vo*MVgvG3&l9E>Q|b^EhOR!cCZ@;6f4JAuS7x;l*qqO$Jd6xXda8 zf~>Ij?z3Hs)PnwXC$IrStaDM?cuD4^!JMoBg{DotUrGW=YC%n6*@ebBC{3@d3h}97>RqDgg=vC}8-&nBIAiD> z6)o7d1+ZE`Sb~_>5^|CsNG1`lA(Z3`gDI%0DGTNcEfw^ZQ5I~ za>G1P$3-;(#_WJ*tI=+Wy?DC4s@QC^3;;w?dFvdC@`^34{oB6b2()NxB}_^GBi$`n zKnh_E`gpiVqjmjy5~=rM)QK%2;y*Pu_ttf72Tn&pw2X%k{fNgHcIoW$>5y8;>T7hs zeV8$Zb5nCaUzE2$&)#+j?l`*Xx9valO#e7>(D?ej?t7NHtliA?-;F+*UI>3dO9zhqH2%i3E8<@(>G>DGywKgda^+la z*J}Rg>ucX0*fPYPdF%L{-=A5%)cxHvr)N^12WJm|_WsGmJN^5+IfWVg?501&j>LK$;OGwtxvPYqo$H&NcuktYN+l)X6CA>Eaj? z!TENIBcF?dfUCN*$|I(*2qA0tBj-%#G%#CqwQ{I$Ncp!!SkpPl*!XUDzT#5Rzn|(> z$@9mVI54B21xFiR?~0sOId6ID_usycE#CdEyS=SYX0gVu{}0Z~KA63Xv*y*Q&ws=o zRNnr0l8ngzDY-Qspii^^Q|1O>|Leh%31%}=5+WBe%^l$%{34G7d2d(QuEzs z;(8aCy*k}77oX+3yD%0{^1SBuLGzloSMv`&&DqN?8p|8qFOC&yoh3KNWn1oi>7EGA nCI9rxYww+7foUl0RKF%@P8yfY zu>}|JSs2gh3$waxu*18+P!&=I7WNUST4mdVRfVnVg>)ZY^DL-C{8@z^2@Qg2Z4#u3 zi-8;$Ib9GWkd)(S01YJMfnFd9QXelQcv0enBo0?ew9H;vJg!j^pB zfjl1sK|DyriCg4FS(bT0;w6cr2+ph7KB{uI*WJ>fVo!HX$2W-$LX9X-D!#%}R~sBG zCsJ#B%{bAB@m1vTVq6G0)q#c{;hc(Ft{XRW9+$C&ZQr9ZVF(_qH-d}Ql5 zqbe*V9XCw__7`Mi6pSP{D99owCHnH*AeLp0Ugd>^SV-pcMoV5LdL>M4OWydO@)NE} zdkd9sTTj?=VNJj>)1%p{HCtj2o@?&PCa9MIM0!}>3af{C#gswg+Pv)uG~|O4rb_=K z-3^#W3VwiGJW{05x^+GA)O$Yc#0C-mpB(G|)^%+QPDeqwjfN0CL}LuwbauIPNPWI_ zXpIiIOBr<}*R%P>^WvdJp@UidrY-fwSD?gC|M}6jrRtqaUFy)%E7#^r-^u5*v0a~4w7=fI;$HrCV(;Ng zbF0DEf6R5=ufMgj^Xh8l!Jqd{Or_dt#}C}If2C8uw&C6%4tbj%I*ea`;KZ`N^5+IfWVg?501&j>LK$;OGwtxvPE3|+a&K3YEe31Fj6iEH>ba4#P z5Zyb`p3fyf;8?1;P-oa8b*`l@OD}1-JZ4fk_lU=8s+)}C1y746ucr)No%XvoZ=Co& z=|*1s*S-1s?)w-WHuzuTUovA^rspJ&NhUnat5zjS>{=Hsa@6L0#=q=osXwjuDsa4$ zxV_E)#PJuq`~+B9u9WUwr8VW|*+QAc8jmXHHGQ_(pV&9){crwBt6$Ihv#2We`nKGa zlXOnIpVq!;!fSBFBv53f*$wuSOERlWTfXR?UbM{jatrT|ryF&+&0Bv@*y}krb!O(Q z3h5o1ciMg4OG(IB+_C6W+@-_)X6^gx3%9pPwiU7z94wskys~T2o7Cfl3A`y^c-QV# U3-y%Xm<n z&-eHDwp5fao|G{&gCK}WKCh<|&pF0OPs8tPviA_4?pM64G=g|wsxih9Z?$C;#61_q zK($`&F9WdU^GD#6vY+D*CCw@qFPaMQN!H_C{h$$)XIE6<5%1$EP9(& zRMlJ_;G64sr$7}Ik_B;q38F}cWIP&?G!S=D30{EL#%G!$6A-=5MHL$Y$!dQE>6TSQ zI?b$!XBdvOJI&ArZ5F3(0m(6(m1Zn7%b6HEusQ%|A(Ib<#i>FFRC=CF3d1`W71nhH z&~z*oGsi4uS*@j6r_)I@9L;eij4)|Uk`Ci0Nt->!;6WO%ii$4E5@|5PpxmIlD6HzJ z4N)aUD``nTVUN*qsL-sLF>Fcz1wMsS8q`QaxWLmWf}%*$HH>9bSS2j$vKE&Ag*tV7 ziva9fzdt48wz@>4DG{1p(umDSI^?!!EzqPOx)Nz}gUX|lMy%#+!x{y+RRnce4ajn2 zEK(I?DwABkndQj5m7*lbG3|+)ZXgfTk&80IW@1!AfE#acMB9JjR19cN3g(ykgP@_wpfh9T0|>SEk&mM2;6c+R-Z0G6O51npLfiLvDKCWp<+nu69~$Yi&19Aw!LvOzR<-y`!4 zMrgfl7WB z@7e>Sw6QS4r2i4_QJ5x&^cYl8aV_@No%4yt+S5iQjv7M$)5gTvO;tMv$F0CvrkW7m zq}mvgaPLxalPaCL$43z3KJCD|dL^z5~k!2ih)wHmsfNicK!* zV_xbD2h7`^UNbn-^qn<&x)p8bALg1 z83g;coXj3<>>glF580aM&I#>3HPm>a>hMUx^5x^hyZcAZchp*Bn@9(D~C&Sh? z6E<(yP(N_w{WBLDyVsLf&xzR&pWWjw7WTjQ!}8}>KUd9XIoc+_2s+Q~>iX#Ci?x>z zX1!TgHZXF7sBB*`_3F}vonH@5`SOeKVcQi@cI;SaZ*fs0$o->8yU!b+^=Hk_vcHVK OlCPxP)3NB8^?w67yKhSX literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8j!2~3~e)hcyq!^2X+?^QKos)S9^$lbboT*cGGQm(X_tRs41?}cd8fMDc|Cl}57Dw_Jbxh)6lavTB zdQrQ7X|+}CyPu`6*KWVJ`%dw>?>6V3&v`!Qx6SpWpY{KuSoSRud-JtQd#ab(!-SK|!F`Eqblk2mPmY``ZsE ziZbL*_FHZ$@ciz}k__jmW!rB*bug*ie?NL{nCP+7$KHRBUmt!}`hRb6XiKBXOrIYt zS;tHHY*e*V@dL2u*U+i%7Ck4NsQ+MCC= zVDsFwX$_M1B!Lc!>R$4!YRG4tWE$d!s z*x9ttu0}S-Cr&?|v{}Y*=8wdKA9TAbAD~N`a!t1W(UM}w+&*RB| z{M)JR@WbB^j!*np(bM!ZP)OG0S|hiR=aZt88#Q+EYr|gt_w?~t8nnny@^ir5<(FTU w?LMmRAI=-2^rYix(#D%PUQ2}zAAav?|N6(&t=+%$Kxv7=)78&qol`;+05ks~xc~qF diff --git a/Telegram/Resources/icons/dialogs/dialogs_verified_star@3x.png b/Telegram/Resources/icons/dialogs/dialogs_verified_star@3x.png index 55734f48e6a56bdf98c73f485653e8741fd34dc4..699f94d8bca28188a67472b992764dc64fcb4f42 100644 GIT binary patch literal 1995 zcmbVN3sBQ$952ctDheB(GCU!KjRB)g(w5RhiYNuaQLNBYCe9Jkv=rJVCV>{t7s?dx zrpOfMrV}~!cAQg&o;RI>;`ES-#~wc5oK8C(=ZOMNL^oXbg-1_!Zr;pYk}t{c`~Cj! zY|v-SoirhMf5B2a8(Q>N99TcRUnvLipCL2H6d3(BL@uRIHQTk)TWGxfhP@| zF9~W#0_l|6`S4K&EzMJ$g%vD}9TFMIJf=v{ zz`)dDA8f3L*3OT_2}BHWk}QJBP|>F$ppo+6*doq4ByOY-+DhAKyTAi1=E1W0jKJ{u z%)d~3K0hY_Vyn}6G+tsqL>s_8!$N`2Wg9Y2UQX% zIt1aro_C`MtJ14<&`5aOzX&}0qK9Fdl<$uCc!~+^lUST*30V&0oEg8Ck{J;{L{yw zZ_jk?C>)Feap@UC;K4J-Xgio)92inzyAJ&*k&G!z)6O~*uI~+R!MSe(W$MEeU}H1O~Xi6W)O-7G_*f>(8RUk=AIQHjqbYY z(879iz1v-@ZwlL(5;%GN=NWH*a(=}EpPFy3*=yRr$gGRpThVG%?a+1CgGBlCUj#&w@GD=xU;- z9Xk>1=TqLh_`uZghz;5`p*81k`?|ubd^1#Qo42P&c=t6ftxVZ-v-wIv>_>j|;m%Mu zbEu;$DLcBl>AqJR-WD9sxHPLSvg-7Gne89U6^KTCWX#lw-2<^9l~hBAP63$LExc6F zfBNzrA&6^EtT^imObGDJ?b&?IKI`U;$t^j(5nJw*cd_cPS^^G}ZS{qL#gTc-(V!C< z34;M0wdXpXt_Ti;OXCff8rj*1x zpS@XE@2R|*TK(fA?c=6T=#+E^McsJ1(*N?KmZ))uyrP`(-Ml|EJ)j5wt9;_Ia_IWq zepgFU1YF_1{AJ_!0&(`jeSy&S6o1@$E34jj<)rw)$5VSJ>&MP~*wA*Ht74CPlYg@6 zohO$i)U2J`G*Gunb}D!M!7F$9H!dcb_HBNv&QNe<@y3*Jt$P}so0D7FX;qaaCO$zP Zj&}u}wS7kwoDqMwX~`MdgL87%{0$T4-J$>h literal 1001 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91FaQ7m0DJ@61ONa7Q%OWYR9Fe^SHc=5>+rLrJrbP>ppfguY?<@)&esMqUKFwXPC!^6d5@lWUT{QSJPw>L5}^3BcY=x8F5czt~p zfbDiWlgWI;X!Ubv_x1HPF{RbO;czhX`l>KBHAN>kNEi2%E-x?l#LxliEzs-_4GrDi-hK@V^RLUx z%fUglk&kSo#Sffu0mb8SKC#64#rZfmI8eX8;%MI7+(aUg z`T2Q;fz#{tu~-c61F>oDGu3K!Yio-+sK>|0+^NtF9vvMqgmYnGfo@Iv9U4aFIwy-#U_rXkS@u}7vJ9AaK3y# zpWHR^!0qhpoS&aFSi*vkUr`p#S9EoCg=i;KjB)&nKJP`~|HAMriN z#9F0NL1D=j2-KHEzdwWR?QI5%6B84p{_PJxczJqyG8hbCDeGBWT3Qm&49ijt9UmV@ z0WOy!9z@k1l^77WG$gIe&CT^~e~F{__jilMBFRZCNT<_8xj%!$!$UC*+6-Rmfj|In z_df6|m&@zx>ohiW8TuQWo13W5xpTd^xY*d(=zg!zne>n%eMEhZ@`4Ld^cqp}^>C?7 zjQX4lMXmT@Rfr|(bCoQyzw`jfy1J!IV519#f|OL|d@h%hiBt$fe?w&yxt$Nn3ebO7 z%(7G}Q7m&4g~MSnMckn1V_U6OlgVVW*?>WQC5El7t#RW)H-ttWsv&^^a{6E}Na{DD zi2M)v6{>du20Z#$L`oUxC^9C|^z=0T^@6?yDkI!;Qo6`UJRT4Jo}HaNJUmFj{;~PL X%ZMbObHY4>00000NkvXXu0mjf6~V`F diff --git a/Telegram/Resources/qrc/telegram/telegram.qrc b/Telegram/Resources/qrc/telegram/telegram.qrc index a5459ef75..232d074a4 100644 --- a/Telegram/Resources/qrc/telegram/telegram.qrc +++ b/Telegram/Resources/qrc/telegram/telegram.qrc @@ -34,6 +34,8 @@ ../../art/topic_icons/general.svg ../../icons/info/edit/links_subscription.svg ../../icons/plane_white.svg + ../../art/verified_bg.webp + ../../art/verified_fg.webp ../../icons/calls/hands.lottie diff --git a/Telegram/SourceFiles/boxes/peer_list_box.cpp b/Telegram/SourceFiles/boxes/peer_list_box.cpp index c72c392a0..72d257d99 100644 --- a/Telegram/SourceFiles/boxes/peer_list_box.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_box.cpp @@ -799,9 +799,6 @@ int PeerListRow::paintNameIconGetWidth( outerWidth, { .peer = peer(), - .verified = &(selected - ? st::dialogsVerifiedIconOver - : st::dialogsVerifiedIcon), .premium = &(selected ? st::dialogsPremiumIcon.over : st::dialogsPremiumIcon.icon), diff --git a/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp b/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp index 9c830dc57..1a189fa7f 100644 --- a/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp +++ b/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp @@ -31,6 +31,12 @@ namespace { constexpr auto kDontCacheLottieAfterArea = 512 * 512; +[[nodiscard]] uint64 LocalStickerId(QStringView name) { + auto full = u"local_sticker:"_q; + full.append(name); + return XXH64(full.data(), full.size() * sizeof(QChar), 0); +} + } // namespace uint8 LottieCacheKeyShift(uint8 replacementsTag, StickerLottieSize sizeTag) { @@ -315,16 +321,9 @@ QSize ComputeStickerSize(not_null document, QSize box) { return HistoryView::NonEmptySize(request.size(dimensions, 8) / ratio); } -[[nodiscard]] uint64 LocalTgsStickerId(QStringView name) { - auto full = u"local_tgs_sticker:"_q; - full.append(name); - return XXH64(full.data(), full.size() * sizeof(QChar), 0); -} - -not_null GenerateLocalTgsSticker( +not_null GenerateLocalSticker( not_null session, - const QString &name) { - const auto path = u":/animations/"_q + name + u".tgs"_q; + const QString &path) { auto task = FileLoadTask( session, path, @@ -335,7 +334,7 @@ not_null GenerateLocalTgsSticker( {}, false, nullptr, - LocalTgsStickerId(name)); + LocalStickerId(path)); task.process({ .generateGoodThumbnail = false }); const auto result = task.peekResult(); Assert(result != nullptr); @@ -348,8 +347,18 @@ not_null GenerateLocalTgsSticker( document->setLocation(Core::FileLocation(path)); Ensures(document->sticker()); - Ensures(document->sticker()->isLottie()); return document; } +not_null GenerateLocalTgsSticker( + not_null session, + const QString &name) { + const auto result = GenerateLocalSticker( + session, + u":/animations/"_q + name + u".tgs"_q); + + Ensures(result->sticker()->isLottie()); + return result; +} + } // namespace ChatHelpers diff --git a/Telegram/SourceFiles/chat_helpers/stickers_lottie.h b/Telegram/SourceFiles/chat_helpers/stickers_lottie.h index e659329dd..d213f82bc 100644 --- a/Telegram/SourceFiles/chat_helpers/stickers_lottie.h +++ b/Telegram/SourceFiles/chat_helpers/stickers_lottie.h @@ -130,6 +130,10 @@ bool PaintStickerThumbnailPath( not_null document, QSize box); +[[nodiscard]] not_null GenerateLocalSticker( + not_null session, + const QString &path); + [[nodiscard]] not_null GenerateLocalTgsSticker( not_null session, const QString &name); diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index dc952ddc6..e8173de68 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "api/api_bot.h" #include "api/api_text_entities.h" #include "api/api_user_names.h" +#include "chat_helpers/stickers_lottie.h" #include "core/application.h" #include "core/core_settings.h" #include "core/mime_type.h" // Core::IsMimeSticker @@ -353,11 +354,16 @@ Session::Session(not_null session) Ui::VerifyDetails Session::verifiedByTelegram() { if (_verifiedByTelegramIconBgId.isEmpty()) { - auto &manager = customEmojiManager(); - _verifiedByTelegramIconBgId = manager.registerInternalEmoji( - st::dialogsVerifiedBg); - _verifiedByTelegramIconFgId = manager.registerInternalEmoji( - st::dialogsVerifiedFg); + const auto bg = ChatHelpers::GenerateLocalSticker( + _session, + u":/gui/art/verified_bg.webp"_q); + bg->overrideEmojiUsesTextColor(true); + const auto fg = ChatHelpers::GenerateLocalSticker( + _session, + u":/gui/art/verified_fg.webp"_q); + fg->overrideEmojiUsesTextColor(true); + _verifiedByTelegramIconBgId = Data::SerializeCustomEmojiId(bg); + _verifiedByTelegramIconFgId = Data::SerializeCustomEmojiId(fg); } return { .iconBgId = _verifiedByTelegramIconBgId, diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index a5d322962..7e27ab419 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -409,6 +409,7 @@ dialogsLockIcon: ThreeStateIcon { dialogsVerifiedBg: icon{{ "dialogs/dialogs_verified_star", dialogsVerifiedIconBg }}; dialogsVerifiedFg: icon{{ "dialogs/dialogs_verified_check", dialogsVerifiedIconFg }}; +dialogsVerifiedPadding: margins(0px, 3px, 0px, 0px); dialogsVerifiedColors: VerifiedBadge { height: 20px; bg: dialogsVerifiedIconBg; @@ -423,18 +424,6 @@ dialogsVerifiedColorsActive: VerifiedBadge(dialogsVerifiedColors) { fg: dialogsVerifiedIconFgActive; } -dialogsVerifiedIcon: icon { - { "dialogs/dialogs_verified_star", dialogsVerifiedIconBg }, - { "dialogs/dialogs_verified_check", dialogsVerifiedIconFg }, -}; -dialogsVerifiedIconOver: icon { - { "dialogs/dialogs_verified_star", dialogsVerifiedIconBgOver }, - { "dialogs/dialogs_verified_check", dialogsVerifiedIconFgOver }, -}; -dialogsVerifiedIconActive: icon { - { "dialogs/dialogs_verified_star", dialogsVerifiedIconBgActive }, - { "dialogs/dialogs_verified_check", dialogsVerifiedIconFgActive }, -}; dialogsPremiumIcon: ThreeStateIcon { icon: icon {{ "dialogs/dialogs_premium", dialogsVerifiedIconBg }}; over: icon {{ "dialogs/dialogs_premium", dialogsVerifiedIconBgOver }}; diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index 51dc9f11e..44ef4f6a6 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -1398,11 +1398,6 @@ void InnerWidget::paintPeerSearchResult( context.width, { .peer = peer, - .verified = (context.active - ? &st::dialogsVerifiedIconActive - : context.selected - ? &st::dialogsVerifiedIconOver - : &st::dialogsVerifiedIcon), .premium = &ThreeStateIcon( st::dialogsPremiumIcon, context.active, diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index 350ea38ba..e4243c7ae 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -732,11 +732,6 @@ void PaintRow( context.width, { .peer = from, - .verified = (context.active - ? &st::dialogsVerifiedIconActive - : context.selected - ? &st::dialogsVerifiedIconOver - : &st::dialogsVerifiedIcon), .premium = &ThreeStateIcon( st::dialogsPremiumIcon, context.active, diff --git a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp index 0e2da0d49..4d89cd300 100644 --- a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp @@ -589,7 +589,6 @@ void TopBarWidget::paintTopBar(Painter &p) { width(), { .peer = namePeer, - .verified = &st::dialogsVerifiedIcon, .premium = &st::dialogsPremiumIcon.icon, .scam = &st::attentionButtonFg, .premiumFg = &st::dialogsVerifiedIconBg, diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index f121010da..1ae86e9d3 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -22,7 +22,6 @@ InfoToggle { } InfoPeerBadge { - verified: icon; premium: icon; premiumFg: color; premiumInnerFg: color; @@ -437,7 +436,6 @@ infoVerifiedCheck: icon { infoPremiumStar: icon {{ "profile_premium", profileVerifiedCheckBg }}; infoPeerBadge: InfoPeerBadge { - verified: infoVerifiedCheck; premium: infoPremiumStar; premiumFg: profileVerifiedCheckBg; premiumInnerFg: profileVerifiedCheckFg; diff --git a/Telegram/SourceFiles/info/profile/info_profile_badge.cpp b/Telegram/SourceFiles/info/profile/info_profile_badge.cpp index a2d15131e..ee2c1a035 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_badge.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_badge.cpp @@ -35,7 +35,12 @@ namespace { } else if (emojiStatusId && badge == BadgeType::None) { badge = BadgeType::Premium; } - return Badge::Content{ badge, emojiStatusId }; + return Badge::Content{ + badge, + (emojiStatusId + ? Data::SerializeCustomEmojiId(emojiStatusId) + : QString()), + }; }); } @@ -115,14 +120,14 @@ void Badge::setContent(Content content) { case BadgeType::Premium: { const auto id = _content.emojiStatusId; const auto innerId = _content.emojiStatusInnerId; - if (id || innerId) { - _emojiStatus = id + if (!id.isEmpty() || !innerId.isEmpty()) { + _emojiStatus = !id.isEmpty() ? _session->data().customEmojiManager().create( id, [raw = _view.data()] { raw->update(); }, sizeTag()) : nullptr; - _statusInner = innerId + _statusInner = !innerId.isEmpty() ? _session->data().customEmojiManager().create( innerId, [raw = _view.data()] { raw->update(); }, @@ -162,9 +167,7 @@ void Badge::setContent(Content content) { } }, _view->lifetime()); } else { - const auto icon = (_content.badge == BadgeType::Verified) - ? &_st.verified - : &_st.premium; + const auto icon = &_st.premium; _view->resize(icon->size()); _view->paintRequest( ) | rpl::start_with_next([=, check = _view.data()]{ @@ -224,9 +227,9 @@ void Badge::move(int left, int top, int bottom) { return; } const auto star = !_emojiStatus - && (_content.badge == BadgeType::Premium - || _content.badge == BadgeType::Verified); - const auto fake = !_emojiStatus && !star; + && (_content.badge == BadgeType::Premium); + const auto fake = (!_emojiStatus && !star) + || (_content.badge == BadgeType::Verified); const auto skip = fake ? 0 : _st.position.x(); const auto badgeLeft = left + skip; const auto badgeTop = top diff --git a/Telegram/SourceFiles/info/profile/info_profile_badge.h b/Telegram/SourceFiles/info/profile/info_profile_badge.h index efff823cb..ea24f2fb6 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_badge.h +++ b/Telegram/SourceFiles/info/profile/info_profile_badge.h @@ -58,8 +58,8 @@ public: struct Content { BadgeType badge = BadgeType::None; - DocumentId emojiStatusId = 0; - DocumentId emojiStatusInnerId = 0; + QString emojiStatusId; + QString emojiStatusInnerId; friend inline constexpr bool operator==(Content, Content) = default; }; diff --git a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp index 02ad4f532..0b69500b4 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp @@ -302,10 +302,8 @@ Cover::Cover( const auto details = peer->verifyDetails(); return Badge::Content{ .badge = details ? BadgeType::Verified : BadgeType::None, - .emojiStatusId = details ? details->iconBgId.toULongLong() : 0, - .emojiStatusInnerId = (details - ? details->iconFgId.toULongLong() - : 0), + .emojiStatusId = details ? details->iconBgId : QString(), + .emojiStatusInnerId = details ? details->iconFgId : QString(), }; }); } diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index 4453a307e..4e472b96a 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -197,10 +197,6 @@ settingsInfoPhotoSkip: 7px; settingsInfoNameSkip: -1px; settingsInfoUploadLeft: 6px; settingsInfoPeerBadge: InfoPeerBadge { - verified: icon { - { "dialogs/dialogs_verified_star", dialogsVerifiedIconBg }, - { "dialogs/dialogs_verified_check", dialogsVerifiedIconFg }, - }; premium: icon {{ "dialogs/dialogs_premium", dialogsVerifiedIconBg }}; premiumFg: dialogsVerifiedIconBg; premiumInnerFg: dialogsVerifiedIconFg;