From 51ed3af14cd70a4f3ef03616271703ed0ded8f05 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 18 May 2022 21:53:25 +0300 Subject: [PATCH] Added new section for premium settings. --- Telegram/CMakeLists.txt | 2 + .../icons/settings/premium/channels_off.png | Bin 0 -> 638 bytes .../settings/premium/channels_off@2x.png | Bin 0 -> 1181 bytes .../settings/premium/channels_off@3x.png | Bin 0 -> 1797 bytes .../icons/settings/premium/double.png | Bin 0 -> 562 bytes .../icons/settings/premium/double@2x.png | Bin 0 -> 1024 bytes .../icons/settings/premium/double@3x.png | Bin 0 -> 1467 bytes .../Resources/icons/settings/premium/like.png | Bin 0 -> 390 bytes .../icons/settings/premium/like@2x.png | Bin 0 -> 685 bytes .../icons/settings/premium/like@3x.png | Bin 0 -> 1063 bytes .../Resources/icons/settings/premium/play.png | Bin 0 -> 388 bytes .../icons/settings/premium/play@2x.png | Bin 0 -> 729 bytes .../icons/settings/premium/play@3x.png | Bin 0 -> 1126 bytes .../icons/settings/premium/speed.png | Bin 0 -> 588 bytes .../icons/settings/premium/speed@2x.png | Bin 0 -> 1085 bytes .../icons/settings/premium/speed@3x.png | Bin 0 -> 1573 bytes .../Resources/icons/settings/premium/star.png | Bin 0 -> 494 bytes .../icons/settings/premium/star@2x.png | Bin 0 -> 911 bytes .../icons/settings/premium/star@3x.png | Bin 0 -> 1270 bytes .../icons/settings/premium/voice.png | Bin 0 -> 447 bytes .../icons/settings/premium/voice@2x.png | Bin 0 -> 741 bytes .../icons/settings/premium/voice@3x.png | Bin 0 -> 1160 bytes Telegram/Resources/langs/lang.strings | 26 ++ Telegram/SourceFiles/settings/settings.style | 12 + .../SourceFiles/settings/settings_main.cpp | 10 + .../SourceFiles/settings/settings_premium.cpp | 254 ++++++++++++++++++ .../SourceFiles/settings/settings_premium.h | 17 ++ 27 files changed, 321 insertions(+) create mode 100644 Telegram/Resources/icons/settings/premium/channels_off.png create mode 100644 Telegram/Resources/icons/settings/premium/channels_off@2x.png create mode 100644 Telegram/Resources/icons/settings/premium/channels_off@3x.png create mode 100644 Telegram/Resources/icons/settings/premium/double.png create mode 100644 Telegram/Resources/icons/settings/premium/double@2x.png create mode 100644 Telegram/Resources/icons/settings/premium/double@3x.png create mode 100644 Telegram/Resources/icons/settings/premium/like.png create mode 100644 Telegram/Resources/icons/settings/premium/like@2x.png create mode 100644 Telegram/Resources/icons/settings/premium/like@3x.png create mode 100644 Telegram/Resources/icons/settings/premium/play.png create mode 100644 Telegram/Resources/icons/settings/premium/play@2x.png create mode 100644 Telegram/Resources/icons/settings/premium/play@3x.png create mode 100644 Telegram/Resources/icons/settings/premium/speed.png create mode 100644 Telegram/Resources/icons/settings/premium/speed@2x.png create mode 100644 Telegram/Resources/icons/settings/premium/speed@3x.png create mode 100644 Telegram/Resources/icons/settings/premium/star.png create mode 100644 Telegram/Resources/icons/settings/premium/star@2x.png create mode 100644 Telegram/Resources/icons/settings/premium/star@3x.png create mode 100644 Telegram/Resources/icons/settings/premium/voice.png create mode 100644 Telegram/Resources/icons/settings/premium/voice@2x.png create mode 100644 Telegram/Resources/icons/settings/premium/voice@3x.png create mode 100644 Telegram/SourceFiles/settings/settings_premium.cpp create mode 100644 Telegram/SourceFiles/settings/settings_premium.h diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 258a5463e..83a2c4f30 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -1118,6 +1118,8 @@ PRIVATE settings/settings_main.h settings/settings_notifications.cpp settings/settings_notifications.h + settings/settings_premium.cpp + settings/settings_premium.h settings/settings_privacy_controllers.cpp settings/settings_privacy_controllers.h settings/settings_privacy_security.cpp diff --git a/Telegram/Resources/icons/settings/premium/channels_off.png b/Telegram/Resources/icons/settings/premium/channels_off.png new file mode 100644 index 0000000000000000000000000000000000000000..108a1573f5eb8235e72723a1bd471bb041d0c6f1 GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?1iU`V~B;| z+hE@ng@GcqN`We!MiY$|^7KxbqOr)u&@eb9Wl2hlre_eF$4t*t4uL|d&NB@Rg5A98 zj28aclm9hO_WRxUb??8Oy)Sv^T3q_u()0Jy=lA#DKYEqX&N)Cw>}k=@tgT5O{>y%= z+I#%*!|%T%ja`)jt>)&L&DNUQ75YJKY0%3WyZv{8{I_T86c=CI5u<0nKTK(2!kbMk zUQ3Ji#>MN2Pd?d_yD?%-*y_nApM0%a8uQ_7ijmID5-kCa5G~POx6OC+zW?4Ex89xa zqb7`cfJV{IJ1?y85}S Ib4q9e006ZN`v3p{ literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/channels_off@2x.png b/Telegram/Resources/icons/settings/premium/channels_off@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..18ec1bb7705ac852225a9558dd08e45e2c06f21f GIT binary patch literal 1181 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 literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/double.png b/Telegram/Resources/icons/settings/premium/double.png new file mode 100644 index 0000000000000000000000000000000000000000..388994de898fb830bb1d23a35ee56f81c4b452a7 GIT binary patch literal 562 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 BlIQ>c literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/like.png b/Telegram/Resources/icons/settings/premium/like.png new file mode 100644 index 0000000000000000000000000000000000000000..77e9f63a1b24ab1046eed539cc6d894c00a60a18 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUeeiT~46zV= zJJFEOB|xC zalOeaAarKN*8_)4e05&dq(5`mq;vW34sB1NX)+q;i|;J{yhuZX`H#rP>1$c-Jpvaj z&y2eN{q})GqrSzfR;epw>|SSm{<9)e*Xd0beZ_u>eFi-IkpVr6UIcS}W_2|172YTA zVe!D4t2lbv*0nvKOgh%Vfd9MUVQXLW(Oz?JYD@< J);T3K0RWW`i!lHI literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/like@2x.png b/Telegram/Resources/icons/settings/premium/like@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..183760ba79acad35d583baedc29ba951b8e321e4 GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1SD@H+jcWz5RC6 z%{R*Vded*e|Gwsy^#q2i$%d)?B7f`V-*n)ccKYf1`JpRAo+uPEhwPbE_g2xgjr~g2 z))`77jsgCLZijx<*s;#lo9@t^@yn%XWeC^FNx>GnY8o z-Msss?yXq)rNZX%#|YocC01Xn_GaBEKRVY>z1WVo-Ff=yuj|%XtUsHUz5RB-U8$Aq zv-zfT+|RGMn4u%WW$;~XvZvjA^O-(Xo4EBJHWWBmD9HS1=Br`8wJDW>eZe7aP*U-9 L^>bP0l+XkK1yURd literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/like@3x.png b/Telegram/Resources/icons/settings/premium/like@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5e12899398b472488da06b6ca81321c914156f GIT binary patch literal 1063 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1SD_us|Wxo#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1|Sip>6gA`6MbbAj}KGD;~F(iZa zZKSQYwxft?px{U4E~$=1ZUV_JN7QQnIoz6{HMQ03AMlakXHE--8A zHRO8gR+A2|zRi62)TvX44>v0|r#J)$2dfC3Oxt|lYXAB3=Z_vedhcG`-a~oY zt1Bxd4P=|%PoFM6#X-@Q?dNmBT&<~>gqPUz-@SbK@{Y+-f|haV3cEL^yq1E++&$W2UijP`#aF-@yDbd8a{{rXckUc6W_LHK0?$Aaq3mlr;M z{J3NT*OCbguWZ8N(<4Knb!v^Ke+$;inW=A#gF<}M{O1dwxd%U z4Ev8er-X1#&gbD~UE0<8q(t(H`^Eqbfo$#8L_^Of%cZJoYE+E0T5av^g@3L**4Nk9 z(c_gEu~_IQYutBpbMv!j&$`5kZdkv5{kCn}wr@A*vi#atTT_$J?V1?Ue)Gl+gxpVjK(a%8(lOAn&_byMzjd!UB%Ywa+zgBgA@;L|$B$ZcYOJ>cOVW1kG zQD7ovDx$(F(0{zOWhU$5%Po za$5%v%XC*S-SblW)#m;C|Nr@Or)T@=)85@BVRcoZ5KRM#@ zx36FSrffM^zx?vf{rmN+?(^~S#pq2hjhPbG6#MPjGqtzq zYG~K?uU|{Q%vif@{~Wp9cjdZ|o~k~)eYX64meYn&uWntrGG*TOn>Qo9Jw?TuZTqW`o+~`@NDf+^2W$wCwf^6XWSqEo7R*pnia}08SlP@ArT|*ZSe+ TQ&YV4K$+Cj)z4*}Q$iB})c@Tc literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/play.png b/Telegram/Resources/icons/settings/premium/play.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3d576978d2d47a0fe8d2611a5d01c0461d0657 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUz4LT&46zV= zJH?T!*+9T`>4LZe+8m6wlOEhVz2o9iaY35~_75s|IWO5+=U%uWkrQhrZG3X}{F6S5 zp2vPGW}T#>dAdlV?e}Sk2S$|+1{_VRRxQh{%IWc(#&D;|A@+K%NSH7~o~~I8YoyGE zy-O~cnEFk5UMX|D_P%seLiN{0bKD$6T;IsFC0;f;CbYp+Gb;Ilk_w}1V9(iri=d#Wz Gp$PzPHG_}< literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/play@2x.png b/Telegram/Resources/icons/settings/premium/play@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9bca6e1cd5cd340cc97cf243ed21532882d339 GIT binary patch literal 729 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1SD@Hj{v=Sfe!(;iQ?5V{6`|HAVpa4084tDc?tnH< zo~<&Pn#$KsrW8H*{mIy-?-#l;;!cj)DV7+K#5fI+DNfV16fOF5WSST%9p`QMd(8Ul z91Vxcwdzxz7_XZy$>8q(?u6CnB2FJQQ6Y(we-*; z&8c3u-%h($9>#cjjS0(~qn9r0Pe1*!18AkyTrW#Tu?Kq=PKsF@w)6sjOM`T$3tMyJ z6@dpzLh*}O?*uPWP5M`1VF~w#MEI76Pr3XreM`2RpKdfW!{pY>l7EZ;GN{*^W+*(_ zEq3jug}mucg_eiw&nvVGbKUvznYry*?Uu*)zKVZsky?Jc?%&t8Kgawt-2^v2Qkb~y x_OW`i9oyN@?DhC?@xGx_SJ}O^10ZO?TwhT5uVUAk*}Fl>%G1@)Wt~$(696C^EZ_hD literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/play@3x.png b/Telegram/Resources/icons/settings/premium/play@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc9dcb1c0b587af639a30e0006c97c1fa2c0bc6 GIT binary patch literal 1126 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1SD_us|Wxo#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1|Sip>6gA`6MbbAj}e!_tn1s;A)nsRPW84ZDl5Z`5Yd+ zdiCn#$B&;se-?kpY^rgXrR~>6PuCmw?(N&TbEc0PiZIK#_V3#lvrb4~amy~eDxH~B8CLnRg#N6MAtH(KYxDiM(?GUk~S{5 zQ1FVO;a8L->ki{dyPtgcaKV#jQjDItRPUYK@K{!!b^gmgEDt_1bbsPh2f6`GKF?N=gKY#pKP_5FWDCm5@NiHHJxa6eZ!3iA;rIoqDJ?brFmR-&? zvDXN5F;Gc*HD8X8ZN;PRqmN#{Uj6t~Iiny?=ZveCzvUdizW-VC@56@&FQ;;}xtuY+ zQNO}LsZH-W+k(Ym`*!U3z~jQ=tkiaIZTcQl(GNHF?%(gPHhErMM}o(Z3lqQfZ0~c@ z5v#7Nv$M8dY@rBp$o#oNL4NF}h08DBynkPPmN3vg55F`>gof~{hVG5KfA{WE=~XO` zZ!1Z>bcu9WQ=4l#T}k3^Q{MLM>`UxNUa>TI1`AeQ&6;W#eaCd;inzGA7u{W7mkAt; z-!8Pa(P`mohSE3-dbaD;nEpKm(Fj|OM?y;akV-D zlj8mNn>AdIOWn?YpmyCr^yz`C*KZiG8s6Ww#otNdP|Wp8J}8fSy85}Sb4q9e00eUI>Hq)$ literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/speed.png b/Telegram/Resources/icons/settings/premium/speed.png new file mode 100644 index 0000000000000000000000000000000000000000..29ab2bb05da3447f8c855982406dd8255d1111ba GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY@4TxV~B;| z+n~L#9TO#<{?e1Y)2EB4q;-?j8nOQkI#X`SFOtwnGD^508!@4ElE=9KlFbJgc6=big}CtU6K-1oN|{`jVJEvm7bfBLDB1W)_nh1Xv{{C!Mc zab?J=7`^Q`bN;bB|5+2ZI<)=pLD7h{*U~micDks%vOJZvvFCX5y2E9=bGP5tm~sBO zjImVjm#SJDIs3VOlTRMWF!3^P+7O`=U@XJ8_~MF~f3xns|Ni`Qz2Iv=7BH2YfEF{e;s(1(VM=9)EN=950?V*Nr$9}l4VcadQRpBsUp^W_uubG0=kMlVf*dQRTYY@hhCOUJDqyQ>BQf<`95lb zDQ2@%jU=}`Q0Zwak6(S2t(noVo}ps?!T^r*&zs+?*FR+Y$2hz4!AmEV9rr;o>FMg{ Jvd$@?2>^ZX^K$?I literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/speed@2x.png b/Telegram/Resources/icons/settings/premium/speed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..69689a452693c6fd161f9310693ce3c6cf0ce68a GIT binary patch literal 1085 zcmV-D1j74?P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFr%6OXR9Fe^R?922Q5=5px#Uib z`z01iGH!zj3ro4J?5u1kiCp3jP*WCSV`ec6QBy7{S($QMC={|$atjGj%#e`cdvy49 z=6K(km%jQo=UqL&+jGwQoZtI9ucF9DDj*e*3P=T{0#bp0s(|0G*+N1>s;jHbW^-z4 zYD!8dC8-n;hm`uaLKIayRxq(xm^ zT#SU8ni{PHU4F##8!%mikg|3VHHrZs;WxZ!5_iaGFw_&tX8YPzdxUVQ=6ZkKRi4%$W@aWZ_SDqWgmRuxFYfE>6I57UUaqUF z3l0uerO3_Aotm0@dwW}2T1rn(XF08{t zP7x6i=wF_szrSA(gGx?va`Mg14RLL3Y@n}I^0Zy~`T6_%`@{fXv)Q!MeMRsU5SP>G z3=IwSRpAkDZf<^hdLjk@NF_9)M}c>vva*u6(7E_Pyyx@L@bGYl!$IW?;FW@cf&u~p za&mI`WWAW=K{FbSM!jWg(&Z(s4R#YiqO{2B0XL#Y00w&-QwOg1fY4}WcK zEh|PlvrhB~e;JL9jlvqtoS2wEN?>3heoMY`KTLj7BNKlw6eZwsH<1?#F$`hx#^e`3 zd3m|uVJ7qA$Z*F|0!-nUva_=(N)WugXigDJjWYo}!eNmSW6MYol%3+S;^A(AW4}Iy*bNySp)~R4=vP|K!uE zk&%%Y4S9Kar>Cdve~m&CNCl(5^EH5i8(|Yi(H!fJ*>4TMV)fX zVI#JkT;{M+Qd*Kr$vh>gIOTTcpL2T7`#hib^S%A?KJWLIbp+?44uL}e08n>xb;8To zbrZ^RvRhJMqA4TLZ+I6+p#GtORHitcBD$US@&fkCWMu$!kpd`ehR6Vy0RZHyK!CiA zL7TQJxqrQ`Rr3GIn}LNE&L05)T;S$(h!6(;;P2*o!c8ZS%8?X>v8R}-7FDKHxh*;t z*OYw@5yqs>hhwT0Pe_p@17q7QRALq?G$X8o`U_SQJl%Mtd(V?>9|a}$_m+mEx1OH= z$Y0(#Z{wA)mREaw{^z#2`|vYm-kb#^zZ8@}cLEXv=E?VY5BjbL!@dTNust!?7D zb8AZr_V)HG)04|3J(1u5E2?9UmW`jq~@{rzvieUGDnv#`a@*VS<8#9Nd=0Hkphl-6 zKHTd&?5DuNhYz)4iz)uN6 zIqL2GNGhdd2ALw8JaM>7XRYt-G&j%B%I2jK1n6h{&LBP`IWDeyK^2=MV6zQ`8Y^2L zs`(<*(sL=3A`r-n=t9`>o~0!luK`lXClevSPVuxYIAgDmC;|3laoV%UHJX>ZDt+^NQie-N_kt)HbtRwmPWco9EH}#Mzp8s z?p?F@B~}jRwyeN9VVC!1Y1->fy30`v27?L_w)Q85vs?spIz91$rZP2jIO&m`3PRP& zkSg>URd>6WnW@Nv(Nk)q4eCT}%XOX8<|KaXs&8>S($3yK0$u|D_9fkoRqByZi`8;g zEwnCStxEPqe@mS#_DE30AlvJ}9-USe=FO)^ee_|~OpNDaS~Z?Q3VEk%5W}QYU%y;a zdNV5Jl(;Z_pSfdE*O>^o2%38^=hOFiDz&;Fc`U6QdI$A*7d|TwR4`U!3aRO;SYqQC zq|q0y2UhJ=qwj}FxQfyJTYLY9zX*|YbDIkR NaKqx9>K#cJ{s9_|%}W3P literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/star.png b/Telegram/Resources/icons/settings/premium/star.png new file mode 100644 index 0000000000000000000000000000000000000000..82fa9b74c85b79648ac07278d1c55ea49402a3e3 GIT binary patch literal 494 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 Mr>mdKI;Vst0093eB>(^b literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/premium/voice@3x.png b/Telegram/Resources/icons/settings/premium/voice@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..bffe3be39e026ef587ce505717081e9c7ced27fb GIT binary patch literal 1160 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1SD_us|Wxo#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1|Sip>6gA`6MbbAj}{>jtDF(iZa z?JR3=9Y=xI>t97Xl#&#>-0YZ`gI!&M1sxAM2=MeCarn#rk40ITRhZdS&{;mAO4ylM zzO$?Ak@Cmd_vNw@-S1{@OzP2oj+e*M&?5#Lu|VcGc)s)k3WC@jE=eUDCNY$4c4zVZQ6A7sB55K3n#;j z-7<3w)~{XbI%Uz$2Fr=%E>`B|%clywW_Y8)dwR>)uV4B3`8SqkFgI{+oa3T4dFwd~ zOUuaM;AB7U83M(B?494eeVe)YQ*-l#`f2NSemHvcD1T|j;g%VnrIp_Pci6vw|MY3o zq)xGK=ns?&@&{{L`dv6i^vJ_GUC(vvUK&!m>e7W|ehz8E@v zPTjGXvg@qd=Np2gW>y??b91Y!jg`<7{(U;uV(qnS*REf`o^ZSI;M%y^+cXV}Uf8Hb zRfW9pG)umF_wLiDPaO^1>g(%0M5Nw0I^Dj|!P6L%rI>p{?7$?^vif@co3m%newv#Q zA0Pkv+?{zR1X^Pzp7TACvFXs1wRy?Oi}eahN|sm`S1UP-6uDZND=t3CwR_K=DLr1n z%?sDA)$KIgsO&8AX-VtM7j?;-Zoc{ax%h`kMOD?RHEaIJ{oAx=PhGRvrvQ$?C8CO_ zx8J^fd!gL13l}EnO?c7z^39ty=NQ(8IEEaL_~zs5>vvx2Qg)QM)G*QcJ zE-x?dr!P<5zFoU^t*^L8u?C~!mc+ypimSYDe1G%qUE3;&*RNj}O8t~ocGUP;URL(# zhwks{s;VUh-#&aO;N$K4bL{x>pN|R?S=1W}D^`dUJ$ZEC+h1vE>7aifKW^N-*?2FH zN`Plt%caX|2`^r}m=Mn#WNBxYmznA5u+Wjy-qLbnsAA&;wvsn9=FOYtnGhcv`}Nzm zXX@Sx54jYDer{aa8x<856jWJRIdlH}^($5wENAoKXyg)o@=Rsg#5McAfB!zUWrwY; z?c5nNetew6$Y5~5ih0Y!OZSQ{wUva1h601VDy`z(yLVyX;m401yLJ2a>eZ{6op|yJ zjaU?n1e`K>g$p={{R@gOH>7&7VHZwn36tk%hs)1jg5_Uc2AMF+8f1ifI)cD@`#!lPm5hNLx48E zTfBO;ccj}#cdcvx+S}W6+$!o$Oit~>hC`X@hbyHd69Sj#?x$6+B< zarSKQny{Tyon6y5_w(IXOAvV-Z=k%}&cfov;R)QzLJ#KdV@8IqcN*=@-{h#P@USif Ol>(lwelF{r5}E+2unf%r literal 0 HcmV?d00001 diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index fbc0f43bd..70fe4c923 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -1662,6 +1662,32 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_premium" = "Premium"; "lng_premium_free" = "Free"; +"lng_premium_summary_title" = "Telegram Premium"; +"lng_premium_summary_top_about" = "Go **beyond the limits**, get **exclusive features** and support us by subscribing to **Telegram Premium**."; +"lng_premium_summary_subtitle1" = "Doubled Limits"; +"lng_premium_summary_about1" = "Up to 1000 channels, 20 folders, 10 pins, 20 public links, 4 accounts and more."; +"lng_premium_summary_subtitle2" = "4Gb Upload Size"; +"lng_premium_summary_about2" = "Increased upload size from 2Gb to 4Gb to per document, unlimited storage overall."; +"lng_premium_summary_subtitle3" = "Faster Download Speed"; +"lng_premium_summary_about3" = "No more limits on the speed with which media and documents are downloaded."; +"lng_premium_summary_subtitle4" = "Voice-to-Text Conversion"; +"lng_premium_summary_about4" = "Ability to read the transcript of any incoming voice message."; +"lng_premium_summary_subtitle5" = "No Ads"; +"lng_premium_summary_about5" = "No more ads in public channels where Telegram sometimes shows ads."; +"lng_premium_summary_subtitle6" = "Unique Reactions"; +"lng_premium_summary_about6" = "Additional animated reactions on messages available only to the Premium subscribers."; +"lng_premium_summary_subtitle7" = "Premium Stickers"; +"lng_premium_summary_about7" = "Exclusive enlarged stickers featuring additional effects, updated monthly."; +"lng_premium_summary_subtitle8" = "Advanced Chat Management"; +"lng_premium_summary_about8" = "Tools to set default folder, auto-archive and hide new chats from non-contacts."; +"lng_premium_summary_subtitle9" = "Profile Badge"; +"lng_premium_summary_about9" = "A badge next to your name showing that you are helping support Telegram."; +"lng_premium_summary_subtitle10" = "Animated Profile Pictures"; +"lng_premium_summary_about10" = "Video avatars animated in chat lists and chats to allow for additional self-expression."; +"lng_premium_summary_bottom_subtitle" = "About Telegram Premium"; +"lng_premium_summary_bottom_about" = "While the free version of Telegram already gives its users more than any other messaging application, **Telegram Premium** pushes its capabilities even further.\n\n**Telegram Premium** is a paid option, because most Premium Features require additional expenses from Telegram to third parties such as data center providers and server manufacturers. Contributions from **Telegram Premium** users allow us to cover such costs and also help Telegram stay free for everyone."; +"lng_premium_summary_button" = "Subscribe for {cost} per month."; + "lng_group_about_header" = "You have created a group."; "lng_group_about_text" = "Groups can have:"; "lng_group_about1" = "Up to 100,000 members"; diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index df137fc42..edc43e197 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -93,6 +93,14 @@ settingsIconPin: icon {{ "settings/pin", settingsIconFg }}; settingsIconDownload: icon {{ "settings/download", settingsIconFg }}; settingsIconMention: icon {{ "settings/mention", settingsIconFg }}; +settingsPremiumIconChannelsOff: icon {{ "settings/premium/channels_off", settingsIconFg }}; +settingsPremiumIconDouble: icon {{ "settings/premium/double", settingsIconFg }}; +settingsPremiumIconLike: icon {{ "settings/premium/like", settingsIconFg }}; +settingsPremiumIconPlay: icon {{ "settings/premium/play", settingsIconFg }}; +settingsPremiumIconSpeed: icon {{ "settings/premium/speed", settingsIconFg }}; +settingsPremiumIconStar: icon {{ "settings/premium/star", settingsIconFg }}; +settingsPremiumIconVoice: icon {{ "settings/premium/voice", settingsIconFg }}; + settingsIconAdd: icon {{ "settings/add", windowFgActive }}; settingsIconRemove: icon {{ "settings/remove", windowFgActive }}; @@ -411,3 +419,7 @@ notifyPreviewTitlePosition: point(64px, 9px); notifyPreviewTextPosition: point(64px, 30px); notifyPreviewChecksSkip: 12px; notifyPreviewBottomSkip: 9px; + +settingsPremiumDescriptionSkip: 3px; +settingsPremiumButtonPadding: margins(11px, 11px, 11px, 11px); + diff --git a/Telegram/SourceFiles/settings/settings_main.cpp b/Telegram/SourceFiles/settings/settings_main.cpp index 4a3f9005a..ce81ff5fc 100644 --- a/Telegram/SourceFiles/settings/settings_main.cpp +++ b/Telegram/SourceFiles/settings/settings_main.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_advanced.h" #include "settings/settings_folders.h" #include "settings/settings_calls.h" +#include "settings/settings_premium.h" #include "boxes/language_box.h" #include "boxes/username_box.h" #include "ui/boxes/confirm_box.h" @@ -330,6 +331,15 @@ void SetupSections( SetupLanguageButton(container); + AddSkip(container); + AddDivider(container); + AddSkip(container); + + addSection( + tr::lng_premium_summary_title(), + PremiumId(), + { &st::settingsIconCalls, kIconGreen }); + AddSkip(container); } diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp new file mode 100644 index 000000000..1f584dfbb --- /dev/null +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -0,0 +1,254 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#include "settings/settings_premium.h" + +#include "lang/lang_keys.h" +#include "settings/settings_common.h" +#include "ui/abstract_button.h" +#include "ui/effects/gradient.h" +#include "ui/text/text_utilities.h" +#include "ui/widgets/gradient_round_button.h" +#include "ui/widgets/labels.h" +#include "ui/wrap/padding_wrap.h" +#include "ui/wrap/vertical_layout.h" +#include "window/window_session_controller.h" +#include "styles/style_boxes.h" +#include "styles/style_chat_helpers.h" +#include "styles/style_layers.h" +#include "styles/style_settings.h" + +namespace Settings { +namespace { + +class Premium : public Section { +public: + Premium( + QWidget *parent, + not_null controller); + + [[nodiscard]] rpl::producer title() override; + + [[nodiscard]] QPointer createPinnedToBottom( + not_null parent) override; + +private: + void setupContent(not_null controller); + +}; + +Premium::Premium( + QWidget *parent, + not_null controller) +: Section(parent) { + setupContent(controller); +} + +rpl::producer Premium::title() { + return tr::lng_premium_summary_title(); +} + +void Premium::setupContent(not_null controller) { + const auto content = Ui::CreateChild(this); + + content->add( + object_ptr>( + content, + object_ptr( + content, + tr::lng_premium_summary_title(), + st::changePhoneTitle)), + st::changePhoneTitlePadding); + + const auto wrap = content->add( + object_ptr>( + content, + object_ptr( + content, + tr::lng_premium_summary_top_about(Ui::Text::RichLangValue), + st::changePhoneDescription)), + st::changePhoneDescriptionPadding); + wrap->resize( + wrap->width(), + st::settingLocalPasscodeDescriptionHeight); + + AddSkip(content); + AddDivider(content); + AddSkip(content); + + const auto &st = st::settingsButton; + const auto &stLabel = st::defaultFlatLabel; + const auto iconSize = st::settingsPremiumIconDouble.size(); + + const auto icons = std::array{ { + &st::settingsPremiumIconDouble, + &st::premiumIconFolders, // + &st::settingsPremiumIconSpeed, + &st::settingsPremiumIconVoice, + &st::settingsPremiumIconChannelsOff, + &st::settingsPremiumIconLike, + &st::settingsIconStickers, + &st::settingsIconChat, + &st::settingsPremiumIconStar, + &st::settingsPremiumIconPlay, + } }; + + auto iconContainers = std::vector(); + iconContainers.reserve(int(icons.size())); + + auto titlePadding = st.padding; + titlePadding.setBottom(0); + auto descriptionPadding = st.padding; + descriptionPadding.setTop(0); + const auto addRow = [&]( + rpl::producer &&title, + rpl::producer &&text) { + const auto labelAscent = stLabel.style.font->ascent; + + const auto label = content->add( + object_ptr( + content, + std::move(title) | rpl::map(Ui::Text::Bold), + stLabel), + titlePadding); + AddSkip(content, st::settingsPremiumDescriptionSkip); + content->add( + object_ptr( + content, + std::move(text), + st::boxDividerLabel), + descriptionPadding); + + const auto dummy = Ui::CreateChild(content); + dummy->setAttribute(Qt::WA_TransparentForMouseEvents); + + content->sizeValue( + ) | rpl::start_with_next([=](const QSize &s) { + dummy->resize(s.width(), iconSize.height()); + }, dummy->lifetime()); + + label->geometryValue( + ) | rpl::start_with_next([=](const QRect &r) { + dummy->moveToLeft(0, r.y() + (r.height() - labelAscent)); + }, dummy->lifetime()); + + iconContainers.push_back(dummy); + }; + + using namespace tr; + addRow(lng_premium_summary_subtitle1(), lng_premium_summary_about1()); + addRow(lng_premium_summary_subtitle2(), lng_premium_summary_about2()); + addRow(lng_premium_summary_subtitle3(), lng_premium_summary_about3()); + addRow(lng_premium_summary_subtitle4(), lng_premium_summary_about4()); + addRow(lng_premium_summary_subtitle5(), lng_premium_summary_about5()); + addRow(lng_premium_summary_subtitle6(), lng_premium_summary_about6()); + addRow(lng_premium_summary_subtitle7(), lng_premium_summary_about7()); + addRow(lng_premium_summary_subtitle8(), lng_premium_summary_about8()); + addRow(lng_premium_summary_subtitle9(), lng_premium_summary_about9()); + addRow(lng_premium_summary_subtitle10(), lng_premium_summary_about10()); + + content->resizeToWidth(content->height()); + + // Icons. + Assert(iconContainers.size() > 2); + const auto from = iconContainers.front()->y(); + const auto to = iconContainers.back()->y() + iconSize.height(); + auto gradient = QLinearGradient(0, 0, 0, to - from); + gradient.setColorAt(.0, st::premiumButtonBg3->c); + gradient.setColorAt(.5, st::premiumButtonBg2->c); + gradient.setColorAt(1., st::premiumButtonBg1->c); + for (auto i = 0; i < int(icons.size()); i++) { + const auto &iconContainer = iconContainers[i]; + + const auto pointTop = iconContainer->y() - from; + const auto pointBottom = pointTop + iconContainer->height(); + const auto ratioTop = pointTop / float64(to - from); + const auto ratioBottom = pointBottom / float64(to - from); + + auto resultGradient = QLinearGradient( + QPointF(), + QPointF(0, pointBottom - pointTop)); + + resultGradient.setColorAt( + .0, + anim::gradient_color_at(gradient, ratioTop)); + resultGradient.setColorAt( + .1, + anim::gradient_color_at(gradient, ratioBottom)); + + const auto brush = QBrush(resultGradient); + AddButtonIcon( + iconContainer, + st, + { .icon = icons[i], .backgroundBrush = brush }); + } + + AddSkip(content); + AddDivider(content); + AddSkip(content); + + content->add( + object_ptr( + content, + tr::lng_premium_summary_bottom_subtitle( + ) | rpl::map(Ui::Text::Bold), + stLabel), + st::settingsSubsectionTitlePadding); + content->add( + object_ptr( + content, + tr::lng_premium_summary_bottom_about(Ui::Text::RichLangValue), + st::aboutLabel), + st::boxRowPadding); + AddSkip(content); + + Ui::ResizeFitChild(this, content); + +} + +QPointer Premium::createPinnedToBottom( + not_null parent) { + + const auto content = Ui::CreateChild(parent.get()); + + auto result = object_ptr( + content, + QGradientStops{ + { 0., st::premiumButtonBg1->c }, + { .6, st::premiumButtonBg2->c }, + { 1., st::premiumButtonBg3->c }, + }); + + const auto &st = st::premiumPreviewBox.button; + result->resize(content->width(), st.height); + + const auto label = Ui::CreateChild( + result.data(), + tr::lng_premium_summary_button(tr::now, lt_cost, "$5"), + st::premiumPreviewButtonLabel); + label->setAttribute(Qt::WA_TransparentForMouseEvents); + rpl::combine( + result->widthValue(), + label->widthValue() + ) | rpl::start_with_next([=](int outer, int width) { + label->moveToLeft( + (outer - width) / 2, + st::premiumPreviewBox.button.textTop, + outer); + }, label->lifetime()); + content->add(std::move(result), st::settingsPremiumButtonPadding); + + return Ui::MakeWeak(not_null{ content }); +} + +} // namespace + +Type PremiumId() { + return Premium::Id(); +} + +} // namespace Settings diff --git a/Telegram/SourceFiles/settings/settings_premium.h b/Telegram/SourceFiles/settings/settings_premium.h new file mode 100644 index 000000000..cdc83c1b3 --- /dev/null +++ b/Telegram/SourceFiles/settings/settings_premium.h @@ -0,0 +1,17 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +#include "settings/settings_type.h" + +namespace Settings { + +Type PremiumId(); + +} // namespace Settings +