Show unmute button tooltip about space bar.

This commit is contained in:
John Preston 2021-05-28 14:47:41 +04:00
parent cb630c69f0
commit d659200a42
5 changed files with 45 additions and 11 deletions

View file

@ -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";

View file

@ -1254,3 +1254,9 @@ groupCallLargeVideo: GroupCallLargeVideo {
groupCallVideoSmallSkip: 4px;
groupCallVideoLargeSkip: 6px;
groupCallTooltip: Tooltip(defaultTooltip) {
textBg: groupCallMembersBg;
textFg: groupCallMembersFg;
textBorder: groupCallMembersBgOver;
}

View file

@ -871,15 +871,7 @@ void Panel::setupRealMuteButtonState(not_null<Data::GroupCall*> 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

View file

@ -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<QEvent*> 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());

View file

@ -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<RpWidget*> 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);