From 97d8aa0a0d48cea17c1cacb2e41f8e9d4883b69f Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Tue, 25 Oct 2022 16:40:54 +0400 Subject: [PATCH] Add a distinct forum icon in chats list. --- .../Resources/icons/dialogs/dialogs_forum.png | Bin 0 -> 469 bytes .../icons/dialogs/dialogs_forum@2x.png | Bin 0 -> 902 bytes .../icons/dialogs/dialogs_forum@3x.png | Bin 0 -> 1285 bytes Telegram/SourceFiles/dialogs/dialogs.style | 5 ++- .../dialogs/dialogs_inner_widget.cpp | 8 +++- .../SourceFiles/dialogs/ui/dialogs_layout.cpp | 36 +++++++++++------- .../window/notifications_manager_default.cpp | 4 +- .../window/themes/window_theme_preview.cpp | 4 +- 8 files changed, 38 insertions(+), 19 deletions(-) create mode 100644 Telegram/Resources/icons/dialogs/dialogs_forum.png create mode 100644 Telegram/Resources/icons/dialogs/dialogs_forum@2x.png create mode 100644 Telegram/Resources/icons/dialogs/dialogs_forum@3x.png diff --git a/Telegram/Resources/icons/dialogs/dialogs_forum.png b/Telegram/Resources/icons/dialogs/dialogs_forum.png new file mode 100644 index 0000000000000000000000000000000000000000..3b589bf06f0657eb19325c7ffbbc651dcf98af38 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T$!2~34zW#IqNHG=%xjQkeJ16rJ$Z<)H@J#dd zWzYh$IT#q*GZ|PwN`P1jh#44|7cep~18GK(*a9ZFtndP6I2&XegYW#Mp+IH!o-U3d z8lrP28m?{%5IKI-;k2hXr&5Q2_<l$EL+=$hg1r44y|<ZLZZoyoVWH}w*u-Jx5}nJN z_iBkB*WS<fD!(bsx+lBt|L4#3?{+?qY5K9nC9r4F3LWq3rIqvkr({NMzkRi|c4y2c z9qu!q_qgxgc3XGC!GsNQ>qA3TJvaIO`k7}YT@p2o^+DbK?VbIPKXRz_C97P1DPmmD zFVTNoVsXPPi9>zA&VKmg?V~nX#q*QR^i;`=_1B}<hHc9||NOJxa%L7U$J^ImhYGap z-|}DEbJBw9<ArIPC4Dc?S|-cau5<d;uD0kO`}pTPwzzEaP^|lCl8IEUxG@iNbo<Hx zk*)XN&)-}rnkez@_uo~k7|eVZYj6dMuv(SvmbE##`nNBC`(XtRfjB*Jp<}(ZMm)^R r=bTUHx&Q6<+iA-*efWO9EcwNB^vT_s)mnv(pdj^h^>bP0l+XkK(T}l; literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/dialogs/dialogs_forum@2x.png b/Telegram/Resources/icons/dialogs/dialogs_forum@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b170f748ca0b12caee2e338b642a0d0da84313 GIT binary patch literal 902 zcmV;119|+3P)<h;3K|Lk000e1NJLTq001Tc000yS0ssI2Ztd7#00001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91CZGcV1ONa40RR916aWAK0ACZ!y#N3L@JU2LR7efIls!nYQ546`3=I3Q z!7Q{7A_|0pg0_M-O+mvUK~RUlt)->Wp}|0uriQ>Jv>|W^K?njRLdl8-Nh2o}M9n@h zD5COx|8eW~be{*`T;6BUbI$*F&iy*~ibPF*R;%^s=;-e5u23k1!{O=a=_U&_iEnRj z|M~g7zP@4-O_mYDrBZ2kcQ>OL42GY>eR}uz_kDeR46INnT3cJ0ps+hKGIDr$`2PNm zdg*j}etw>EJ3BjqLn7#KI4HKVvQn*95qy4r-rCxd$z)U#FtE6*t1E8Zr>CdU(NTh) zot<$duD!9bK^VK;&W*$N`~3nV(U8$-WD?-I-EIOzA`!kyBCD&bggHGuWte)s&MZ_+ z$Ad96G{kj@Jv=;2jFXcSzDgp=WRe&ZresS?%i!Q3by;I!VS$+=-1YT!!gY3b=5jec zu(!8I3&rDc26%gWYj1C-0BcAjlJoO(ZqCEQgG!~M-1zu-B9Y(%II6C$E((}TCawzG z=krlj*y!!;4F-d_>1dp2G&(ss$#7z^cxr0OX0w^iX0$h>!d+Tgy1cx^ea+|dE|;sV zt&PtJM{owh!tbJ(+3&#rLa|H1USZz`1_tDE`Stbn?(Qy`23%aBxw$#0{r&xLu@1aD zl}hE};^O%Dcz=H%F92Y)z0>K$xu6fS*(}tXn;U_(OiWB{Zf;`t>EXv>G13=mwHl}U z^729@K?8>u3WdhT#!ww^*5l(N#n6&#YimlS@^fHJ7S{k5mJ%?KfTe(#nVBgTi(IL( zjdg3aS|lznFEb<-y|}peF{;PoVKlg2uNM+#gPq~4jU(vxj*bqbXEGT+snh91rBaD6 z==FN!;3?rtzlqGw&LSN*k`D(00rB@1gZlbzZ*O6uN4^5h{rB|rAb}KNGBKPO`@lru zq8IRsZp1YC>OUjcIa-8)KZdhdEah^U*#R^dL1ENtHAZdV;%=bxk&Bn);NXBuqC-=u clt!cZ3k_0%hVplzp8x;=07*qoM6N<$f@!OqGXMYp literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/dialogs/dialogs_forum@3x.png b/Telegram/Resources/icons/dialogs/dialogs_forum@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..43cf0b718af4c3862bd4c61326680bc574851f71 GIT binary patch literal 1285 zcmV+g1^W7lP)<h;3K|Lk000e1NJLTq0021v0015c0ssI28Pg$L00001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91IiLdo1ONa40RR919smFU0K{;4v;Y7EZ%IT!R9Fe^SV<_gQ5e3iS?DLq zkRcQqN=PKbMp;NQ!~!cNp=?-*jTI{^MY2F7k`x&h$n0O3ii{;>p6BWRAOF$Y>AUAU z?&U83Z=v^l-{*PGx#xS&d)`B%G1BAU;80OfF*`eZet!P+^t8Xf-`(Avnwn}PdE?0> zCMKSpo&6C#!^6Xlj*i9~>Ss!^v9Zt3&!TyL`moqmR#rb7#29RIbMu{@9mzylsH&>! z=cAcOB=GGrGc!X%LhSABS5{VrhK3dv78LlbtgMcX4uw<q_2S~f+1dH+?TrtanwqAk zr-y}wd3t(oZf?%Z%=Gv7^8kJAl$4ai!$W?-USD5pYiqHPyhLMTBae~Tk&%%+F(4pd zZf;J29~c;Lb#>)oU)xwqwG^zZtmOHFgM*6k)Lt_(GKgqxZN0v}E<}!wj+&UrzBY+` z8sp>RLLoR&kG#CRh%hoTqJ~uXkuAi+4^~9^*PNUjLh^=|e_=Mha#U25uAg}<EG+ow z!NGwVQsL*3adB~qDF3P!70lJw*H@90ybx@p8hOUX#>kc!4-XIX^YaAY705}3T2wGs zY$>7%4Ia?h*?D?;DunUQrlzLH$4Bz;3gje1Eh?Dn<>lq>?k+KPjm5=9a^BqB6c-oM ztI$9JR@B#}r6nPfIpt9$F+V?_Pj=o$l~tlOnu3A?wYssoy6WfWr=Z{~W0`qbvX76C zot&H$_%B}D+S-Uu#@5yrUj%rGz`($kmKMG%!0}ODUT$M!!^6nN&wF`!A!TOV-rgoB zClkg1165{XVgf0FHCtX@uBoX}8<<43S}o2eZ*Ol~TU&Cf8KI$}eSLlC$ll-Iktgl# z?I5aw_4S*XnduAt7EWGvz9sper2h)YPF|eLZf<U9_<#L-uy3ZPrxntcmX<LwG2!9i z5fKqSK0XYLzU=Pq4!so~l)vBqp2^8cY#p8sio3h}{r&yb)fILH%Ifv?H4pg0MxU0D zkbr&)Jp}l)Ptg-Wm&o`TNl8hl6;LOP+`yc0t4T{sqwGh|+1lF5v$nUlySlncOH04l zWI;heb#-+oCnr3a*(d^7S(+$1rj3maU6`Jpy}iA{!a`IGCRklvEhOS&0A^=rN8^4N z_+-t^%_tl~4hmLqa4-?->+6LuL!D?Qkv~ip2elgg=;$anH}`XNw31U(Q)*E7(M{7t zahyt!hKBI7nX-$E3z{1Vy{M?@16fv9CIKN7A0N*YQ3cW0$-xFi@x^ElAWbD)<od^b z0gZwLgq=%;+TY(_g8W_xTa7J5US6JDp`@fltJ_#GGW&~)gHxN?9v&Wi$S5{$g-iz( zKrV=RYLTxJ5P$QeS|h<58bXO=6kI&zT+CC822=u~MFmEmo?0R$4B>oXetsY!5`|pb z)6*l2={k|wYinz|{%?D5)}V4Ry8P~nRPOEV)u7lmG&Eq%)KZ(jE8{8#b?iztu%3QY v033wT(a~(8$OQZsL&!xEVu7-=vw{2zcbsnTtD+iS00000NkvXXu0mjfiZ4}s literal 0 HcmV?d00001 diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index 811214809..b5f503ef4 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -271,7 +271,7 @@ dialogSearchFrom: IconButton(dialogCalendar) { iconPosition: point(9px, 8px); } -dialogsChatTypeSkip: 20px; +dialogsChatTypeSkip: 3px; dialogsChatIcon: icon {{ "dialogs/dialogs_chat", dialogsChatIconFg, point(1px, 4px) }}; dialogsChatIconOver: icon {{ "dialogs/dialogs_chat", dialogsChatIconFgOver, point(1px, 4px) }}; dialogsChatIconActive: icon {{ "dialogs/dialogs_chat", dialogsChatIconFgActive, point(1px, 4px) }}; @@ -281,6 +281,9 @@ dialogsChannelIconActive: icon {{ "dialogs/dialogs_channel", dialogsChatIconFgAc dialogsBotIcon: icon {{ "dialogs/dialogs_bot", dialogsChatIconFg, point(1px, 3px) }}; dialogsBotIconOver: icon {{ "dialogs/dialogs_bot", dialogsChatIconFgOver, point(1px, 3px) }}; dialogsBotIconActive: icon {{ "dialogs/dialogs_bot", dialogsChatIconFgActive, point(1px, 3px) }}; +dialogsForumIcon: icon {{ "dialogs/dialogs_forum", dialogsChatIconFg, point(1px, 4px) }}; +dialogsForumIconOver: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgOver, point(1px, 4px) }}; +dialogsForumIconActive: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgActive, point(1px, 4px) }}; dialogsArchiveUserpic: icon {{ "archive_userpic", historyPeerUserpicFg }}; dialogsRepliesUserpic: icon {{ "replies_userpic", historyPeerUserpicFg }}; diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index 784baa107..d3794d7ef 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -859,7 +859,9 @@ void InnerWidget::paintPeerSearchResult( // draw chat icon if (const auto chatTypeIcon = Ui::ChatTypeIcon(peer, context)) { chatTypeIcon->paint(p, rectForName.topLeft(), context.width); - rectForName.setLeft(rectForName.left() + st::dialogsChatTypeSkip); + rectForName.setLeft(rectForName.left() + + chatTypeIcon->width() + + st::dialogsChatTypeSkip); } const auto badgeWidth = result->badge.drawGetWidth( p, @@ -987,7 +989,9 @@ void InnerWidget::paintSearchInFilter( st::semiboldFont->height); if (icon) { icon->paint(p, rectForName.topLeft(), width()); - rectForName.setLeft(rectForName.left() + st::dialogsChatTypeSkip); + rectForName.setLeft(rectForName.left() + + icon->width() + + st::dialogsChatTypeSkip); } p.setPen(savedPen); text.drawLeftElided( diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index ab3cd321b..075ae864d 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -340,7 +340,9 @@ void PaintRow( } else if (from) { if (const auto chatTypeIcon = ChatTypeIcon(from, context)) { chatTypeIcon->paint(p, rectForName.topLeft(), context.width); - rectForName.setLeft(rectForName.left() + st::dialogsChatTypeSkip); + rectForName.setLeft(rectForName.left() + + chatTypeIcon->width() + + st::dialogsChatTypeSkip); } } auto texttop = context.st->textTop; @@ -739,19 +741,7 @@ void PaintUnreadBadge(QPainter &p, const QRect &rect, const UnreadBadgeStyle &st const style::icon *ChatTypeIcon( not_null<PeerData*> peer, const PaintContext &context) { - if (peer->isChat() || peer->isMegagroup()) { - return &(context.active - ? st::dialogsChatIconActive - : context.selected - ? st::dialogsChatIconOver - : st::dialogsChatIcon); - } else if (peer->isChannel()) { - return &(context.active - ? st::dialogsChannelIconActive - : context.selected - ? st::dialogsChannelIconOver - : st::dialogsChannelIcon); - } else if (const auto user = peer->asUser()) { + if (const auto user = peer->asUser()) { if (ShowUserBotIcon(user)) { return &(context.active ? st::dialogsBotIconActive @@ -759,6 +749,24 @@ const style::icon *ChatTypeIcon( ? st::dialogsBotIconOver : st::dialogsBotIcon); } + } else if (peer->isBroadcast()) { + return &(context.active + ? st::dialogsChannelIconActive + : context.selected + ? st::dialogsChannelIconOver + : st::dialogsChannelIcon); + } else if (peer->isForum()) { + return &(context.active + ? st::dialogsForumIconActive + : context.selected + ? st::dialogsForumIconOver + : st::dialogsForumIcon); + } else { + return &(context.active + ? st::dialogsChatIconActive + : context.selected + ? st::dialogsChatIconOver + : st::dialogsChatIcon); } return nullptr; } diff --git a/Telegram/SourceFiles/window/notifications_manager_default.cpp b/Telegram/SourceFiles/window/notifications_manager_default.cpp index 3017e473d..95ac393ef 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.cpp +++ b/Telegram/SourceFiles/window/notifications_manager_default.cpp @@ -870,7 +870,9 @@ void Notification::updateNotifyDisplay() { } if (const auto chatTypeIcon = Dialogs::Ui::ChatTypeIcon(_history->peer)) { chatTypeIcon->paint(p, rectForName.topLeft(), w); - rectForName.setLeft(rectForName.left() + st::dialogsChatTypeSkip); + rectForName.setLeft(rectForName.left() + + chatTypeIcon->width() + + st::dialogsChatTypeSkip); } } diff --git a/Telegram/SourceFiles/window/themes/window_theme_preview.cpp b/Telegram/SourceFiles/window/themes/window_theme_preview.cpp index 514a59954..797273504 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_preview.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_preview.cpp @@ -700,7 +700,9 @@ void Generator::paintRow(const Row &row) { })(); if (chatTypeIcon) { (*chatTypeIcon)[_palette].paint(*_p, rectForName.topLeft(), fullWidth); - rectForName.setLeft(rectForName.left() + st::dialogsChatTypeSkip); + rectForName.setLeft(rectForName.left() + + chatTypeIcon->width() + + st::dialogsChatTypeSkip); } auto texttop = y + st.textTop;