From d659200a429890ad1b87124e4b0ab486b45d66f5 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 28 May 2021 14:47:41 +0400 Subject: [PATCH] Show unmute button tooltip about space bar. --- Telegram/Resources/langs/lang.strings | 2 +- Telegram/SourceFiles/calls/calls.style | 6 ++++ .../calls/group/calls_group_panel.cpp | 10 +------ .../ui/controls/call_mute_button.cpp | 29 +++++++++++++++++++ .../ui/controls/call_mute_button.h | 9 +++++- 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index ebcc01b40..ff81278fb 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2006,7 +2006,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_group_call_unmute_small" = "Unmute"; "lng_group_call_more" = "More"; "lng_group_call_unmute" = "Unmute"; -"lng_group_call_unmute_sub" = "or hold spacebar to talk"; +"lng_group_call_unmute_sub" = "Hold space bar to temporarily unmute."; "lng_group_call_you_are_live" = "You are Live"; "lng_group_call_force_muted" = "Muted by admin"; "lng_group_call_force_muted_sub" = "You are in Listen Only mode"; diff --git a/Telegram/SourceFiles/calls/calls.style b/Telegram/SourceFiles/calls/calls.style index a8f61b595..4750f37ce 100644 --- a/Telegram/SourceFiles/calls/calls.style +++ b/Telegram/SourceFiles/calls/calls.style @@ -1254,3 +1254,9 @@ groupCallLargeVideo: GroupCallLargeVideo { groupCallVideoSmallSkip: 4px; groupCallVideoLargeSkip: 6px; + +groupCallTooltip: Tooltip(defaultTooltip) { + textBg: groupCallMembersBg; + textFg: groupCallMembersFg; + textBorder: groupCallMembersBgOver; +} diff --git a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp index 74c74de4e..44ac9d4ee 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp @@ -871,15 +871,7 @@ void Panel::setupRealMuteButtonState(not_null real) { : mute == MuteState::Muted ? tr::lng_group_call_unmute(tr::now) : tr::lng_group_call_you_are_live(tr::now)), - .subtext = ((scheduleDate || wide) - ? QString() - : state == GroupCall::InstanceState::Disconnected - ? QString() - : mute == MuteState::ForceMuted - ? tr::lng_group_call_raise_hand_tip(tr::now) - : mute == MuteState::RaisedHand - ? tr::lng_group_call_raised_hand_sub(tr::now) - : mute == MuteState::Muted + .tooltip = ((!scheduleDate && mute == MuteState::Muted) ? tr::lng_group_call_unmute_sub(tr::now) : QString()), .type = (scheduleDate diff --git a/Telegram/SourceFiles/ui/controls/call_mute_button.cpp b/Telegram/SourceFiles/ui/controls/call_mute_button.cpp index 98b7e4a50..51e4747b6 100644 --- a/Telegram/SourceFiles/ui/controls/call_mute_button.cpp +++ b/Telegram/SourceFiles/ui/controls/call_mute_button.cpp @@ -696,6 +696,17 @@ void CallMuteButton::init() { const auto &button = _st->active.button; _content->resize(button.width, button.height); + _content->events( + ) | rpl::start_with_next([=](not_null e) { + if (e->type() == QEvent::MouseMove) { + if (!_state.current().tooltip.isEmpty()) { + Ui::Tooltip::Show(1000, this); + } + } else if (e->type() == QEvent::Leave) { + Ui::Tooltip::Hide(); + } + }, _content->lifetime()); + rpl::combine( _radialInfo.rawShowProgress.value(), anim::Disables() @@ -922,6 +933,24 @@ void CallMuteButton::iconAnimationCallback() { } } +QString CallMuteButton::tooltipText() const { + return _state.current().tooltip; +} + +QPoint CallMuteButton::tooltipPos() const { + return QCursor::pos(); +} + +bool CallMuteButton::tooltipWindowActive() const { + return Ui::AppInFocus() + && Ui::InFocusChain(_content->window()) + && _content->mapToGlobal(_content->rect()).contains(QCursor::pos()); +} + +const style::Tooltip *CallMuteButton::tooltipSt() const { + return &st::groupCallTooltip; +} + void CallMuteButton::updateLabelsGeometry() { updateLabelGeometry(_content->geometry(), _label->size()); updateCenterLabelGeometry(_content->geometry(), _centerLabel->size()); diff --git a/Telegram/SourceFiles/ui/controls/call_mute_button.h b/Telegram/SourceFiles/ui/controls/call_mute_button.h index 044ce907c..109cb2c28 100644 --- a/Telegram/SourceFiles/ui/controls/call_mute_button.h +++ b/Telegram/SourceFiles/ui/controls/call_mute_button.h @@ -11,6 +11,7 @@ #include "ui/effects/cross_line.h" #include "ui/effects/gradient.h" #include "ui/effects/radial_animation.h" +#include "ui/widgets/tooltip.h" #include "lottie/lottie_icon.h" namespace style { @@ -46,10 +47,11 @@ enum class CallMuteButtonType { struct CallMuteButtonState { QString text; QString subtext; + QString tooltip; CallMuteButtonType type = CallMuteButtonType::Connecting; }; -class CallMuteButton final { +class CallMuteButton final : private AbstractTooltipShower { public: explicit CallMuteButton( not_null parent, @@ -143,6 +145,11 @@ private: void startIconState(const IconState &state); void iconAnimationCallback(); + QString tooltipText() const override; + QPoint tooltipPos() const override; + bool tooltipWindowActive() const override; + const style::Tooltip *tooltipSt() const override; + [[nodiscard]] static HandleMouseState HandleMouseStateFromType( CallMuteButtonType type);