From ba185d1f6fc4fcbba3e36d54b36b3b10a801cf47 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 7 Dec 2020 17:15:45 +0400 Subject: [PATCH] Change group call icon in top bar. --- .../Resources/icons/top_bar_group_call.png | Bin 0 -> 588 bytes .../Resources/icons/top_bar_group_call@2x.png | Bin 0 -> 1065 bytes .../Resources/icons/top_bar_group_call@3x.png | Bin 0 -> 1470 bytes .../view/history_view_top_bar_widget.cpp | 32 +++++++++++++----- .../view/history_view_top_bar_widget.h | 6 ++-- Telegram/SourceFiles/info/info.style | 5 +++ 6 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 Telegram/Resources/icons/top_bar_group_call.png create mode 100644 Telegram/Resources/icons/top_bar_group_call@2x.png create mode 100644 Telegram/Resources/icons/top_bar_group_call@3x.png diff --git a/Telegram/Resources/icons/top_bar_group_call.png b/Telegram/Resources/icons/top_bar_group_call.png new file mode 100644 index 0000000000000000000000000000000000000000..b084f255bf41951b0a142928394b5fb70b6d3310 GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY@4TxV~7Xu z)e!4GCPN<6!|r#wm@g;<7O*dHFc9UvBGO@e!PmZ^Q;=6=4pS#z+x+Wh76%?AmS6PS zIBkte-{-hDN6s-aOiELWOFLoyK)oqzD_5Y1qs;M!j{TPoKV;}W%9OSB*6F#Ht{x9s zewqiZzs@?jaHg+VNwMSm@4q9orpn3Indpmk-*{Wbn!Gj2cHT~*fT)zu!UcO%?B*YT z{IO&CWlrwarU^UD6%zW`ET(4~%|6>;>U-|F@dhD5fyQECwX=4Su@%h+86vMv`=V%+ za-_Vex8>co zldt>PDeQcuU!eSdh5^srTc14ty3Q28RkU-;kDB}Jx>nW+x4qUfSWixtsSmZ~Nt*S&MJJ>F~4CGPm^=pPwdlFFDsls$yr1Pe7KT$6KkD zvDW`@@4S9I#KHAZ>C&LW+=fdtSSq*sso%&kJ9P2&*Mi-5Pt_RB+{3*2+a=Cpk2kU@ zCJV5D)BG1GamwW<4yiI-0imC#S`;FNzswT#WL|;&-fHd%wgnU;!v5Jzf1= J);T3K0RRKa=#KyZ literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/top_bar_group_call@2x.png b/Telegram/Resources/icons/top_bar_group_call@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..12534f22479726a7bd6f9de06372aae8c939ed02 GIT binary patch literal 1065 zcmV+^1lIeBP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFlSxEDRA>e5SUpQKK@eU)Fe(ZP zK@|J}7Wom9PHgNf1e*xytR&V})(V#XgH-wlj6zx!3mZX25Yk8>DjE{!oynUyZ}#ro zy*0TQ$igzSpYuGko4L&lDWw2w-E84-k!R=yi~PXO#wh6 z_4V~t-Q3)${r!D4J3DLi5&eh*HJi=C!@~n&?rnK~eumZ6)c`&p=5X*|UthgNu32AO zTZ#tf;4_r&cAsn?*1Zbg_YkohpL&wj$ki zpPrq-;^Ly`bidA>ojf7o9nWoTCCYQDR0?vrT&t3<&ok{~dqSoYAcqL!Cc`|xSS)%| zN#}l+-e6ndewL>T>iCyZQF4t7UTdY}3lO-wyW{ySxw*M1+DSGxHa67o@HfQA$4Av@Gy)Jr z1nB#;N}R+N+7-h ziehJ-T4cj-2<|Zk^Y#%w#g4hd_Nz zR2w4=V0s-ey$+aO4|NXPK`HO6ZCf|)Ux!(U))T=$hpr?>6%!bj@y-&U%o%x4FNH$E z1)R+qHv(^OZvrD_l<9?fc6KKEsd0FCXamG`jvImV^K$|8_VyO2>V;A+_%U(?XS2?Y zz|PK&jy2G}xVV7v@o^gvznSAkU}R(jN~KZ&G4G^Is$y3 zFz!}9|M>VACMPG^Kv(5ZJN%(=FZ5zvT3S*Q6BDXjE-Q@x?wiG2*%1OUZFY3}_gl52 j+a|Z!fIxD-4!86V(iI;pmgx;p00000NkvXXu0mjfj|bch literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/top_bar_group_call@3x.png b/Telegram/Resources/icons/top_bar_group_call@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..08df3a7faac815831ad0d28617af0440adc3492a GIT binary patch literal 1470 zcmV;v1ws0WP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=C`m*?RCodHn>{Q9K@@=Z&iSbX z5g|k*6e9i-3Z;fbO-LkEq7{uObQ%;ol}@Fh(

OqEHbeD)AqGk%*u8d*+GTEc<3> z=XUl_W|Ga#y_tRU-ZyV%cJ5{qhG77^bm9<5a^zb4LqG!(gn|a70SO2Qigg4D0Hp-w zw&JFyCZngP$LQ$jFe)o6jgpcQBP%P*Rxb*I&(BZe`uf^9Jv}wn*4B*W)>aWDKA`_F=lq58_xtANW@docYV}u_`5lMc z^z<~ew6s7@PL8O7(8^P()c1ruF);xcExgp(+392>9YK?mlcYX`)85|hq%e|Y*x`?l zkEBoY^YczN(}39X0;vom$Fc;*DnB|pO8RtkbmZg*4e0#*oK%LxDz1Ra%gafh-rn9I znN0Hhq5<)i_9)LeZaVJn?v8|1TwF{7;_k(G+lSZJS7t|i6VHA&p_5K=0g<(R60)c? zrlzJ0Hmtud%%dzSi3}|=4w;Y{t^8s@Y|Wv}kG3u^FKun1ptQ7<*BnPDlBH_|JtWDV3NnIZ+ww9bWg`eXML8gR6hJ3%nBawZl&NaV z%aDu&AlV+4jUd_j){cn;AlV+4by&8(7eKyD($oY?$(Z4hPrd+(yw?&2YCr;58juDg zARs8#5u^bL2ndRG1cd?U;^M;AEG4s5ilD%k2wGTJu(?XfY?UG^AUBa-9_RIDmGcV# z3jh+fNG{tMvYTOR`;pkJS`BiOmjxsnp;jAW2}pMLZ*^EUFAK<*Ntzigm8c1vl1V95 zSecwRWW%1>L+WuO_cCPM=(pC9jUaX}?O2e2csBSUmj%QfVjmwL2+x*SZ`)*X67cM2 zf3=ftZ~Rey6LuyBiJ< z4|$8JGI_>_IMH}j$ABLm9;6`k_4NUp6O=*VDe`;_7$K=TNRE-@6fx;CJRs_HB9-TC zCUVaQ$`7T|)nm;U6coVj?k;tUCmGuf0B$X|x3^(tW(L~Y+JsSTwd*JE zyqXX<2pi#fMd`}T&4u;#b>1z&4qXC!H%-_krCX6KJV1#=0u~n+xo~hL8yFY}6Arc= z9-!ITSuPwb7#|-G8;(DKaO_hlJ3HHSnD<&h`o6ijIkT=GohYGGeFRZIp`znsV`Gq? zpARD=BaRP(_{`++YCzE7)B{>sSxEk;Ne2f9P*hap zWNa8^>H)F$JYZ*MM~V>+%c`oXFaU_!R1XLzz}nhcxVgD;1?l$o7Mh!zMTUk|?hhb@ zgnO&Ky*)=r`}_M)S63I7^KRPp4-i7aC*`4`A=ud1fTyRYZ&>*A2Yw$O9tP{uFR}Ex zaZE{_#E((zBbbE$D)8Rf3dRDtRsshkXI}WVx&LZ}Z(1}g(0~N}paE$>0s?|!9YF#> YUj=u(mr!ET7ytkO07*qoM6N<$fsetClickedCallback([=] { _deleteSelection.fire({}); }); _delete->setWidthChangedCallback([=] { updateControlsGeometry(); }); _clear->setClickedCallback([=] { _clearSelection.fire({}); }); - _call->setClickedCallback([=] { onCall(); }); - _search->setClickedCallback([=] { onSearch(); }); + _call->setClickedCallback([=] { call(); }); + _groupCall->setClickedCallback([=] { groupCall(); }); + _search->setClickedCallback([=] { search(); }); _menuToggle->setClickedCallback([=] { showMenu(); }); _infoToggle->setClickedCallback([=] { toggleInfoSection(); }); _back->addClickHandler([=] { backClicked(); }); @@ -202,21 +204,27 @@ void TopBarWidget::refreshLang() { InvokeQueued(this, [this] { updateControlsGeometry(); }); } -void TopBarWidget::onSearch() { +void TopBarWidget::search() { if (_activeChat.key) { _controller->content()->searchInChat(_activeChat.key); } } -void TopBarWidget::onCall() { +void TopBarWidget::call() { if (const auto peer = _activeChat.key.peer()) { if (const auto user = peer->asUser()) { Core::App().calls().startOutgoingCall(user, false); - } else if (const auto megagroup = peer->asMegagroup()) { + } + } +} + +void TopBarWidget::groupCall() { + if (const auto peer = _activeChat.key.peer()) { + if (const auto megagroup = peer->asMegagroup()) { if (megagroup->amAnonymous()) { Ui::ShowMultilineToast({ .text = tr::lng_group_call_no_anonymous(tr::now), - }); + }); } else if (const auto call = megagroup->call()) { Core::App().calls().joinGroupCall(megagroup, call->input()); } else { @@ -653,6 +661,7 @@ void TopBarWidget::updateControlsGeometry() { _search->moveToRight(_rightTaken, otherButtonsTop); _rightTaken += _search->width() + st::topBarCallSkip; _call->moveToRight(_rightTaken, otherButtonsTop); + _groupCall->moveToRight(_rightTaken, otherButtonsTop); _rightTaken += _call->width(); updateMembersShowArea(); @@ -713,13 +722,20 @@ void TopBarWidget::updateControlsVisibility() { if (const auto user = peer->asUser()) { return session().serverConfig().phoneCallsEnabled.current() && user->hasCalls(); - } else if (const auto megagroup = peer->asMegagroup()) { - return megagroup->canManageCall(); } } return false; }(); _call->setVisible(historyMode && callsEnabled); + const auto groupCallsEnabled = [&] { + if (const auto peer = _activeChat.key.peer()) { + if (const auto megagroup = peer->asMegagroup()) { + return megagroup->canManageCall(); + } + } + return false; + }(); + _groupCall->setVisible(historyMode && groupCallsEnabled); if (_membersShowArea) { _membersShowArea->show(); diff --git a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.h b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.h index 988758b46..a79b5dcc2 100644 --- a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.h +++ b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.h @@ -95,8 +95,9 @@ private: void selectedShowCallback(); void updateInfoToggleActive(); - void onCall(); - void onSearch(); + void call(); + void groupCall(); + void search(); void showMenu(); void toggleInfoSection(); @@ -144,6 +145,7 @@ private: object_ptr _info = { nullptr }; object_ptr _call; + object_ptr _groupCall; object_ptr _search; object_ptr _infoToggle; object_ptr _menuToggle; diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index d311f6fe1..dcc1db0c8 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -763,6 +763,11 @@ topBarCall: IconButton(topBarSearch) { icon: icon {{ "top_bar_call", menuIconFg }}; iconOver: icon {{ "top_bar_call", menuIconFgOver }}; } +topBarGroupCall: IconButton(topBarSearch) { + icon: icon {{ "top_bar_group_call", menuIconFg }}; + iconOver: icon {{ "top_bar_group_call", menuIconFgOver }}; + iconPosition: point(8px, 15px); +} topBarInfo: IconButton(topBarSearch) { icon: icon {{ "top_bar_profile", menuIconFg }}; iconOver: icon {{ "top_bar_profile", menuIconFgOver }};