From aa7143a831e50c14f4b6e72eebaffc8c35baa332 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 1 Apr 2022 15:53:23 +0400 Subject: [PATCH] Allow adding Settings::Section-s without changing Type. --- Telegram/CMakeLists.txt | 3 + .../Resources/animations/change_number.tgs | Bin 0 -> 12761 bytes .../Resources/icons/phone_simcard_from.png | Bin 746 -> 0 bytes .../Resources/icons/phone_simcard_from@2x.png | Bin 1255 -> 0 bytes .../Resources/icons/phone_simcard_from@3x.png | Bin 2187 -> 0 bytes .../Resources/icons/phone_simcard_migrate.png | Bin 567 -> 0 bytes .../icons/phone_simcard_migrate@2x.png | Bin 1187 -> 0 bytes .../icons/phone_simcard_migrate@3x.png | Bin 2252 -> 0 bytes Telegram/Resources/icons/phone_simcard_to.png | Bin 868 -> 0 bytes .../Resources/icons/phone_simcard_to@2x.png | Bin 1435 -> 0 bytes .../Resources/icons/phone_simcard_to@3x.png | Bin 2167 -> 0 bytes .../Resources/qrc/telegram/animations.qrc | 5 ++ Telegram/Resources/qrc/telegram/export.qrc | 44 ++++++++++++ Telegram/Resources/qrc/telegram/telegram.qrc | 42 ------------ Telegram/SourceFiles/boxes/boxes.style | 10 +-- .../SourceFiles/boxes/change_phone_box.cpp | 48 +++++++++++-- Telegram/SourceFiles/boxes/change_phone_box.h | 31 ++++++++- .../boxes/peers/edit_peer_reactions.cpp | 2 +- Telegram/SourceFiles/boxes/sessions_box.cpp | 6 +- Telegram/SourceFiles/boxes/sessions_box.h | 4 +- .../SourceFiles/core/local_url_handlers.cpp | 8 ++- Telegram/SourceFiles/core/update_checker.cpp | 3 +- .../data/data_message_reactions.cpp | 2 +- .../view/history_view_react_animation.cpp | 2 +- Telegram/SourceFiles/info/info_top_bar.cpp | 24 +------ .../SourceFiles/info/info_wrap_widget.cpp | 6 +- .../info/settings/info_settings_widget.cpp | 13 ++-- .../info/settings/info_settings_widget.h | 4 +- .../inline_bots/bot_attach_web_view.cpp | 6 ++ .../settings/settings_advanced.cpp | 7 +- .../SourceFiles/settings/settings_advanced.h | 6 +- .../SourceFiles/settings/settings_calls.cpp | 4 ++ .../SourceFiles/settings/settings_calls.h | 4 +- .../SourceFiles/settings/settings_chat.cpp | 4 ++ Telegram/SourceFiles/settings/settings_chat.h | 4 +- .../SourceFiles/settings/settings_codes.cpp | 3 +- .../SourceFiles/settings/settings_common.cpp | 33 +-------- .../SourceFiles/settings/settings_common.h | 63 ++++++++++++------ .../settings/settings_experimental.cpp | 4 ++ .../settings/settings_experimental.h | 4 +- .../SourceFiles/settings/settings_folders.cpp | 4 ++ .../SourceFiles/settings/settings_folders.h | 4 +- .../settings/settings_information.cpp | 4 ++ .../settings/settings_information.h | 4 +- .../SourceFiles/settings/settings_main.cpp | 24 +++++-- Telegram/SourceFiles/settings/settings_main.h | 4 +- .../settings/settings_notifications.cpp | 4 ++ .../settings/settings_notifications.h | 4 +- .../settings/settings_privacy_security.cpp | 6 +- .../settings/settings_privacy_security.h | 4 +- Telegram/SourceFiles/settings/settings_type.h | 15 +++++ .../window/window_filters_menu.cpp | 5 +- .../SourceFiles/window/window_main_menu.cpp | 3 +- .../window/window_session_controller.cpp | 6 +- .../window/window_session_controller.h | 5 +- Telegram/lib_lottie | 2 +- 56 files changed, 318 insertions(+), 179 deletions(-) create mode 100644 Telegram/Resources/animations/change_number.tgs delete mode 100644 Telegram/Resources/icons/phone_simcard_from.png delete mode 100644 Telegram/Resources/icons/phone_simcard_from@2x.png delete mode 100644 Telegram/Resources/icons/phone_simcard_from@3x.png delete mode 100644 Telegram/Resources/icons/phone_simcard_migrate.png delete mode 100644 Telegram/Resources/icons/phone_simcard_migrate@2x.png delete mode 100644 Telegram/Resources/icons/phone_simcard_migrate@3x.png delete mode 100644 Telegram/Resources/icons/phone_simcard_to.png delete mode 100644 Telegram/Resources/icons/phone_simcard_to@2x.png delete mode 100644 Telegram/Resources/icons/phone_simcard_to@3x.png create mode 100644 Telegram/Resources/qrc/telegram/animations.qrc create mode 100644 Telegram/Resources/qrc/telegram/export.qrc create mode 100644 Telegram/SourceFiles/settings/settings_type.h diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index f119a1041..803808420 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -1071,6 +1071,7 @@ PRIVATE settings/settings_privacy_controllers.h settings/settings_privacy_security.cpp settings/settings_privacy_security.h + settings/settings_type.h storage/details/storage_file_utilities.cpp storage/details/storage_file_utilities.h storage/details/storage_settings_scheme.cpp @@ -1286,6 +1287,8 @@ PRIVATE qrc/emoji_6.qrc qrc/emoji_7.qrc qrc/emoji_preview.qrc + qrc/telegram/animations.qrc + qrc/telegram/export.qrc qrc/telegram/telegram.qrc qrc/telegram/sounds.qrc winrc/Telegram.rc diff --git a/Telegram/Resources/animations/change_number.tgs b/Telegram/Resources/animations/change_number.tgs new file mode 100644 index 0000000000000000000000000000000000000000..fc113e1da591cd95237e68870d6fd10d33e62c72 GIT binary patch literal 12761 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 Rmq7pk002ovPDHLkV1n^4TucA} diff --git a/Telegram/Resources/icons/phone_simcard_from@3x.png b/Telegram/Resources/icons/phone_simcard_from@3x.png deleted file mode 100644 index a0df7abaa7ff6f1532787687d0cfcfe03d39f7ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2187 zcma)8dpr}|A0EkFqPbLx{N`57En04|jLj=|TI+(6*Xz3GI`zIbi_vmv!;ss^b&(K# zHpN1^n2d72Un0!-FiA_l_5RhL?;q!!=X}p|&gWd7bDopx=He(PeMA}n0LUTW_8!9W zFJa1*6c^?)>aZ06K+*$YZ|4Agwu> z9dbOgWc!gzg)j)=9hW{%ML27Fo^O-LPAscxo9bb+H|hv$Goa;V8RoaG1D?wH6(Q;Kb8TRl+ggy!I+)~pTkjumwzn)qBsITncM$Dv>kKxtJlA=n90Vsz_T44}GC?952vJ+I7!D)_KqvypAOHvffd7|3;L1zqfH0B95m_I)Qha=TNlS}La&mGzH)eBc5I=;v#R&pdR#ep2 z)?QdCH#rp?78V9EGfSF5=U%LKi$pv{$~rnYxRF6?q9^|%gJ#~mk$ipKxb}~V!bc>M zOhI0r9nAf?N^4Gqu5@ot&vaK;l27@7L;v2MjfL8Qwf%u3Y6m3Nc)SpI8@?7yQz0}W zV)2@n8S3_JrZ&&J#_66z+3@J-yBE2^&4YtJ_Z`ZDbKI>F5)u-_91iP63aTkR{eTq& z;zrL}hQC|DK#YvqU&NuB@pzG*1x#?3=P^WMW22U#Q_f8_b#=$KDc=oo?PtJ7#q{*_ zKHk^4ogK)#hASr9tE-`~jrT9F4T{9Z#&UvAE5FFCs{_l56TBDuocb>$vNU3%qm|Oa zP9M1y8{4w1_LX&|e|Q+lk@>Q^+S$?3k&ju=yqgji7nf34SO}ZTNK5;aH3!ah8XXzY z+ieiaFg!H$V*!y0vhU>c`K4uA4f=Dvy)JBQ_^T+OfWIg!A z7^Z(z)Yjx2l}er7{5Gt8^Cr_xx1{U3-tOhrrlwBN#iwfJM`Utxa_)VuN9rSWfw}Y0 zfH05PmndcHBByce}&~t9$GQLx>P6JQBK0tl@-Ki$(SO*RQmim!9RO~ zJa3D-(6BHi>+q+@_63ZwaN9gQJr6m%xF}mMvLBv#+<&Y5W3;de6-JqNdwlNNqMF6M zP|eB8xEdS-36NGWKAth)5qy7!p*z#rDFz0EXTS2MPN7JSGKeIoNP=JoPa=^Z#>Vcx zBt=clz{X3cNy>>DgRJk|v6f_%?wJShDsLwghB2tUMIIQs3#BoxwORwEtFJ;w#c89T z(UA3(p(m&;`4bP>!Q`dcS<%YMN{*iq+7NBP_A{E^+B#iSTpZ%j5^7G$bg48$#IU!w zoBJ+r3U5{j>PeJETKkQ28up!N$bCcKm%!^3x{Bd7^w|7KWfE;`@5k*sdxEp;n$-8K z-QC^7v95(pEPL1ANHsi6Wsx7xn%h86fO~mgI|y))sFjx9Jy8OIU<84@sg;k{R!qgU zHaEX!s@p4w;sJ1nG6m0SU{h1m`kMTPdfPug5*;&+;|thmr4#dM&;WP z&g^-^W@jrkjd8Pk zLcGnT28V`-HpTL;E-rDtbT@(E+o8X0)GZ2o-~E~NRz+CL>pni$} E2UZyy^#A|> diff --git a/Telegram/Resources/icons/phone_simcard_migrate.png b/Telegram/Resources/icons/phone_simcard_migrate.png deleted file mode 100644 index 4f260997cdfa03b48f35a117f6574a22314192a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmV-70?7S|P)X1^@s6sPETi00060NklWTz+@2>153Nu#Ky>iU6>jo z{l429&*R7A$MwcZ?$Vo_`^jx{?>QwR0*fJvBI5BllUz3jn?!;jV7XkP*XtpXNPISy zh%g)u0RX0HqSNWT1I;d3ye1R;v}Z+bs@<15DGriB6?bu-R;&N~MC$W&@t*zb#g+RsjIIuAf0hqtU;F>2&(3 zH{UqG_QUh5PXAlYMo_FxQ=Y_X@^?HiD6vH#=0!C&%`)`hd*UzY#?002ovPDHLk FV1hvb2qgdj diff --git a/Telegram/Resources/icons/phone_simcard_migrate@2x.png b/Telegram/Resources/icons/phone_simcard_migrate@2x.png deleted file mode 100644 index 4a27a4aaf80c467becd21a430cdc473e8d12f6f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmV;U1YG-xP)cKbZ~HSawEQA@{7?pYodcj9WlniL3WKU zI+@^0;y_~JV4{dXq7@?NF4y0^NGYYXeID*N`3^+de*JKIPH3NE000EaWHOl`pU;zy zQIiI=Nr8z65OpjT!*6|j zeAFXg;sHdxy1I%#RcC;S2N3nx*jNeJIs;5RfT%k=J298bm4#aefQbhXwbg3HL?R&x zmU6(v1C;gA(UB~$lmaFmpsbgcmZ}0v8DR1N%XxHkR1sK80Fwt;&K$>~AP62 zz;ZU5&3J!*Uo%)jfXM@t^5Nm3YG8E+Odg(;7Z(>*2dfic^6;cQJUpx!Sd9UbhbQIM z)>eFff7cwY27t-Kld{QV!ke2LUBIdgm^{2njz*)pf>jAHd2p3HJ3C7RY>j})gRA7B zp&_DRzf}!j76ASO9mOyVIGs+&=ktJwvbK47d4WtO1BpZelF20G^La3tOu(`%uq>-_ z;y*GPjnLQE2a}VN(AL%l4-XIU^zrcpM^;2%MgtR())X#R7J_9a>si!0Yvb&*uY=$5ZsWv9S?sHX9fWhN|~3SArlw zG#Z8V^>w(qx+?iQ@;r|V3k%5eysT4mYHA8InGAk?ec{>J88$UFRosT-I83EdMW1Pk7F{KRJ|4K?d=t{0>#6tqoV`dZZ}+9 zTvRo@R#sMk=XtokzJ^F70w*UYRUi9%czHY?@cDct!^`XSg3ILstJPXmL26471lZr- zhqbk}lHsKotWq%y0}h7+ve_&Y3I$o)xLhuno}LE3-w!^Y54>J4G&eVc)oO)?h6arj zmr4rg-_mt>C^1c65PqKW88@2owS8V0d+RcWbt9r9(-sh*zbQwYvSSc7=+VJiKz&V!?(E zKgyKN6~g#4<)%GUYX^rWZ^NX3KcQ&0HUsTsXRqM z=>{wJ;SLIc(hauK<46<(MF5J2m)JKhT85Hb5&v|>{PU4d+ACDV!~>Mr;c#F&oyJ@) zSC2sH1>4oth1=WP7z%}mXHjb1Zzjsozwkp4zW`^|2W4}iE`b05002ovPDHLkV1m|t BBhvr? diff --git a/Telegram/Resources/icons/phone_simcard_migrate@3x.png b/Telegram/Resources/icons/phone_simcard_migrate@3x.png deleted file mode 100644 index 4df340affd5af925a7d2bbe9385c69683acab61b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2252 zcmV;-2s8JIP) zdq|UA9LLW#ojJR(!frFk`vq?xSy>`P5HScT3r!+~3M1712m+C4)5;4`io^&}qi7={ zyJ$&7)E}}+mo79aGzk-w+{#?jZ9e^a(=4}3wqJm>d2zwbFdmvi24v_n|1_=O2VLPCgAsU%OIJ|%LwoCpL0+954C@VBd= zpa5pG84g~*evQ3*_d+NXQjcwchgVAVeY&^%!{*_*l!AF9*Xg zvl;;aK79Cq!oorX1_n}(l{bM8)!*MgrwJSk4GrP=@#6>z3Zfn_Zvr2vxw&~>6FB(% z`7=(QJPChbd?U_t5W>290Afx%$FnKNe~ zl}f4S!JEJf1q1|OYHG@3BLKj}#01WrJBQHFQ0n>cCh$<5ot<8pz=6qR!o`ahv2NWu z>N)Wya8s8rUuMMw4yLB2(9qC;@bGZzx$!1&QTh4#teU`q#bQBYVbdeJaH8??ai1Ci02qeBty{N{nwm;IU)}_>=;6bMJ~x2_ zyWNg^_wFGhBZGS0&g2)5l7HpZt5=-0B@hV6o;`cW%a<=nM@I+A%F5!bZFiyWL@u>^ z_ioN+g4uZX>=}0M+)2G3eiQWoI8|t9C{+_U&}y}i%jFOV1l0S)?@T}l!N9-(Z4dlJ zr_&)PCx^Bf=of`+snu%Qwf}=RZ{8p;FOSM%tfEjFACR^NF=b?Y_#j_62rs8C@wBW zaBwhh0=A{o>1fy2Ek;L2aq845EM2;kHvwBxsZ_M<>Jj7P<0vmL$BGpzcoTT5!oot@ z_4JBw-@c)uq5`W{t>R7Ksbn%4+S}VPIy&lfIr>6pa&i*2wY6BYW({uwPb85@uy5Z! zba!`SW@d(VJ-xzgHlx129${f&Zuf)0;e>^ZSS%(*MMWe(Kc6HeB@sdh>FetwYPFiE zR4QV%T3Kl$GBT3H#>SG^*jN%16Z2DHVPRe$pDV0ZD`{zIAyrjXWN2u}<-cQXWCaHY zL!nS$U|;|iivwlgWHKV}yi+AT2Eo2M!!SSy>rc zT3VphYVqaE7Y@g|d)RC?w6wG!E-ucM9NC*%=UT|w+1csQMh>x9?9>1bdV71R?HXFS zawRrz-i$+s4xyr=0ve45I-L%alap-M)gu^&fm*Fba&q$gCJ>9osH>}k!C-*VXhdCI zom+RSluD)3V9uUB>vjhh7Zfpar_XJI*;e9KRaLp1@O)3^1_uY-?nJFt>vED>t(JPxU6n{ALPSIa zcJ11Q6DLlfzP=uMy&iVE-R?SZ641fHx!C-JXF^k3Gv|)?I;&x}vcg$az zo}Q*&TyL~x%N7g|4})PC%*@RA)DY$6<^OA&wMSLM!^0#hDr(N3kBp44)zqxmY&M@B zpG|~9Aqfu;CowTGKd(mO&x=L7)o%U((P7IAkqemx( zzPLIlDJgL|!IF{^DutFxrO3$0KtVwPlu9MkYBh8^9VR9w*s7h^JbwHb+qZ9bmIr$s z!uEZFpr9c1_V&)3q+YN0=_R5>B0*|uDsppkQC3!l=H_N}c6Ki4`vd^c(b0j-%*=W7 zTkv-bWilCQYilEEX=$_mT(8#?xm@n`IY(e%;GB01H*DD8)v>we(W6I1sZ^2|FJ8F( zH&mukcO({zQCeDxuC6YaOeUC2CUkXmp|rHrtCcqri3GX1x#;fhUNnnLoYCIi?&(Gs z`bDOppr9b!xN!qtzka1%JFl?Y?RfCu0XA*gBRNV=lg4V2Q-UMA{*^1pspQ?p>l(DoJl|FZ;*$ zM?HW3oc4_F5)8xO_U+q9NlEc#f6y-o4ULYD(yp&l9G`J8&m&;o1fEJNmC~;9oG=Un zjYfl{q$Do;gnm)D*0yciXxI7=7>2>kn>Ue|n8mRb_!f%=SFc{h#*G`P=jy8b?&=^uKHewCwOXyDsi}!n zRaKEspFa7d4PQdtiCjvf(Xc-9uUxsZ*gxrC&aY=~Xv> z$gi#r+<9AynZA0~mqS^%j00002KYPE{P!$T}BEn!j$ z!w`mHpwVckce=j5rfKTn;D7+AwfFb;slpHu>AJ24<2cULVTg#1kB^fBLqud4Msi?? zh)zyUk^@6Tbar-@92g>^a=Dxw7$Tzc^Yi4u5D{HmTqFmEi0Jb2k^sF6Wcm*yQ=(v$@=Oo}czAfg%gYNq&r=>eolawGYYV%( zyWpIU?l39?-{0SprfKS>V@%UDjqdL5hR)+S&hYENG|gW@^f%Kqhr&oR@Y~xPwzs$8 zx~}rJWV2ZqhJi2)0RW6KSeAuGqk$j@u(Gm(=jUgvudfgE6++0jDYo7i(en9x>{wS< zS5Zv4T$Zkk)J>0%kIF03Rd+@DwYRsYG;Sx7?5wZGDt5kjEdZlm39N6$Ftu`45U)5KtQc6O8o`zvlT3p!cRNl}fNI3$E)z z2mv7kJkOK5sTS}iIR3KJ^e%EbEMO0rC1@vc=e3xz&}-@-YDmN-=8%D0KoTs%$ue;YYqT_ uX_{E5R4M>4@xORf<@-KvZ*NhlRPYDjw^N}3>Ii250000 zPe|)Z6o-G;UV}m)L2t2}LRW$yD6WKx6a+y~3T{*if>0=^Q0S^!khc)rxzm*hg3=x?Y;A49@Ap>}r{=@}|H&C19yT4LCdB}N!{NZ@<|al*M@?;CvtoeXa^mqg z0)YVYwlyv0mG$*?jE|2qZSyU}0KnSX8YU(t47dL_VgO)ubrr#2&{$);d#rX43WYu% z64;%jT})3;3o$gp;jj=xBNB-SF*Ksls1QRV7K;fnH0I{!gcut0^YcViRq}%nLMrb% z)fP)jOAulxe5)Y=3qlM9A%=nwLqUk4AjD7*VkihP6oeQGLJS2VhJp}7L5QL7)2hI_ zu0z*#6pKYm;yWA;NRkAr>U+3~xx2f=_VzaR_xEvreva$wYdk(a^4!HA8X6kla=Fmn z-VUG72fyDBr_;%A2RvrI^7%Z8#bU(ibXrngYGi3@Y9g^%jO6oq9*0!<)Mh4=A#H7K zwh4K^w6?Z#DbKA)Oe&QkvMk#!SF!*?1Ag#vV4FZs8wt}YxN9-4bE!i>#@g@sS~uTM@+5<-4gf76zW ziwiP0H%Gms7Zw&woiWT}G)*HOkLOdwgu`LOc_oucB1zI;F+3g*(KLdg+zJvS|k%JU>4J0PgSaKWr<@G9Dft zxb3^D#jLEXU}Iy$aC@F}KUFQ}b+XG2xQUTvndurYH^zCz$XMwu#bS}$<-|=)JRZlu zz<{B|6h*<*)D)JNm&>*b27_2yS~C0@v$wa0p`jteIhTX`8AI!2y{Epu-f$bEF=bgc z)XoUpZr4^#dfSylP4#1VBE(P-VkihP6u61uIZmmD9Jt-CA08eIcd!&i`7;hGhn-_3 z=BEUmot-5oeyX|W+tJa1lamv}aRAO|3~$6(iGmm_Q4nLL588;aQWfR!EjoB+`ZvsC zT3TAT?VLBX9B4V0gIP>RM@Px^Mm`|lV&t@Ey)a$TmxEc1&*y{3NJAcXyc+;KlClZpkMK9*+k;pN}~n^X*zu6of({ z%*@REZ@sST7#kZyBoaX&5GZ?H^BgN(U0orONMLbsv1Era6bc!>-M__>imFO0p?Jml z^olA%YQF|gRBc)zh7eKbTNX{zs-iMH8jYH&w<`tLuQ0IlU4o&ZAyYkE8kT*x!&iU% zM11K5g>NysHiHmDL5QIs#89ZS>+wW2qw6~AE-x?b&ZFwMyu3tRB9X8=kE$b)NZ?EV z#D^86(`n*zxyYCOQ5Y*or_;pkb`w=qiNoo1{*%k)u(Pv+>+5U$`t=K{sv3GARtppg p1)QCoVR3O0v$M0%G!3e%;$Q8??KK&XE|LHM002ovPDHLkV1n3sr;q>u diff --git a/Telegram/Resources/icons/phone_simcard_to@3x.png b/Telegram/Resources/icons/phone_simcard_to@3x.png deleted file mode 100644 index fa2d93ffa3c8735f984f2c04b3d31395ed733695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2167 zcma)8c{JPG7XB$}Zc#d!DuPrEMa)4(w1OH!s&oocEk*GVvyf60AtD5$G zX{xGbqPR8RtGLwc;u3DwTkEa&{=9#jbH26Cx7OZ!?eE)bC)wNH5D~m62mpWx(h`B< zyk4A>&VQ0~3&~k50|37X5@F^Pn*Xz)-&)E}qJ5gys}!F&N74Kx*Syl04Eg%%h3J|U zC3#Qz-#fH($Gpa&Rz!NV&`6vtEVt0rci^xcBk2V%9eKP$xlZzlTZ>4)bw|ha5iW$Z z8_N~U%p2cb$_?_2Qs4sMl91#R_p8rEn#gVc`6nEQ)6*}ot@-}*7l@UPd~>EHxP4*E z43sfroOK7INUg3u&5kxLEGTd@7AJNN&Ih8i&TzYiX#~BWY^tk^%gM=U-FjoBB!NEU z)y)%GSXj_}-M`gWK*_aXvCqkwMyF8h6LD=#ZXgHTgY(kTpE5JgOoh#*ArX^Dl!}Vb z=;%Hp(=rB6k>7E0@r59%z9QO(+HoHdwycw28V8eKzg{Td8)hO|Bj@}Y-_M$OIt%eR zI6tVWs#v8I z%c7~*-JU)@otBn%slb*{=9Q3Y?jXVG`Am=@rM#RkJR-ski{)`b&&O18SGxubK9(pi zFR!Iidlyk;$#)G6y7`5LpZ)cFuAm<`mE2ZM@bK_}AjNT9*-#|O-^WMTqc(T&vbHTs zH?L!S+{H;EKH}pOujHbcl@(RbdY59Rr4+SqjzqE*<)hF5hfq`+>*4Fx(nz41NIVr|^ zdgV6^$E|;zp1x5z^7YD!Ess{uZf=qu zS`JexRA4bjhf~WOd(7+}jE8*v8bYzZ_MFLxD$DX#4Lv@J8Z?nU#dlVaS1C$fD<8?g zh?2U%mHuUAA3l6o+~LTTfk}6X=>bRWt;eDv!;ZFUJJ&9?SDAW};1tnH`?3WFVJM<> z)<5?@r2Wl!^qUs^Lz7&jp`oF>WQ970eA<&Vv;?iR4`%G|8`R(KQ7K9coRBX5uC^TQ zveUu#k}npUmm9vh*lhGaS>Y*i(kX}7hd(r(1bhF9-0&2kD$g-V9p-tJc+dZrXo#ml z3I+98NdVABo|ZGga#E@p_vvxh%)~Z+cZshMdX<+)?r>M?S_-NYM4zka;nPOiy*7FH z-_&8Ur#V%Y+e5M*JW#!~XS$rDEUVPO}Pm6ew(A@U%1^_=3(Lg7KG z{c7XW>5CQiexQtjE7?wgE#H)ax|XJ&!6_~3Q?i2b+qUvD1bg4DP}ttiva`a_^Yrd{ z;U!33?_5uhu&e6XRRLP5i|W~YGMQncqdCpJ_Po{F6rK5~zmQ7&hkjiwg zoiJ4ITiA*nU7ioWJ25mQ4ogIU+8s$nkgG75Fq6rg_>A!cW$=IDOp?}4GYNT7emwS_ zt0vh7Zfz~Jwjp}FzC5ZCy1gj&rTOluskW%@2-qi?!`pSzr7vI|ktNorl1v6U;pG7YZVQ;jlSzfr(I2 zMd?$_xj9f{tk|fky84kAkH3c!*InbFBK67xw6IrTRvT7FpQF z#-@E~>Fq2*0kE~RbBl~T)Gz~ZFdWX`A1E#^_74bf8=K+Bzjz^ZUPdOKKp+@ZPdC@R zsZhB{hflpJL0xu2zZ-+Ev9Gk-6~Z*J3$+;n@$fN@-@SF(_E7X*PiA~PZ_mP3>smSO z%fePuO$}Z*kD9NRx%nr0!cUJzqiwb|wqSyTB`5uGiU+RQzHvJ{JCy0Q&iZ=osa+Kb z)0iW~hiM|4&CXsEJk~{DPALmy*%Jn#=qb!6adn~7D0n!;{FE9b_A3F diff --git a/Telegram/Resources/qrc/telegram/animations.qrc b/Telegram/Resources/qrc/telegram/animations.qrc new file mode 100644 index 000000000..eac41dc7f --- /dev/null +++ b/Telegram/Resources/qrc/telegram/animations.qrc @@ -0,0 +1,5 @@ + + + ../../animations/change_number.tgs + + diff --git a/Telegram/Resources/qrc/telegram/export.qrc b/Telegram/Resources/qrc/telegram/export.qrc new file mode 100644 index 000000000..06ecc7eb7 --- /dev/null +++ b/Telegram/Resources/qrc/telegram/export.qrc @@ -0,0 +1,44 @@ + + + ../../export_html/css/style.css + ../../export_html/images/back.png + ../../export_html/images/back@2x.png + ../../export_html/images/media_call.png + ../../export_html/images/media_call@2x.png + ../../export_html/images/media_contact.png + ../../export_html/images/media_contact@2x.png + ../../export_html/images/media_file.png + ../../export_html/images/media_file@2x.png + ../../export_html/images/media_game.png + ../../export_html/images/media_game@2x.png + ../../export_html/images/media_location.png + ../../export_html/images/media_location@2x.png + ../../export_html/images/media_music.png + ../../export_html/images/media_music@2x.png + ../../export_html/images/media_photo.png + ../../export_html/images/media_photo@2x.png + ../../export_html/images/media_shop.png + ../../export_html/images/media_shop@2x.png + ../../export_html/images/media_video.png + ../../export_html/images/media_video@2x.png + ../../export_html/images/media_voice.png + ../../export_html/images/media_voice@2x.png + ../../export_html/images/section_calls.png + ../../export_html/images/section_calls@2x.png + ../../export_html/images/section_chats.png + ../../export_html/images/section_chats@2x.png + ../../export_html/images/section_contacts.png + ../../export_html/images/section_contacts@2x.png + ../../export_html/images/section_frequent.png + ../../export_html/images/section_frequent@2x.png + ../../export_html/images/section_other.png + ../../export_html/images/section_other@2x.png + ../../export_html/images/section_photos.png + ../../export_html/images/section_photos@2x.png + ../../export_html/images/section_sessions.png + ../../export_html/images/section_sessions@2x.png + ../../export_html/images/section_web.png + ../../export_html/images/section_web@2x.png + ../../export_html/js/script.js + + diff --git a/Telegram/Resources/qrc/telegram/telegram.qrc b/Telegram/Resources/qrc/telegram/telegram.qrc index 9826d3107..6e477ef03 100644 --- a/Telegram/Resources/qrc/telegram/telegram.qrc +++ b/Telegram/Resources/qrc/telegram/telegram.qrc @@ -1,46 +1,4 @@ - - ../../export_html/css/style.css - ../../export_html/images/back.png - ../../export_html/images/back@2x.png - ../../export_html/images/media_call.png - ../../export_html/images/media_call@2x.png - ../../export_html/images/media_contact.png - ../../export_html/images/media_contact@2x.png - ../../export_html/images/media_file.png - ../../export_html/images/media_file@2x.png - ../../export_html/images/media_game.png - ../../export_html/images/media_game@2x.png - ../../export_html/images/media_location.png - ../../export_html/images/media_location@2x.png - ../../export_html/images/media_music.png - ../../export_html/images/media_music@2x.png - ../../export_html/images/media_photo.png - ../../export_html/images/media_photo@2x.png - ../../export_html/images/media_shop.png - ../../export_html/images/media_shop@2x.png - ../../export_html/images/media_video.png - ../../export_html/images/media_video@2x.png - ../../export_html/images/media_voice.png - ../../export_html/images/media_voice@2x.png - ../../export_html/images/section_calls.png - ../../export_html/images/section_calls@2x.png - ../../export_html/images/section_chats.png - ../../export_html/images/section_chats@2x.png - ../../export_html/images/section_contacts.png - ../../export_html/images/section_contacts@2x.png - ../../export_html/images/section_frequent.png - ../../export_html/images/section_frequent@2x.png - ../../export_html/images/section_other.png - ../../export_html/images/section_other@2x.png - ../../export_html/images/section_photos.png - ../../export_html/images/section_photos@2x.png - ../../export_html/images/section_sessions.png - ../../export_html/images/section_sessions@2x.png - ../../export_html/images/section_web.png - ../../export_html/images/section_web@2x.png - ../../export_html/js/script.js - ../../art/background.tgv ../../art/bg_thumbnail.png diff --git a/Telegram/SourceFiles/boxes/boxes.style b/Telegram/SourceFiles/boxes/boxes.style index 2525fc5be..111bea5b8 100644 --- a/Telegram/SourceFiles/boxes/boxes.style +++ b/Telegram/SourceFiles/boxes/boxes.style @@ -576,17 +576,13 @@ colorValueInput: InputField(defaultInputField) { colorResultInput: InputField(colorValueInput) { } -changePhoneIcon: icon { - { "phone_simcard_from", changePhoneSimcardFrom }, - { "phone_simcard_migrate", changePhoneSimcardTo, point(30px, 11px) }, - { "phone_simcard_to", changePhoneSimcardTo, point(78px, 0px) } -}; changePhoneDescription: FlatLabel(boxLabel) { minWidth: 332px; align: align(top); } -changePhoneIconTop: 20px; -changePhoneDescriptionTop: 96px; +changePhoneIconTop: 16px; +changePhoneIconSize: 96px; +changePhoneDescriptionTop: 128px; changePhoneLabel: FlatLabel(defaultFlatLabel) { minWidth: 275px; textFg: windowSubTextFg; diff --git a/Telegram/SourceFiles/boxes/change_phone_box.cpp b/Telegram/SourceFiles/boxes/change_phone_box.cpp index 0fc45233e..643f04b0f 100644 --- a/Telegram/SourceFiles/boxes/change_phone_box.cpp +++ b/Telegram/SourceFiles/boxes/change_phone_box.cpp @@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_session.h" #include "data/data_user.h" #include "mtproto/sender.h" +#include "lottie/lottie_icon.h" #include "apiwrap.h" #include "window/window_session_controller.h" #include "styles/style_layers.h" @@ -66,6 +67,26 @@ void CreateErrorLabel( } // namespace +namespace Settings { + +ChangePhone::ChangePhone( + QWidget *parent, + not_null controller) +: Section(parent) { + setupContent(controller); +} + +rpl::producer ChangePhone::Title() { + return tr::lng_change_phone_button(); +} + +void ChangePhone::setupContent( + not_null controller) { + +} + +} // namespace Settings + class ChangePhoneBox::EnterPhone : public Ui::BoxContent { public: EnterPhone(QWidget*, not_null controller); @@ -434,7 +455,22 @@ void ChangePhoneBox::EnterCode::sendCodeFail(const MTP::Error &error) { ChangePhoneBox::ChangePhoneBox( QWidget*, not_null controller) -: _controller(controller) { +: _controller(controller) +, _icon(Lottie::MakeIcon({ + .name = u"change_number"_q, + .sizeOverride = { + st::changePhoneIconSize, + st::changePhoneIconSize, + }, +})) { +} + +void ChangePhoneBox::showFinished() { + animateIcon(); +} + +void ChangePhoneBox::animateIcon() { + _icon->animate([=] { update(); }, 0, _icon->framesCount()); } void ChangePhoneBox::prepare() { @@ -473,9 +509,9 @@ void ChangePhoneBox::paintEvent(QPaintEvent *e) { BoxContent::paintEvent(e); Painter p(this); - st::changePhoneIcon.paint( - p, - (width() - st::changePhoneIcon.width()) / 2, - st::changePhoneIconTop, - width()); + const auto left = (width() - st::changePhoneIconSize) / 2; + _icon->paint(p, left, st::changePhoneIconTop); + if (!_icon->animating() && _icon->frameIndex() > 0) { + animateIcon(); + } } diff --git a/Telegram/SourceFiles/boxes/change_phone_box.h b/Telegram/SourceFiles/boxes/change_phone_box.h index ee34b7776..a7dbb1f80 100644 --- a/Telegram/SourceFiles/boxes/change_phone_box.h +++ b/Telegram/SourceFiles/boxes/change_phone_box.h @@ -8,14 +8,40 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #pragma once #include "boxes/abstract_box.h" +#include "settings/settings_common.h" + +namespace Lottie { +class Icon; +} // namespace Lottie namespace Window { class SessionController; } // namespace Window +namespace Settings { + +class ChangePhone : public Section { +public: + ChangePhone( + QWidget *parent, + not_null controller); + + [[nodiscard]] static rpl::producer Title(); + +private: + void setupContent(not_null controller); + +}; + +} // namespace Settings + class ChangePhoneBox : public Ui::BoxContent { public: - ChangePhoneBox(QWidget*, not_null controller); + ChangePhoneBox( + QWidget*, + not_null controller); + + void showFinished() override; protected: void prepare() override; @@ -23,10 +49,13 @@ protected: void paintEvent(QPaintEvent *e) override; private: + void animateIcon(); + class EnterPhone; class EnterCode; const not_null _controller; + const std::unique_ptr _icon; }; diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_reactions.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_reactions.cpp index bc2a029ff..c571ebdd5 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_reactions.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_reactions.cpp @@ -53,7 +53,7 @@ void AddReactionIcon( }, icon->lifetime()); const auto initLottie = [=] { - state->icon = std::make_unique(Lottie::IconDescriptor{ + state->icon = Lottie::MakeIcon({ .path = state->media->owner()->filepath(true), .json = state->media->bytes(), .sizeOverride = QSize(size, size), diff --git a/Telegram/SourceFiles/boxes/sessions_box.cpp b/Telegram/SourceFiles/boxes/sessions_box.cpp index 6af1aaf57..dc0566344 100644 --- a/Telegram/SourceFiles/boxes/sessions_box.cpp +++ b/Telegram/SourceFiles/boxes/sessions_box.cpp @@ -289,7 +289,7 @@ void RenameBox(not_null box) { Unexpected("Type in LottieForType."); }(); const auto size = st::sessionBigLottieSize; - return std::make_unique(Lottie::IconDescriptor{ + return Lottie::MakeIcon({ .path = u":/icons/settings/devices/"_q + path + u".lottie"_q, .sizeOverride = QSize(size, size), }); @@ -1163,6 +1163,10 @@ Sessions::Sessions( setupContent(controller); } +rpl::producer Sessions::Title() { + return tr::lng_settings_sessions_title(); +} + void Sessions::setupContent(not_null controller) { const auto container = Ui::CreateChild(this); AddSkip(container, st::settingsPrivacySkip); diff --git a/Telegram/SourceFiles/boxes/sessions_box.h b/Telegram/SourceFiles/boxes/sessions_box.h index ac6654015..c096b0a55 100644 --- a/Telegram/SourceFiles/boxes/sessions_box.h +++ b/Telegram/SourceFiles/boxes/sessions_box.h @@ -16,12 +16,14 @@ class Session; namespace Settings { -class Sessions : public Section { +class Sessions : public Section { public: Sessions( QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + private: void setupContent(not_null controller); diff --git a/Telegram/SourceFiles/core/local_url_handlers.cpp b/Telegram/SourceFiles/core/local_url_handlers.cpp index a75c5e39e..d8c4f4b92 100644 --- a/Telegram/SourceFiles/core/local_url_handlers.cpp +++ b/Telegram/SourceFiles/core/local_url_handlers.cpp @@ -38,6 +38,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_controller.h" #include "window/themes/window_theme_editor_box.h" // GenerateSlug. #include "settings/settings_common.h" +#include "settings/settings_folders.h" +#include "settings/settings_main.h" #include "mainwidget.h" #include "main/main_session.h" #include "main/main_session_settings.h" @@ -435,10 +437,10 @@ bool ResolveSettings( controller->session().api().authorizations().reload(); } const auto type = (section == qstr("folders")) - ? ::Settings::Type::Folders + ? ::Settings::Folders::Id() : (section == qstr("devices")) - ? ::Settings::Type::Sessions - : ::Settings::Type::Main; + ? ::Settings::Sessions::Id() + : ::Settings::Main::Id(); controller->showSettings(type); return true; } diff --git a/Telegram/SourceFiles/core/update_checker.cpp b/Telegram/SourceFiles/core/update_checker.cpp index 2cec99a73..2d27e9c40 100644 --- a/Telegram/SourceFiles/core/update_checker.cpp +++ b/Telegram/SourceFiles/core/update_checker.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/info_memento.h" #include "info/settings/info_settings_widget.h" #include "window/window_session_controller.h" +#include "settings/settings_advanced.h" #include "settings/settings_intro.h" #include "ui/layers/box_content.h" @@ -1652,7 +1653,7 @@ void UpdateApplication() { controller->showSection( std::make_shared( Info::Settings::Tag{ controller->session().user() }, - Info::Section::SettingsType::Advanced), + ::Settings::Advanced::Id()), Window::SectionShow()); } else { window->showSpecialLayer( diff --git a/Telegram/SourceFiles/data/data_message_reactions.cpp b/Telegram/SourceFiles/data/data_message_reactions.cpp index 42aac1b24..958b85bcf 100644 --- a/Telegram/SourceFiles/data/data_message_reactions.cpp +++ b/Telegram/SourceFiles/data/data_message_reactions.cpp @@ -234,7 +234,7 @@ void Reactions::loadImage( void Reactions::setLottie(ImageSet &set) { const auto size = style::ConvertScale(kSizeForDownscale); - set.icon = std::make_unique(Lottie::IconDescriptor{ + set.icon = Lottie::MakeIcon({ .path = set.media->owner()->filepath(true), .json = set.media->bytes(), .sizeOverride = QSize(size, size), diff --git a/Telegram/SourceFiles/history/view/history_view_react_animation.cpp b/Telegram/SourceFiles/history/view/history_view_react_animation.cpp index c5804559d..f332fba6f 100644 --- a/Telegram/SourceFiles/history/view/history_view_react_animation.cpp +++ b/Telegram/SourceFiles/history/view/history_view_react_animation.cpp @@ -45,7 +45,7 @@ Animation::Animation( if (!media || !media->loaded()) { return false; } - icon = std::make_unique(Lottie::IconDescriptor{ + icon = Lottie::MakeIcon({ .path = document->filepath(true), .json = media->bytes(), .sizeOverride = QSize(size, size), diff --git a/Telegram/SourceFiles/info/info_top_bar.cpp b/Telegram/SourceFiles/info/info_top_bar.cpp index daf21dcc6..3b7155349 100644 --- a/Telegram/SourceFiles/info/info_top_bar.cpp +++ b/Telegram/SourceFiles/info/info_top_bar.cpp @@ -617,29 +617,7 @@ rpl::producer TitleValue( return tr::lng_profile_participants_section(); case Section::Type::Settings: - switch (section.settingsType()) { - case Section::SettingsType::Main: - return tr::lng_menu_settings(); - case Section::SettingsType::Information: - return tr::lng_settings_section_info(); - case Section::SettingsType::Notifications: - return tr::lng_settings_section_notify(); - case Section::SettingsType::PrivacySecurity: - return tr::lng_settings_section_privacy(); - case Section::SettingsType::Sessions: - return tr::lng_settings_sessions_title(); - case Section::SettingsType::Advanced: - return tr::lng_settings_advanced(); - case Section::SettingsType::Chat: - return tr::lng_settings_section_chat_settings(); - case Section::SettingsType::Folders: - return tr::lng_filters_title(); - case Section::SettingsType::Calls: - return tr::lng_settings_section_call_settings(); - case Section::SettingsType::Experimental: - return tr::lng_settings_experimental(); - } - Unexpected("Bad settings type in Info::TitleValue()"); + return section.settingsType()()->title(); case Section::Type::PollResults: return key.poll()->quiz() diff --git a/Telegram/SourceFiles/info/info_wrap_widget.cpp b/Telegram/SourceFiles/info/info_wrap_widget.cpp index 28da06c3f..e3c07c3b7 100644 --- a/Telegram/SourceFiles/info/info_wrap_widget.cpp +++ b/Telegram/SourceFiles/info/info_wrap_widget.cpp @@ -14,6 +14,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/info_controller.h" #include "info/info_memento.h" #include "info/info_top_bar.h" +#include "settings/settings_chat.h" +#include "settings/settings_main.h" #include "ui/widgets/discrete_sliders.h" #include "ui/widgets/buttons.h" #include "ui/widgets/shadow.h" @@ -395,8 +397,8 @@ void WrapWidget::createTopBar() { addTopBarMenuButton(); addProfileCallsButton(); } else if (section.type() == Section::Type::Settings - && (section.settingsType() == Section::SettingsType::Main - || section.settingsType() == Section::SettingsType::Chat)) { + && (section.settingsType() == ::Settings::Main::Id() + || section.settingsType() == ::Settings::Chat::Id())) { addTopBarMenuButton(); } else if (section.type() == Section::Type::Downloads) { auto &manager = Core::App().downloadManager(); diff --git a/Telegram/SourceFiles/info/settings/info_settings_widget.cpp b/Telegram/SourceFiles/info/settings/info_settings_widget.cpp index ed1b7ee25..57e6152c1 100644 --- a/Telegram/SourceFiles/info/settings/info_settings_widget.cpp +++ b/Telegram/SourceFiles/info/settings/info_settings_widget.cpp @@ -10,6 +10,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/info_memento.h" #include "info/info_controller.h" #include "settings/settings_common.h" +#include "settings/settings_main.h" +#include "settings/settings_information.h" #include "ui/ui_utility.h" namespace Info { @@ -43,11 +45,9 @@ Widget::Widget( : ContentWidget(parent, controller) , _self(controller->key().settingsSelf()) , _type(controller->section().settingsType()) -, _inner(setInnerWidget( - ::Settings::CreateSection( - _type, - this, - controller->parentController()))) { +, _inner( + setInnerWidget( + _type()->create(this, controller->parentController()))) { _inner->sectionShowOther( ) | rpl::start_with_next([=](Type type) { controller->showSettings(type); @@ -84,7 +84,8 @@ void Widget::saveChanges(FnMut done) { } rpl::producer Widget::desiredShadowVisibility() const { - return (_type == Type::Main || _type == Type::Information) + return (_type == ::Settings::Main::Id() + || _type == ::Settings::Information::Id()) ? ContentWidget::desiredShadowVisibility() : rpl::single(true); } diff --git a/Telegram/SourceFiles/info/settings/info_settings_widget.h b/Telegram/SourceFiles/info/settings/info_settings_widget.h index 604b589e7..6c95e1c94 100644 --- a/Telegram/SourceFiles/info/settings/info_settings_widget.h +++ b/Telegram/SourceFiles/info/settings/info_settings_widget.h @@ -11,7 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/info_controller.h" namespace Settings { -class Section; +class AbstractSection; } // namespace Settings namespace Info { @@ -76,7 +76,7 @@ private: not_null _self; Type _type = Type(); - not_null<::Settings::Section*> _inner; + not_null<::Settings::AbstractSection*> _inner; }; diff --git a/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp b/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp index d28be32fd..5005e4152 100644 --- a/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp +++ b/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp @@ -682,6 +682,12 @@ std::unique_ptr MakeAttachBotsMenu( const auto raw = result.get(); const auto refresh = [=] { raw->clearActions(); + raw->addAction(u"Photo or video"_q, [=] { + + }); + raw->addAction(u"Document"_q, [=] { + + }); for (const auto &bot : bots->attachBots()) { const auto callback = [=] { const auto active = controller->activeChatCurrent(); diff --git a/Telegram/SourceFiles/settings/settings_advanced.cpp b/Telegram/SourceFiles/settings/settings_advanced.cpp index 19554b10f..d7ffcafe9 100644 --- a/Telegram/SourceFiles/settings/settings_advanced.cpp +++ b/Telegram/SourceFiles/settings/settings_advanced.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_common.h" #include "settings/settings_chat.h" +#include "settings/settings_experimental.h" #include "ui/wrap/vertical_layout.h" #include "ui/wrap/slide_wrap.h" #include "ui/widgets/labels.h" @@ -133,7 +134,7 @@ void SetupUpdate( experimental->toggleOn(install->toggledValue()); } experimental->entity()->setClickedCallback([=] { - showOther(Type::Experimental); + showOther(Experimental::Id()); }); } @@ -740,6 +741,10 @@ Advanced::Advanced( setupContent(controller); } +rpl::producer Advanced::Title() { + return tr::lng_settings_advanced(); +} + rpl::producer Advanced::sectionShowOther() { return _showOther.events(); } diff --git a/Telegram/SourceFiles/settings/settings_advanced.h b/Telegram/SourceFiles/settings/settings_advanced.h index 97109e508..4b1d64ed9 100644 --- a/Telegram/SourceFiles/settings/settings_advanced.h +++ b/Telegram/SourceFiles/settings/settings_advanced.h @@ -21,7 +21,7 @@ namespace Settings { void SetupConnectionType( not_null controller, - not_null account, + not_null<::Main::Account*> account, not_null container); bool HasUpdate(); void SetupUpdate( @@ -32,12 +32,14 @@ void SetupSystemIntegrationContent( not_null container); void SetupAnimations(not_null container); -class Advanced : public Section { +class Advanced : public Section { public: Advanced( QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + rpl::producer sectionShowOther() override; private: diff --git a/Telegram/SourceFiles/settings/settings_calls.cpp b/Telegram/SourceFiles/settings/settings_calls.cpp index 4b39177b9..65c72965f 100644 --- a/Telegram/SourceFiles/settings/settings_calls.cpp +++ b/Telegram/SourceFiles/settings/settings_calls.cpp @@ -56,6 +56,10 @@ Calls::Calls( Calls::~Calls() = default; +rpl::producer Calls::Title() { + return tr::lng_settings_section_call_settings(); +} + Webrtc::VideoTrack *Calls::AddCameraSubsection( std::shared_ptr show, not_null content, diff --git a/Telegram/SourceFiles/settings/settings_calls.h b/Telegram/SourceFiles/settings/settings_calls.h index dbc6af95c..b469ff084 100644 --- a/Telegram/SourceFiles/settings/settings_calls.h +++ b/Telegram/SourceFiles/settings/settings_calls.h @@ -33,11 +33,13 @@ class VideoTrack; namespace Settings { -class Calls : public Section { +class Calls : public Section { public: Calls(QWidget *parent, not_null controller); ~Calls(); + [[nodiscard]] static rpl::producer Title(); + void sectionSaveChanges(FnMut done) override; static Webrtc::VideoTrack *AddCameraSubsection( diff --git a/Telegram/SourceFiles/settings/settings_chat.cpp b/Telegram/SourceFiles/settings/settings_chat.cpp index cd3971286..26102e082 100644 --- a/Telegram/SourceFiles/settings/settings_chat.cpp +++ b/Telegram/SourceFiles/settings/settings_chat.cpp @@ -1513,6 +1513,10 @@ Chat::Chat(QWidget *parent, not_null controller) setupContent(controller); } +rpl::producer Chat::Title() { + return tr::lng_settings_section_chat_settings(); +} + void Chat::setupContent(not_null controller) { const auto content = Ui::CreateChild(this); diff --git a/Telegram/SourceFiles/settings/settings_chat.h b/Telegram/SourceFiles/settings/settings_chat.h index ff2153b91..777182184 100644 --- a/Telegram/SourceFiles/settings/settings_chat.h +++ b/Telegram/SourceFiles/settings/settings_chat.h @@ -31,10 +31,12 @@ void SetupExport( not_null controller, not_null container); -class Chat : public Section { +class Chat : public Section { public: Chat(QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + private: void setupContent(not_null controller); diff --git a/Telegram/SourceFiles/settings/settings_codes.cpp b/Telegram/SourceFiles/settings/settings_codes.cpp index 536cdd2c6..c8968ef53 100644 --- a/Telegram/SourceFiles/settings/settings_codes.cpp +++ b/Telegram/SourceFiles/settings/settings_codes.cpp @@ -29,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_session_controller.h" #include "media/audio/media_audio_track.h" #include "settings/settings_common.h" +#include "settings/settings_folders.h" #include "api/api_updates.h" #include "base/qt/qt_common_adapters.h" #include "base/custom_app_icon.h" @@ -171,7 +172,7 @@ auto GenerateCodes() { }); codes.emplace(qsl("folders"), [](SessionController *window) { if (window) { - window->showSettings(Settings::Type::Folders); + window->showSettings(Settings::Folders::Id()); } }); codes.emplace(qsl("registertg"), [](SessionController *window) { diff --git a/Telegram/SourceFiles/settings/settings_common.cpp b/Telegram/SourceFiles/settings/settings_common.cpp index 4aba174cc..3f7cf3f3f 100644 --- a/Telegram/SourceFiles/settings/settings_common.cpp +++ b/Telegram/SourceFiles/settings/settings_common.cpp @@ -106,35 +106,6 @@ QSize Icon::size() const { return _icon->size(); } -object_ptr
CreateSection( - Type type, - not_null parent, - not_null controller) { - switch (type) { - case Type::Main: - return object_ptr
(parent, controller); - case Type::Information: - return object_ptr(parent, controller); - case Type::Notifications: - return object_ptr(parent, controller); - case Type::PrivacySecurity: - return object_ptr(parent, controller); - case Type::Sessions: - return object_ptr(parent, controller); - case Type::Advanced: - return object_ptr(parent, controller); - case Type::Folders: - return object_ptr(parent, controller); - case Type::Chat: - return object_ptr(parent, controller); - case Type::Calls: - return object_ptr(parent, controller); - case Type::Experimental: - return object_ptr(parent, controller); - } - Unexpected("Settings section type in Widget::createInnerWidget."); -} - void AddSkip(not_null container) { AddSkip(container, st::settingsSectionSkip); } @@ -278,7 +249,7 @@ void FillMenu( Fn showOther, MenuCallback addAction) { const auto window = &controller->window(); - if (type == Type::Chat) { + if (type == Chat::Id()) { addAction( tr::lng_settings_bg_theme_create(tr::now), [=] { window->show(Box(Window::Theme::CreateBox, window)); }, @@ -293,7 +264,7 @@ void FillMenu( if (!controller->session().supportMode()) { addAction( tr::lng_settings_information(tr::now), - [=] { showOther(Type::Information); }, + [=] { showOther(Information::Id()); }, &st::menuIconInfo); } addAction( diff --git a/Telegram/SourceFiles/settings/settings_common.h b/Telegram/SourceFiles/settings/settings_common.h index 03108a47b..b912ed476 100644 --- a/Telegram/SourceFiles/settings/settings_common.h +++ b/Telegram/SourceFiles/settings/settings_common.h @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/rp_widget.h" #include "ui/round_rect.h" #include "base/object_ptr.h" +#include "settings/settings_type.h" namespace Main { class Session; @@ -35,32 +36,59 @@ namespace Settings { extern const char kOptionMonoSettingsIcons[]; -enum class Type { - Main, - Information, - Notifications, - PrivacySecurity, - Sessions, - Advanced, - Chat, - Folders, - Calls, - Experimental, -}; - using Button = Ui::SettingsButton; -class Section : public Ui::RpWidget { +class AbstractSection; + +struct SectionMeta { + [[nodiscard]] virtual object_ptr create( + not_null parent, + not_null controller) const = 0; + [[nodiscard]] virtual rpl::producer title() const = 0; +}; + +template +struct SectionMetaImplementation : SectionMeta { + object_ptr create( + not_null parent, + not_null controller + ) const final override { + return object_ptr(parent, controller); + } + rpl::producer title() const final override { + return SectionType::Title(); + } + + [[nodiscard]] static not_null Meta() { + static SectionMetaImplementation result; + return &result; + } +}; + +class AbstractSection : public Ui::RpWidget { public: using RpWidget::RpWidget; - virtual rpl::producer sectionShowOther() { + [[nodiscard]] virtual Type id() const = 0; + [[nodiscard]] virtual rpl::producer sectionShowOther() { return nullptr; } virtual void sectionSaveChanges(FnMut done) { done(); } +}; +template +class Section : public AbstractSection { +public: + using AbstractSection::AbstractSection; + + [[nodiscard]] static Type Id() { + return &SectionMetaImplementation::Meta; + } + [[nodiscard]] Type id() const final override { + return Id(); + } }; inline constexpr auto kIconRed = 1; @@ -105,11 +133,6 @@ private: }; -object_ptr
CreateSection( - Type type, - not_null parent, - not_null controller); - void AddSkip(not_null container); void AddSkip(not_null container, int skip); void AddDivider(not_null container); diff --git a/Telegram/SourceFiles/settings/settings_experimental.cpp b/Telegram/SourceFiles/settings/settings_experimental.cpp index b07e549f4..3fbfcf13c 100644 --- a/Telegram/SourceFiles/settings/settings_experimental.cpp +++ b/Telegram/SourceFiles/settings/settings_experimental.cpp @@ -146,6 +146,10 @@ Experimental::Experimental( setupContent(controller); } +rpl::producer Experimental::Title() { + return tr::lng_settings_experimental(); +} + void Experimental::setupContent( not_null controller) { const auto content = Ui::CreateChild(this); diff --git a/Telegram/SourceFiles/settings/settings_experimental.h b/Telegram/SourceFiles/settings/settings_experimental.h index 0d0e79dc4..892b4c9d6 100644 --- a/Telegram/SourceFiles/settings/settings_experimental.h +++ b/Telegram/SourceFiles/settings/settings_experimental.h @@ -11,12 +11,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Settings { -class Experimental : public Section { +class Experimental : public Section { public: Experimental( QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + private: void setupContent(not_null controller); diff --git a/Telegram/SourceFiles/settings/settings_folders.cpp b/Telegram/SourceFiles/settings/settings_folders.cpp index 646191e57..7076591a0 100644 --- a/Telegram/SourceFiles/settings/settings_folders.cpp +++ b/Telegram/SourceFiles/settings/settings_folders.cpp @@ -580,6 +580,10 @@ Folders::~Folders() { } } +rpl::producer Folders::Title() { + return tr::lng_filters_title(); +} + void Folders::setupContent(not_null controller) { controller->session().data().chatsFilters().requestSuggested(); diff --git a/Telegram/SourceFiles/settings/settings_folders.h b/Telegram/SourceFiles/settings/settings_folders.h index 63089cf5f..b771292a8 100644 --- a/Telegram/SourceFiles/settings/settings_folders.h +++ b/Telegram/SourceFiles/settings/settings_folders.h @@ -11,13 +11,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Settings { -class Folders : public Section { +class Folders : public Section { public: Folders( QWidget *parent, not_null controller); ~Folders(); + [[nodiscard]] static rpl::producer Title(); + private: void setupContent(not_null controller); diff --git a/Telegram/SourceFiles/settings/settings_information.cpp b/Telegram/SourceFiles/settings/settings_information.cpp index 8ed2f32e6..e406d1da6 100644 --- a/Telegram/SourceFiles/settings/settings_information.cpp +++ b/Telegram/SourceFiles/settings/settings_information.cpp @@ -793,6 +793,10 @@ Information::Information( setupContent(controller); } +rpl::producer Information::Title() { + return tr::lng_settings_section_info(); +} + void Information::setupContent( not_null controller) { const auto content = Ui::CreateChild(this); diff --git a/Telegram/SourceFiles/settings/settings_information.h b/Telegram/SourceFiles/settings/settings_information.h index 21fbb081b..05ea4e349 100644 --- a/Telegram/SourceFiles/settings/settings_information.h +++ b/Telegram/SourceFiles/settings/settings_information.h @@ -15,12 +15,14 @@ struct UnreadBadgeStyle; namespace Settings { -class Information : public Section { +class Information : public Section { public: Information( QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + private: void setupContent(not_null controller); diff --git a/Telegram/SourceFiles/settings/settings_main.cpp b/Telegram/SourceFiles/settings/settings_main.cpp index 5906aed48..696305290 100644 --- a/Telegram/SourceFiles/settings/settings_main.cpp +++ b/Telegram/SourceFiles/settings/settings_main.cpp @@ -10,6 +10,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_common.h" #include "settings/settings_codes.h" #include "settings/settings_chat.h" +#include "settings/settings_information.h" +#include "settings/settings_notifications.h" +#include "settings/settings_privacy_security.h" +#include "settings/settings_advanced.h" +#include "settings/settings_folders.h" +#include "settings/settings_calls.h" #include "boxes/language_box.h" #include "boxes/username_box.h" #include "ui/boxes/confirm_box.h" @@ -251,20 +257,20 @@ void SetupSections( } else { addSection( tr::lng_settings_information(), - Type::Information, + Information::Id(), { &st::settingsIconAccount, kIconLightOrange }); } addSection( tr::lng_settings_section_notify(), - Type::Notifications, + Notifications::Id(), { &st::settingsIconNotifications, kIconRed }); addSection( tr::lng_settings_section_privacy(), - Type::PrivacySecurity, + PrivacySecurity::Id(), { &st::settingsIconLock, kIconGreen }); addSection( tr::lng_settings_section_chat_settings(), - Type::Chat, + Chat::Id(), { &st::settingsIconChat, kIconLightBlue }); const auto preload = [=] { @@ -307,16 +313,16 @@ void SetupSections( ) | rpl::before_next(preloadIfEnabled)); } slided->entity()->setClickedCallback([=] { - showOther(Type::Folders); + showOther(Folders::Id()); }); addSection( tr::lng_settings_advanced(), - Type::Advanced, + Advanced::Id(), { &st::settingsIconGeneral, kIconPurple }); addSection( tr::lng_settings_section_call_settings(), - Type::Calls, + Calls::Id(), { &st::settingsIconCalls, kIconGreen }); SetupLanguageButton(container); @@ -524,6 +530,10 @@ Main::Main( setupContent(controller); } +rpl::producer Main::Title() { + return tr::lng_menu_settings(); +} + void Main::keyPressEvent(QKeyEvent *e) { crl::on_main(this, [=, text = e->text()]{ CodesFeedString(_controller, text); diff --git a/Telegram/SourceFiles/settings/settings_main.h b/Telegram/SourceFiles/settings/settings_main.h index c90f8bf8c..860ea2781 100644 --- a/Telegram/SourceFiles/settings/settings_main.h +++ b/Telegram/SourceFiles/settings/settings_main.h @@ -32,10 +32,12 @@ void SetupFaq( not_null container, bool icon = true); -class Main : public Section { +class Main : public Section
{ public: Main(QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + rpl::producer sectionShowOther() override; protected: diff --git a/Telegram/SourceFiles/settings/settings_notifications.cpp b/Telegram/SourceFiles/settings/settings_notifications.cpp index 0697b3fa1..a2ff8cc8c 100644 --- a/Telegram/SourceFiles/settings/settings_notifications.cpp +++ b/Telegram/SourceFiles/settings/settings_notifications.cpp @@ -1097,6 +1097,10 @@ Notifications::Notifications( setupContent(controller); } +rpl::producer Notifications::Title() { + return tr::lng_settings_section_notify(); +} + void Notifications::setupContent( not_null controller) { const auto content = Ui::CreateChild(this); diff --git a/Telegram/SourceFiles/settings/settings_notifications.h b/Telegram/SourceFiles/settings/settings_notifications.h index 38327de92..c405ce96d 100644 --- a/Telegram/SourceFiles/settings/settings_notifications.h +++ b/Telegram/SourceFiles/settings/settings_notifications.h @@ -11,12 +11,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Settings { -class Notifications : public Section { +class Notifications : public Section { public: Notifications( QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + private: void setupContent(not_null controller); diff --git a/Telegram/SourceFiles/settings/settings_privacy_security.cpp b/Telegram/SourceFiles/settings/settings_privacy_security.cpp index c3500e8af..989a76779 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_security.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_security.cpp @@ -820,7 +820,7 @@ void SetupSessionsList( st::settingsButton, { &st::settingsIconLaptop, kIconLightOrange } )->addClickHandler([=] { - showOther(Type::Sessions); + showOther(Sessions::Id()); }); } @@ -971,6 +971,10 @@ PrivacySecurity::PrivacySecurity( setupContent(controller); } +rpl::producer PrivacySecurity::Title() { + return tr::lng_settings_section_privacy(); +} + rpl::producer PrivacySecurity::sectionShowOther() { return _showOther.events(); } diff --git a/Telegram/SourceFiles/settings/settings_privacy_security.h b/Telegram/SourceFiles/settings/settings_privacy_security.h index 5b12525c8..a47feca1d 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_security.h +++ b/Telegram/SourceFiles/settings/settings_privacy_security.h @@ -34,12 +34,14 @@ void AddPrivacyButton( Api::UserPrivacy::Key key, Fn()> controllerFactory); -class PrivacySecurity : public Section { +class PrivacySecurity : public Section { public: PrivacySecurity( QWidget *parent, not_null controller); + [[nodiscard]] static rpl::producer Title(); + rpl::producer sectionShowOther() override; private: diff --git a/Telegram/SourceFiles/settings/settings_type.h b/Telegram/SourceFiles/settings/settings_type.h new file mode 100644 index 000000000..76b8d9840 --- /dev/null +++ b/Telegram/SourceFiles/settings/settings_type.h @@ -0,0 +1,15 @@ +/* +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 + +namespace Settings { + +struct SectionMeta; +using Type = not_null(*)(); + +} // namespace Settings diff --git a/Telegram/SourceFiles/window/window_filters_menu.cpp b/Telegram/SourceFiles/window/window_filters_menu.cpp index 36ccdcfc5..853cccad4 100644 --- a/Telegram/SourceFiles/window/window_filters_menu.cpp +++ b/Telegram/SourceFiles/window/window_filters_menu.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/boxes/confirm_box.h" #include "boxes/filters/edit_filter_box.h" #include "settings/settings_common.h" +#include "settings/settings_folders.h" #include "api/api_chat_filters.h" #include "apiwrap.h" #include "styles/style_widgets.h" @@ -275,13 +276,13 @@ base::unique_qptr FiltersMenu::prepareButton( } else { const auto filters = &_session->session().data().chatsFilters(); if (filters->suggestedLoaded()) { - _session->showSettings(Settings::Type::Folders); + _session->showSettings(Settings::Folders::Id()); } else if (!_waitingSuggested) { _waitingSuggested = true; filters->requestSuggested(); filters->suggestedUpdated( ) | rpl::take(1) | rpl::start_with_next([=] { - _session->showSettings(Settings::Type::Folders); + _session->showSettings(Settings::Folders::Id()); }, _outer.lifetime()); } } diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index c89402eb4..4c0b69502 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "storage/storage_account.h" #include "support/support_templates.h" #include "settings/settings_common.h" +#include "settings/settings_calls.h" #include "settings/settings_information.h" #include "base/qt_signal_producer.h" #include "boxes/about_box.h" @@ -85,7 +86,7 @@ void ShowCallsBox(not_null window) { st::popupMenuWithIcons); const auto showSettings = [=] { window->showSettings( - Settings::Type::Calls, + Settings::Calls::Id(), Window::SectionShow(anim::type::instant)); }; const auto clearAll = crl::guard(box, [=] { diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index 830ac0fbc..2362b6b97 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -76,6 +76,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "storage/file_upload.h" #include "facades.h" #include "window/themes/window_theme.h" +#include "settings/settings_main.h" +#include "settings/settings_privacy_security.h" #include "styles/style_window.h" #include "styles/style_dialogs.h" #include "styles/style_layers.h" // st::boxLabel @@ -567,7 +569,7 @@ void SessionNavigation::showSettings( } void SessionNavigation::showSettings(const SectionShow ¶ms) { - showSettings(Settings::Type::Main, params); + showSettings(Settings::Main::Id(), params); } void SessionNavigation::showPollResults( @@ -667,7 +669,7 @@ void SessionController::suggestArchiveAndMute() { tr::lng_suggest_hide_new_about(Ui::Text::RichLangValue), st::boxLabel)); box->addButton(tr::lng_suggest_hide_new_to_settings(), [=] { - showSettings(Settings::Type::PrivacySecurity); + showSettings(Settings::PrivacySecurity::Id()); }); box->setCloseByOutsideClick(false); box->boxClosing( diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index 71c57a713..c93744d9e 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "dialogs/dialogs_key.h" #include "ui/layers/layer_widget.h" #include "ui/layers/show.h" +#include "settings/settings_type.h" #include "window/window_adaptive.h" #include "mtproto/sender.h" @@ -40,10 +41,6 @@ namespace InlineBots { class AttachWebView; } // namespace InlineBots -namespace Settings { -enum class Type; -} // namespace Settings - namespace Calls { struct StartGroupCallArgs; } // namespace Calls diff --git a/Telegram/lib_lottie b/Telegram/lib_lottie index e05282127..2ae9d2928 160000 --- a/Telegram/lib_lottie +++ b/Telegram/lib_lottie @@ -1 +1 @@ -Subproject commit e052821270b913798b65f3a1a292b7ab74107ff6 +Subproject commit 2ae9d2928a406da58e510bdda54a99e44c4eff10