From 8dfccf55d1c7b27c8de5faa5fab214eb0e81d6fc Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 14 Nov 2017 21:22:44 +0400 Subject: [PATCH] Add shared media empty placeholders. --- .../icons/info_media_audio_empty.png | Bin 0 -> 1589 bytes .../icons/info_media_audio_empty@2x.png | Bin 0 -> 3360 bytes .../Resources/icons/info_media_file_empty.png | Bin 0 -> 952 bytes .../icons/info_media_file_empty@2x.png | Bin 0 -> 2285 bytes .../Resources/icons/info_media_link_empty.png | Bin 0 -> 1276 bytes .../icons/info_media_link_empty@2x.png | Bin 0 -> 3044 bytes .../icons/info_media_photo_empty.png | Bin 0 -> 894 bytes .../icons/info_media_photo_empty@2x.png | Bin 0 -> 2146 bytes .../icons/info_media_video_empty.png | Bin 0 -> 1300 bytes .../icons/info_media_video_empty@2x.png | Bin 0 -> 2941 bytes .../icons/info_media_voice_empty.png | Bin 0 -> 1570 bytes .../icons/info_media_voice_empty@2x.png | Bin 0 -> 2799 bytes Telegram/Resources/langs/lang.strings | 17 ++- .../data/data_search_controller.cpp | 2 +- .../SourceFiles/data/data_search_controller.h | 7 +- Telegram/SourceFiles/info/info.style | 15 +++ .../SourceFiles/info/info_content_widget.cpp | 4 + .../SourceFiles/info/info_content_widget.h | 1 + Telegram/SourceFiles/info/info_controller.cpp | 2 + Telegram/SourceFiles/info/info_controller.h | 4 +- .../info/info_top_bar_override.cpp | 2 +- .../info/media/info_media_buttons.h | 2 +- .../info/media/info_media_empty_widget.cpp | 117 ++++++++++++++++++ .../info/media/info_media_empty_widget.h | 55 ++++++++ .../info/media/info_media_inner_widget.cpp | 31 ++++- .../info/media/info_media_inner_widget.h | 5 + .../info/media/info_media_list_widget.cpp | 8 +- .../info/media/info_media_widget.cpp | 1 + Telegram/gyp/telegram_sources.txt | 2 + 29 files changed, 257 insertions(+), 18 deletions(-) create mode 100644 Telegram/Resources/icons/info_media_audio_empty.png create mode 100644 Telegram/Resources/icons/info_media_audio_empty@2x.png create mode 100644 Telegram/Resources/icons/info_media_file_empty.png create mode 100644 Telegram/Resources/icons/info_media_file_empty@2x.png create mode 100644 Telegram/Resources/icons/info_media_link_empty.png create mode 100644 Telegram/Resources/icons/info_media_link_empty@2x.png create mode 100644 Telegram/Resources/icons/info_media_photo_empty.png create mode 100644 Telegram/Resources/icons/info_media_photo_empty@2x.png create mode 100644 Telegram/Resources/icons/info_media_video_empty.png create mode 100644 Telegram/Resources/icons/info_media_video_empty@2x.png create mode 100644 Telegram/Resources/icons/info_media_voice_empty.png create mode 100644 Telegram/Resources/icons/info_media_voice_empty@2x.png create mode 100644 Telegram/SourceFiles/info/media/info_media_empty_widget.cpp create mode 100644 Telegram/SourceFiles/info/media/info_media_empty_widget.h diff --git a/Telegram/Resources/icons/info_media_audio_empty.png b/Telegram/Resources/icons/info_media_audio_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..92af8ab50c5d06785c594593c6b2c07e9fe62bd8 GIT binary patch literal 1589 zcmV-52Fm$~P)7fvF4}wIGGmCl*A9VTPQ-P4LMqA>; zz*i%g5J*WNSxN(ufn&Z*bkZNUaNi!}9x76|dpq~IdB1R8^#0EGoZn|V=bqp0W+5Vw zDPfXC58$ZF1Rz)@0KqZ=2$og!0J4$G<)X&MM!Im}0@c>mlAo7YBod(yA3jhx9H!OPRnbGwN;r(o?RKNTzaNW>i_ogY#YOb@_oK41QuuuK zY8E+54n-PF_+>~{On0#ICBjM>>)0KoF{GR~eoYxo#E9uJn6mjM8? zv$H5JEg)iwXimoKQQsuGrb zwN+JBArgtOJ)xihbai#HH9wnWr?s^e@pv5ZcpR;*ty%lz8t3tN*q-3^dJ7XkMMVX> z)$Hx<%_=4yk27HLcsy$_Epa}dkKLkHR8$lmfM75P0GODV(3HrvwKeW>6B85c09a4} z>gwv)Tioq-XC2qp)`qpUHN;{uw6(Qyk8``-?8IDGS64UyCMPFFZgM#_^~5|mIawG0 zDl03ov$F#LC@n1&p5TL8X=y0{U}t9sCr_T_?#KNDneOgxk|c?O!62=#uk*Ikt@ZVF zdinAtNs>f&?%XlNlPlq+r6mABOG}IHzN}U&yk0K?fdHb>DAMUP(&;p!(I^6e0K8r= ztX8XTpT@>U06-)XG2&gvuXC5n1pruGUDe&!&6_u|va*7Mw6d~-TeoiM_EWtKI4tt( zyr-uJ0PyP7D_#8z4i2&ehr?m`d_E|O0$G+J%Q6&2fzRhdI2>lz`Tc%fo-ba!007** zdpCapjEs!rbnyCD>+S7jNqzL_(Sg@LeE5)EfA8Ks-M%9uBl!zJEjM4keqB?%)9J*I zA3p#9U0q#S$KAet8vyYA`*%2kP4NQ*0|0>W@$sBv z$H&J300RR9n!IajY5?q(%kvgMGMNMb96x?sQ~bih0sx??sVV2!rluwUz{0|UCU1ws z0RTuO5?ldreJTRj?b>3o@Uq}0o6Sbs+uM{*r^#lsaq}?&>?0$_Z$6qRSSA3$G64t{ zR{-gBnuvDSQmt)fW=6CB%*>1~@89RZOI$bMR4PTXEYs%ZCJ_;xIC0{S|EquBOX~Gn zH$gRt`}zDmroYAeE{KTZJ#H$M0su{qd&siPN(x&2Rq63hrBYna0p=bcSSA3$G64uy zUI36~*^n3!$_oI6EE9lWnE(XK1Rz)@0KqZ=2$l&zu($&F`ST|c5fv2`@wDM0^&G*w z8p;(wEEXdoV&7QLC%IfMA|md;H^CKvTFbwB^(s#rE>g#==kthc#jVtO`SN8}61G?@ zn#<98%h|ccOOnK5FI~FCwH(bA!0!`z^5jY002mq?VzH7WeMNtl5ZRUH7N}Z4S4qK89smhjASy2 z?d|P7+t$_=hKGkW`wb5dV{2<`Uyo!miBF$C;px+-sIRX#{O1Y|-7jVxHJPOd!7>2| nmI*+xOaOvq0uU?{fMERsVSuZz`+HZ^00000NkvXXu0mjfMVax} literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/info_media_audio_empty@2x.png b/Telegram/Resources/icons/info_media_audio_empty@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..65b7506ab923a965b325abccc3cc22316512bfbf GIT binary patch literal 3360 zcmb7Hc{p2X`#z{H)>bigt-aM^TEwWW8cXaGTZagxXq6z;7FCL-wx(h1B$i@IMTyW< zMOE!pWs1fwqV0^mL~P+Z{r&!#Kjyl=>-*!p=bZO>&UxSSJkNbU_epWEvk>Hy;sXFc z5M~L5gXcHk5r6zBIC>=c-2niBuQ2FUr>LUk;vgGGf9dYJVX-1S^~N2q4-dtTWLg=k z9ToA+Z0|wZGzm+cR*@8O_*u$$TclZ{Z6xoHIUY%sx4O2MC#|3Ne!=>NKCo7E`b$+@ zh5xB{%3ql|x#CJ>3UUx@I6?l?agw}M6vo=5#q}DmI~k50((3kR2n52G1OO!5IHHUj z2Ra2Q{cc+2lJQ_FR&}@42}h?!m3R?#-y=TKDD$BLU9ghY2Qtft+xZf!y{SR^AJZ zh7WPl1R91Not?$>i|vZ?@=R*;!J+EU6lZ5==0-^vUixEpYHI3Q4_@&bD@Mn2vww~i zvku-}cXEOn8ONNK=jITdTwLDP`*hEC2pcDfsk`jYw+UlAwDk4)e0+Rn*?Ttv0{9-Z zpGoStkylul7-b;D&(9A44%e?ASIIhoj9w7aDjaZt!?`OeD!j<_H>l=BFbrh+K2GQU zAty3~iug#UpJ+SSz0>6*&ih@|k9_|8`L#4n+8e0C`lSDym)0X!5~97SNw?9hHg)fX zTkYr3(T6{#ytK9vnki83z1`gxWn~Xy55mu&d44-brl(I$O-bOob3Ja=Ul+h&F!dD` zycy=@e$(mZicO7;UctedUEcM+oX+{srIi(PGTp|A_}c~WS>?p`_@JO5JqV8+Hc zWP6sXJ>%8g#U2jHy;;bfV34AysMx<-Tv*t#wH2W)A;63yJ1~znn1kP@r=|5`$@F`a z!OP$oBQ&x9_6+UbxAmwTma&#rJZNVck!?U%(}95ji4-VYqiAmKMqp5oGJE^5nnDr7 zVzG{ol|@p#!on_7yDx}Px!_`=qTp78`#KvM8&R7PA1?zD;Tm#veBN5;m+Mnfgh_&#A$ zI{O3BShEnfvlIQCL{ec_mi7q#L2~uHCstKe+qeo$^6Xe2D6_u5KjhhV~d^p`?2U?sYjFX)mE&tu91-tYF(gXWMp$7 z!HBczi1z$p3J5@(FCQ zgwT&rxtyKc+|IW&RkgKw4oPKaXP>K+`cW8teO8^_Pt95!rX-Sjzh@z$#W!u;eiGHpm>(`9Ordh`c^hbHJ?YPdXGuFCmY0_sc+0vL1p7S< zQ@6X1S;y3l4Go>0I6UC&_3l+?_6Vv~>)aWgeg8iFX|zVJb+#K-3ILvXm_We1+!=j- zcD0UA0aEgZ(GK%8Y+lYdF5TDHxB63G=d}`JUot%;H1t=vqQxKqFYRC>CMMRfx<=3o zHKoLWoX}4@=RD7jX(UB5-kpFIM;Q>(JR4OZC3(BMyGnx6a&j)Me!jlSuclDx=H(I@ z=0nR7HRz*{s*&Fz{UnbT^J)KNuy*Q`@v&Q`_MSfPT_{aWR$sL7mdx?GA#gpYp`l@> zd9;BX+MZg*)EsATZa%@lK?q&Sp$B$VR4Bu;8g|B{H!E{;#Cs<-E?!(14i>~q_gn`n zDNDQO>joavr?V4l)GM>N)6IQADtdXf3yg~LglF82GCpfkIofVwVj`tTO*oqG^3a!o zLghi5QitOg#rdgqh%9gk2Q{Vq#eqUd)?S~}tNXm4$^N*TEp>I8>Z_HRxw*%{s$Lti zkZ%V;GW(Ty|6zW<J@>h5xhK)*TOG!C_ zw&!~^X)+E1HA`DbLLd{f>u6?X_IYF^8Kjz>F@EEGReOS$tE;QaB%rucMIU+f9(oNg zZRw5`me0|i|9hl{NdSPzmB}4k+Z<7--RmTH4byL`ajmm5kTr_Ui=|!ubxY=EWqVW5 zgwjM}Vj|S;pgaGv|12082L$56-j%i);h!{-Nggc`oV#PWAWnJ)2al2I0zz1xh~;r! z&~~J4Msx45v$Hc~ndI4qWcb9y6vWEjR73OJ?)9#>lsd(iY{@Cozk7bc z)bQ@#PA;ogWR;0RBRjYKL62vprB{cOKp163(`omv7~R`-V)&!cA|RdBT+e95uo+C| z)2Cg3R@sN{Z7mnz*rT=XBJvp-8O+7AJYbZp!I)=jm)6vzy|cJ_HDSpq@XX0K1qD)_ zcSb&a>Ji#gQBl!8EIuTWG*YnT7P!nhY3E_n5}na_=R7+*@s{6cHRM87O7+}2%TPh;%ihb^l#MNeT#umaqyXzGldi|*R&wJzyk zOM@iSv$iWQ;c&PDMsfV(#}fL>=0Li_Gs8=lOlfk%*(l+J%+(?}A*>F2ZKY+^stFSl zb4Eg-8VQjQFtxYGG3%RW;@nxU?q|lp22kxb?&3=&@E9ue*VL8WNVBLwES073kKNH)$$iR zJI!F4n@K31cr{9pmc*l?M=;X+HgHQ4<|qECc{=`06d_A=OGJB#HUSx<#3VQl;yUa4 z52@6f&j!lm6Vr?i!sq@u|3gCk>+AmOdjIB-f#L!2tTe&P%L}!8_y74*4VR8jPUh`x zLI(f&%)+JCO_`2FAe7LVzq}HBv$@%L6T{hMf!-Yf6ssnl1OT7)ekcft+gbRjH^SCd z5Py2zlCTJhGzHcC@(DmdNXV+m-OUY*jm38a#z0O%wJ$#A_W{2S|3SjsOsJkr!HB*2 z;=1EVq@GOXt3iU{wZZ}O|I4f=*M6L_fS@2uZi4JDjF%3zB+P?4VQr5CMg5*&ko;Hm zvuCg^o6lfTz=BSBa{axy=zF)YprB{$>O%#{lO|B$Ot;_9{fT(C$Jrl5tnNyJ){Uv(87{sO`GQ76W)~7H4Chm(1pHi z<~>(S=2206r+54MdgyQDlc$R9su)$4VZQ*Ns`wVJ@AzS1dt1-#g8271b&w2FZ!eEi zzHRKlb%joahJ>6HmeGqZ)D1EPm7Ge}xn(!12$0pA?WZj5gKYrO z5^*t_C rKMg#DC8IPS`ba3x{;!2xa0ry`UCU{y8hru&`2a98J1EK2>%o5jCY5_( literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/info_media_file_empty.png b/Telegram/Resources/icons/info_media_file_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..bcff0554f6749c43d55bf7aee6aceacf99024ec3 GIT binary patch literal 952 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 literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/info_media_link_empty.png b/Telegram/Resources/icons/info_media_link_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..393e34da875aac9f04a2602a3fb2f107412ea945 GIT binary patch literal 1276 zcma)+|2q?S0LMR@r5W-iUy_C-tHv z3@t3wNDh%5AU^9K{PH&lBrpVr;CI13TsO`4{Lj)MpQsz2yCaiD@oQ@vTU$NKPgm)0 z-aIg~oGbGW4IO58L*hgy)4i)#*46?dBO@6sRtO4(V&vuqw?{7y&ctt$CtRy1N`HBq z;??#tN!vzhre1DQhFLVYUii%0uejtCI5sv$d?ahrdo}mvHO~0nJx5bGvHZ78{ZuYm zM-dTpeo^khbnXLLs-qy}&$BT@`%UyO;|YXEdJ4Imgx`_&ot8KHY|33I6fP{+3Iy$^ zyzn!4bIu2~+6sj2t8n-7>SGpkr@WzCG=v*~jGUa}0H=|Y&^^}*L?Qy{SzkZc73-!6 z)V2hcU(srrpl4!2a07j*`OpJt@s}?bK+oi)oraS-s#dE3u(q}i@e4>rHcFB~&;0ye z9uIx?hLb^Gq8TU)X(F7+k9UVla1ii@e)Ids)`xT)0=OTMaGI|QJWom?K%r2Kqe|MN zn(hQUORAtN8jZp}%7x2sJ#JK#(Bp2@o9NN6VAATsUaTKis#K~2kjlzR06Jqz=eH(q zD`H}NjGixN-j2fX^ni=2t4A?cc6wYaHZn7tJ-?rd$(wmZa6rkmNVGSaN_9W_Fb1Os zjzye)44q!ar=_K3FqtJ;2bQu#!@&^|fY=#x#%7nTzeb}0`BPH~jZj9pv5AQuSW>B~ zzS4x7jE#&;&E7~PThTlu+p^jcZAc~+d5U2f)AMVn7>xC9a|5|dR+rKq)RgA9Xf#^A!Q=6&N}h8}JkCJ7o?L?$lEnIWEVf{7ZZ3WE z(~b@}pyRf0v$0A3b;r91@{?GV_z$=v$@vE46F-|a>sb*50ht#sc2DTc8k7Y!MBDj$ zS1&FM;_IcsW1(H8wKX-cPuWO6Utf7A)KnYv!lJm(o>wLtA7|8?2)8_mb;DpV;GeFW zw79sqIYZ(~PWV&XNRrff)-~ruWw?u#=x>2(31#tI6M8V*#DWFjS~mEPAi%@9l+^4}27jkR`Z0 zO7ipxTO_iuMR`}Mw4a>HWeQRS=@jZ85DSr%}$VX1=N^9|5y3C)n&A3_W(L= QSodlm@W&8x3n{+fUl3_SsQ>@~ literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/info_media_link_empty@2x.png b/Telegram/Resources/icons/info_media_link_empty@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b99bbecf2bfca01e2ab726b83aac290f7993a4fc GIT binary patch literal 3044 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 literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/info_media_photo_empty.png b/Telegram/Resources/icons/info_media_photo_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..a4b1e92ae113d20599200051562d8d0613d87d03 GIT binary patch literal 894 zcmV-^1A+XBP)+Wl7z}oc@47Dg0v{UJbupXG004u* zpu7TtAOHY#yIuB0{c5`1E&w110;A8Zyjjpek|d;*BHOkpNfKRUjbPh0ZMR!Wl7wvA zHuhYt0)W?2l}bfd$)iX50A^SONT2X0+I~>p`0N_#6ZT?Gfb0;Er179f4XevJMN zl|Eq~qXM!%FFJXQU-|%ML;y1)fEf|Mj0j*x1TZ54m?@QjR;xu(6j2mK)M~YIzt0rL zwj#1V&q@?UyBbjx<$j;;@qd(3eFNU}-EOpqU3h7}0qu4h&(F_zdU`^;-Ol|!-Q)i# zvKRCPWH0Cl5dqAI0A@r0Go=<#tyZbm>(O{TruBMFX_``+rnFwKX*?cNuh*k$waPur zOiJ@N^nK3G&ahgoki}}X!uk2Rk@2!D9?d|RH3rLa#0RDM)M#ls$FE4j>uCK2%ufMvw+Fk$CBPE3w@OJFP^SoRp&}cNU z-EIK@7Z(=?-}iQ;$fj5ddH^nSA-)$z%cm7>!29 zE5NcWgkcEa_4He((?P9P%X0lbtilb7!{DFDG?D_mSys>T5uePh=}4i)>_x7fcyJT4#(u=I`h=p!bzR)u-2ni6-`8E=+(feagrcQZtD)2B?B0%fcz7uGD@uo?tS{+> zVOac^^bXD6eL_)*;~0y@0>j}DN~v7d!e}2L>?3^uGa`T)5x|THU`7NmBLbND4a=R5 UmcADU)Bpeg07*qoM6N<$f`U|(u>b%7 literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/info_media_photo_empty@2x.png b/Telegram/Resources/icons/info_media_photo_empty@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..098a6adf7ef9fed375b59799742c0c0cd3b1e09a GIT binary patch literal 2146 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 KMNUMnLSTZYrCV$O literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/info_media_video_empty@2x.png b/Telegram/Resources/icons/info_media_video_empty@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d45d799d10514fa691f7373e22395a2b6e124a15 GIT binary patch literal 2941 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 PK^CwwLz+^IJ>z}{fIu4N literal 0 HcmV?d00001 diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index a4ef8b1c2..b9d82c96a 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -590,8 +590,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org "lng_profile_files_header" = "Files"; "lng_profile_audios#one" = "{count} voice message"; "lng_profile_audios#other" = "{count} voice messages"; -"lng_profile_rounds#one" = "{count} video message"; -"lng_profile_rounds#other" = "{count} video messages"; +//"lng_profile_rounds#one" = "{count} video message"; +//"lng_profile_rounds#other" = "{count} video messages"; "lng_profile_audios_header" = "Voice messages"; "lng_profile_shared_links#one" = "{count} shared link"; "lng_profile_shared_links#other" = "{count} shared links"; @@ -645,10 +645,19 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org "lng_media_selected_file#other" = "{count} Files"; "lng_media_selected_audio#one" = "{count} Voice message"; "lng_media_selected_audio#other" = "{count} Voice messages"; -"lng_media_selected_round#one" = "{count} Video message"; -"lng_media_selected_round#other" = "{count} video messages"; +//"lng_media_selected_round#one" = "{count} Video message"; +//"lng_media_selected_round#other" = "{count} Video messages"; "lng_media_selected_link#one" = "{count} Shared link"; "lng_media_selected_link#other" = "{count} Shared links"; +"lng_media_photo_empty" = "No photos here yet"; +"lng_media_video_empty" = "No videos here yet"; +"lng_media_song_empty" = "No music files here yet"; +"lng_media_file_empty" = "No files here yet"; +"lng_media_audio_empty" = "No voice messages here yet"; +"lng_media_link_empty" = "No shared links here yet"; +"lng_media_song_empty_search" = "No music files found"; +"lng_media_file_empty_search" = "No files found"; +"lng_media_link_empty_search" = "No shared links found"; "lng_manage_group_title" = "Manage Group"; "lng_manage_channel_title" = "Manage Channel"; diff --git a/Telegram/SourceFiles/data/data_search_controller.cpp b/Telegram/SourceFiles/data/data_search_controller.cpp index 66a944196..37cfcee75 100644 --- a/Telegram/SourceFiles/data/data_search_controller.cpp +++ b/Telegram/SourceFiles/data/data_search_controller.cpp @@ -390,7 +390,7 @@ void DelayedSearchController::setQuery( void DelayedSearchController::setQueryFast(const Query &query) { _controller.setQuery(query); - _sourceChanges.fire({}); + _currentQueryChanges.fire_copy(query.query); } } // namespace Api diff --git a/Telegram/SourceFiles/data/data_search_controller.h b/Telegram/SourceFiles/data/data_search_controller.h index 7577f1124..d7ccf43b4 100644 --- a/Telegram/SourceFiles/data/data_search_controller.h +++ b/Telegram/SourceFiles/data/data_search_controller.h @@ -162,8 +162,9 @@ public: limitAfter); } - rpl::producer<> sourceChanged() const { - return _sourceChanges.events(); + rpl::producer currentQueryValue() const { + return _currentQueryChanges.events_starting_with( + currentQuery().query); } SavedState saveState() { @@ -178,7 +179,7 @@ private: SearchController _controller; Query _nextQuery; base::Timer _timer; - rpl::event_stream<> _sourceChanges; + rpl::event_stream _currentQueryChanges; }; diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index ec5cc41f7..07018fa77 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -548,6 +548,21 @@ managePeerButtonLabel: FlatLabel(defaultFlatLabel) { } managePeerButtonLabelPosition: point(25px, 10px); +infoEmptyFg: windowSubTextFg; +infoEmptyPhoto: icon {{ "info_media_photo_empty", infoEmptyFg }}; +infoEmptyVideo: icon {{ "info_media_video_empty", infoEmptyFg }}; +infoEmptyAudio: icon {{ "info_media_audio_empty", infoEmptyFg }}; +infoEmptyFile: icon {{ "info_media_file_empty", infoEmptyFg }}; +infoEmptyVoice: icon {{ "info_media_voice_empty", infoEmptyFg }}; +infoEmptyLink: icon {{ "info_media_link_empty", infoEmptyFg }}; +infoEmptyIconTop: 120px; +infoEmptyLabelTop: 40px; +infoEmptyLabelSkip: 20px; +infoEmptyLabel: FlatLabel(defaultFlatLabel) { + minWidth: 220px; + textFg: windowSubTextFg; +} + editPeerDeleteButtonMargins: margins(23px, 16px, 23px, 16px); editPeerDeleteButton: sessionTerminateAllButton; editPeerPhotoMargins: margins(23px, 16px, 23px, 8px); diff --git a/Telegram/SourceFiles/info/info_content_widget.cpp b/Telegram/SourceFiles/info/info_content_widget.cpp index daf8dfbbb..32af22711 100644 --- a/Telegram/SourceFiles/info/info_content_widget.cpp +++ b/Telegram/SourceFiles/info/info_content_widget.cpp @@ -150,6 +150,10 @@ rpl::producer
ContentWidget::sectionRequest() const { return rpl::never
(); } +rpl::producer ContentWidget::scrollHeightValue() const { + return _scroll->heightValue(); +} + rpl::producer ContentWidget::desiredHeightValue() const { using namespace rpl::mappers; return rpl::combine( diff --git a/Telegram/SourceFiles/info/info_content_widget.h b/Telegram/SourceFiles/info/info_content_widget.h index 4ac7ec6cb..df8ae301f 100644 --- a/Telegram/SourceFiles/info/info_content_widget.h +++ b/Telegram/SourceFiles/info/info_content_widget.h @@ -52,6 +52,7 @@ public: virtual void setIsStackBottom(bool isStackBottom) { } + rpl::producer scrollHeightValue() const; rpl::producer desiredHeightValue() const override; rpl::producer desiredShadowVisibility() const; bool hasTopBarShadow() const; diff --git a/Telegram/SourceFiles/info/info_controller.cpp b/Telegram/SourceFiles/info/info_controller.cpp index 0b9ba9338..3ed5b6bb4 100644 --- a/Telegram/SourceFiles/info/info_controller.cpp +++ b/Telegram/SourceFiles/info/info_controller.cpp @@ -20,6 +20,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org */ #include "info/info_controller.h" +#include +#include #include "ui/search_field_controller.h" #include "data/data_shared_media.h" #include "info/info_content_widget.h" diff --git a/Telegram/SourceFiles/info/info_controller.h b/Telegram/SourceFiles/info/info_controller.h index 309cf9d00..108f3b4dc 100644 --- a/Telegram/SourceFiles/info/info_controller.h +++ b/Telegram/SourceFiles/info/info_controller.h @@ -116,8 +116,8 @@ public: SparseIdsMergedSlice::UniversalMsgId aroundId, int limitBefore, int limitAfter) const; - rpl::producer<> mediaSourceChanged() const { - return _searchController->sourceChanged(); + rpl::producer mediaSourceQueryValue() const { + return _searchController->currentQueryValue(); } void saveSearchState(not_null memento); diff --git a/Telegram/SourceFiles/info/info_top_bar_override.cpp b/Telegram/SourceFiles/info/info_top_bar_override.cpp index caddf5ac9..06d6ce576 100644 --- a/Telegram/SourceFiles/info/info_top_bar_override.cpp +++ b/Telegram/SourceFiles/info/info_top_bar_override.cpp @@ -65,7 +65,7 @@ QString TopBarOverride::generateText() const { case Type::MusicFile: return lng_media_selected_song; case Type::Link: return lng_media_selected_link; case Type::VoiceFile: return lng_media_selected_audio; - case Type::RoundFile: return lng_media_selected_round; +// case Type::RoundFile: return lng_media_selected_round; } Unexpected("Type in TopBarOverride::generateText()"); }(); diff --git a/Telegram/SourceFiles/info/media/info_media_buttons.h b/Telegram/SourceFiles/info/media/info_media_buttons.h index 5711985b5..c6a5262ea 100644 --- a/Telegram/SourceFiles/info/media/info_media_buttons.h +++ b/Telegram/SourceFiles/info/media/info_media_buttons.h @@ -46,7 +46,7 @@ inline auto MediaTextPhrase(Type type) { case Type::MusicFile: return lng_profile_songs; case Type::Link: return lng_profile_shared_links; case Type::VoiceFile: return lng_profile_audios; - case Type::RoundFile: return lng_profile_rounds; +// case Type::RoundFile: return lng_profile_rounds; } Unexpected("Type in MediaTextPhrase()"); }; diff --git a/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp b/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp new file mode 100644 index 000000000..c3987a09a --- /dev/null +++ b/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp @@ -0,0 +1,117 @@ +/* +This file is part of Telegram Desktop, +the official desktop version of Telegram messaging app, see https://telegram.org + +Telegram Desktop is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +It is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +In addition, as a special exception, the copyright holders give permission +to link the code of portions of this program with the OpenSSL library. + +Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org +*/ +#include "info/media/info_media_empty_widget.h" + +#include "ui/widgets/labels.h" +#include "styles/style_info.h" +#include "lang/lang_keys.h" + +namespace Info { +namespace Media { + +EmptyWidget::EmptyWidget(QWidget *parent) +: RpWidget(parent) +, _text(this, st::infoEmptyLabel) { +} + +void EmptyWidget::setFullHeight(rpl::producer fullHeightValue) { + std::move(fullHeightValue) + | rpl::start_with_next([this](int fullHeight) { + // Make icon center be on 1/3 height. + auto iconCenter = fullHeight / 3; + auto iconHeight = st::infoEmptyFile.height(); + auto iconTop = iconCenter - iconHeight / 2; + _height = iconTop + st::infoEmptyIconTop; + resizeToWidth(width()); + }, lifetime()); +} + +void EmptyWidget::setType(Type type) { + _type = type; + using Data = std::pair; + _icon = [&] { + switch (_type) { + case Type::Photo: return &st::infoEmptyPhoto; + case Type::Video: return &st::infoEmptyVideo; + case Type::MusicFile: return &st::infoEmptyAudio; + case Type::File: return &st::infoEmptyFile; + case Type::Link: return &st::infoEmptyLink; + case Type::VoiceFile: return &st::infoEmptyVoice; + } + Unexpected("Bad type in EmptyWidget::setType()"); + }(); + update(); +} + +void EmptyWidget::setSearchQuery(const QString &query) { + auto key = [&] { + switch (_type) { + case Type::Photo: + return lng_media_photo_empty; + case Type::Video: + return lng_media_video_empty; + case Type::MusicFile: + return query.isEmpty() + ? lng_media_song_empty + : lng_media_song_empty_search; + case Type::File: + return query.isEmpty() + ? lng_media_file_empty + : lng_media_file_empty_search; + case Type::Link: + return query.isEmpty() + ? lng_media_link_empty + : lng_media_link_empty_search; + case Type::VoiceFile: + return lng_media_audio_empty; + } + Unexpected("Bad type in EmptyWidget::setSearchQuery()"); + }(); + _text->setText(lang(key)); + resizeToWidth(width()); +} + +void EmptyWidget::paintEvent(QPaintEvent *e) { + if (!_icon) { + return; + } + + Painter p(this); + + auto iconLeft = (width() - _icon->width()) / 2; + auto iconTop = height() - st::infoEmptyIconTop; + _icon->paint(p, iconLeft, iconTop, width()); +} + +int EmptyWidget::resizeGetHeight(int newWidth) { + auto labelTop = _height - st::infoEmptyLabelTop; + auto labelWidth = newWidth - 2 * st::infoEmptyLabelSkip; + _text->resizeToNaturalWidth(labelWidth); + + auto labelLeft = (newWidth - _text->width()) / 2; + _text->moveToLeft(labelLeft, labelTop, newWidth); + + update(); + return _height; +} + +} // namespace Media +} // namespace Info diff --git a/Telegram/SourceFiles/info/media/info_media_empty_widget.h b/Telegram/SourceFiles/info/media/info_media_empty_widget.h new file mode 100644 index 000000000..66b64ce2a --- /dev/null +++ b/Telegram/SourceFiles/info/media/info_media_empty_widget.h @@ -0,0 +1,55 @@ +/* +This file is part of Telegram Desktop, +the official desktop version of Telegram messaging app, see https://telegram.org + +Telegram Desktop is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +It is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +In addition, as a special exception, the copyright holders give permission +to link the code of portions of this program with the OpenSSL library. + +Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org +*/ +#pragma once + +#include "ui/rp_widget.h" +#include "info/media/info_media_widget.h" + +namespace Ui { +class FlatLabel; +} // namespace Ui + +namespace Info { +namespace Media { + +class EmptyWidget : public Ui::RpWidget { +public: + EmptyWidget(QWidget *parent); + + void setFullHeight(rpl::producer fullHeightValue); + void setType(Type type); + void setSearchQuery(const QString &query); + +protected: + void paintEvent(QPaintEvent *e) override; + + int resizeGetHeight(int newWidth) override; + +private: + object_ptr _text; + Type _type = Type::kCount; + const style::icon *_icon = nullptr; + int _height = 0; + +}; + +} // namespace Media +} // namespace Info diff --git a/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp b/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp index 42ec30b8a..c442d336d 100644 --- a/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp @@ -24,6 +24,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org #include "boxes/abstract_box.h" #include "info/media/info_media_list_widget.h" #include "info/media/info_media_buttons.h" +#include "info/media/info_media_empty_widget.h" #include "info/profile/info_profile_button.h" #include "info/profile/info_profile_icon.h" #include "info/info_controller.h" @@ -41,7 +42,8 @@ InnerWidget::InnerWidget( QWidget *parent, not_null controller) : RpWidget(parent) -, _controller(controller) { +, _controller(controller) +, _empty(this) { _list = setupList(); setupOtherTypes(); } @@ -253,6 +255,12 @@ object_ptr InnerWidget::setupList() { _scrollToRequests, result->lifetime()); _selectedLists.fire(result->selectedListValue()); + _listTops.fire(result->topValue()); + _empty->setType(_controller->section().mediaType()); + _controller->mediaSourceQueryValue() + | rpl::start_with_next([this](const QString &query) { + _empty->setSearchQuery(query); + }, result->lifetime()); return result; } @@ -287,6 +295,7 @@ int InnerWidget::resizeGetHeight(int newWidth) { _searchField->resizeToWidth(newWidth); } _list->resizeToWidth(newWidth); + _empty->resizeToWidth(newWidth); return recountHeight(); } @@ -308,12 +317,30 @@ int InnerWidget::recountHeight() { _searchField->moveToLeft(0, top); top += _searchField->heightNoMargins() - st::lineWidth; } + auto listHeight = 0; if (_list) { _list->moveToLeft(0, top); - top += _list->heightNoMargins(); + listHeight = _list->heightNoMargins(); + top += listHeight; + } + if (listHeight > 0) { + _empty->hide(); + } else { + _empty->show(); + _empty->moveToLeft(0, top); + top += _empty->heightNoMargins(); } return top; } +void InnerWidget::setScrollHeightValue(rpl::producer value) { + using namespace rpl::mappers; + _empty->setFullHeight(rpl::combine( + std::move(value), + _listTops.events_starting_with(_list->topValue()) + | rpl::flatten_latest(), + $1 - $2)); +} + } // namespace Media } // namespace Info diff --git a/Telegram/SourceFiles/info/media/info_media_inner_widget.h b/Telegram/SourceFiles/info/media/info_media_inner_widget.h index 1cfaec6e7..7d9cd2ae4 100644 --- a/Telegram/SourceFiles/info/media/info_media_inner_widget.h +++ b/Telegram/SourceFiles/info/media/info_media_inner_widget.h @@ -40,6 +40,7 @@ namespace Media { class Memento; class ListWidget; +class EmptyWidget; class InnerWidget final : public Ui::RpWidget { public: @@ -52,6 +53,8 @@ public: void saveState(not_null memento); void restoreState(not_null memento); + void setScrollHeightValue(rpl::producer value); + rpl::producer scrollToRequests() const { return _scrollToRequests.events(); } @@ -88,12 +91,14 @@ private: object_ptr _otherTabsShadow = { nullptr }; base::unique_qptr _searchField = nullptr; object_ptr _list = { nullptr }; + object_ptr _empty; bool _searchEnabled = false; bool _inResize = false; rpl::event_stream _scrollToRequests; rpl::event_stream> _selectedLists; + rpl::event_stream> _listTops; }; diff --git a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp index 2a32ee02a..c1ce488a6 100644 --- a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp @@ -549,7 +549,6 @@ ListWidget::ListWidget( , _slice(sliceKey(_universalAroundId)) { setAttribute(Qt::WA_MouseTracking); start(); - refreshViewer(); } void ListWidget::start() { @@ -574,7 +573,7 @@ void ListWidget::start() { | rpl::start_with_next([this](auto item) { repaintItem(item); }, lifetime()); - _controller->mediaSourceChanged() + _controller->mediaSourceQueryValue() | rpl::start_with_next([this]{ restart(); }, lifetime()); @@ -2014,8 +2013,9 @@ int ListWidget::recountHeight() { section.setTop(result); result += section.height(); } - return result - + cachedPadding.bottom(); + return (result > cachedPadding.top()) + ? (result + cachedPadding.bottom()) + : 0; } void ListWidget::mouseActionUpdate() { diff --git a/Telegram/SourceFiles/info/media/info_media_widget.cpp b/Telegram/SourceFiles/info/media/info_media_widget.cpp index 4351cfd9a..8a28fcd1f 100644 --- a/Telegram/SourceFiles/info/media/info_media_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_widget.cpp @@ -87,6 +87,7 @@ Widget::Widget( _inner = setInnerWidget(object_ptr( this, controller)); + _inner->setScrollHeightValue(scrollHeightValue()); _inner->scrollToRequests() | rpl::start_with_next([this](Ui::ScrollToRequest request) { scrollTo(request); diff --git a/Telegram/gyp/telegram_sources.txt b/Telegram/gyp/telegram_sources.txt index 68ca49811..6940dc6b7 100644 --- a/Telegram/gyp/telegram_sources.txt +++ b/Telegram/gyp/telegram_sources.txt @@ -240,6 +240,8 @@ <(src_loc)/info/common_groups/info_common_groups_widget.cpp <(src_loc)/info/common_groups/info_common_groups_widget.h <(src_loc)/info/media/info_media_buttons.h +<(src_loc)/info/media/info_media_empty_widget.cpp +<(src_loc)/info/media/info_media_empty_widget.h <(src_loc)/info/media/info_media_inner_widget.cpp <(src_loc)/info/media/info_media_inner_widget.h <(src_loc)/info/media/info_media_list_widget.cpp