Skip to content

Commit

Permalink
Uses tooltip to show custom popups for mute mic button/shared video b…
Browse files Browse the repository at this point in the history
…utton.
  • Loading branch information
damencho committed Feb 15, 2017
1 parent 55a8b44 commit a1b3c56
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 70 deletions.
3 changes: 2 additions & 1 deletion conference.js
Original file line number Diff line number Diff line change
Expand Up @@ -1229,7 +1229,8 @@ export default {

room.on(ConferenceEvents.TALK_WHILE_MUTED, () => {
APP.UI.showToolbar(6000);
UIUtil.animateShowElement($("#talkWhileMutedPopup"), true, 5000);

APP.UI.showCustomToolbarPopup('#talkWhileMutedPopup', true, 5000);
});

/*
Expand Down
1 change: 1 addition & 0 deletions css/_base.scss
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ form {
z-index: $tooltipsZ;
&-inner {
background-color: $tooltipBg;
max-width: 350px;
}

&-arrow {
Expand Down
50 changes: 5 additions & 45 deletions css/_login_menu.scss
Original file line number Diff line number Diff line change
@@ -1,58 +1,18 @@
/*Initialize*/
ul.loginmenu {
font-family: $baseFontFamily;
line-height: normal;
display:none;
div.loginmenu {
position: absolute;
margin: 0;
padding: 5px;
padding-bottom: 7px;
top: 45px;
left: -5px;
background-color: rgba(0,0,0,0.9);
border: 1px solid rgba(256, 256, 256, 0.2);
border-radius:8px;
}

ul.loginmenu li {
list-style-type: none;
padding: 7px;
color: #fff;
font-size: 11pt;
cursor: default;
white-space: pre;
}

ul.loginmenu:after {
content: url('../images/dropdownPointer.png');
display: block;
position: absolute;
top: -7px;
left: 18px;
top: 40px;
left: 20px;
}

a.disabled {
color: gray !important;
pointer-events: none;
}

.loginmenuPadding {
width: 50px;
height: 30px;
position: absolute;
top: -30px;
left: 0px;
}

.loginmenu.extendedToolbarPopup {
left: 55px;
top: 0px;
}

ul.loginmenu.extendedToolbarPopup:after {
content: url('../images/leftDropdownPointer.png');
display: block;
position: absolute;
top: 18px;
left: -7px;
top: 20px;
left: 40px;
}
Binary file removed images/dropdownPointer.png
Binary file not shown.
Binary file removed images/leftDropdownPointer.png
Binary file not shown.
11 changes: 11 additions & 0 deletions modules/UI/UI.js
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,17 @@ UI.inputDisplayNameHandler = function (newDisplayName) {
eventEmitter.emit(UIEvents.NICKNAME_CHANGED, newDisplayName);
};

/**
* Show custom popup/tooltip for a specified button.
* @param popupSelectorID the selector id of the popup to show
* @param show true or false/show or hide the popup
* @param timeout the time to show the popup
*/
UI.showCustomToolbarPopup = function (popupSelectorID, show, timeout) {
eventEmitter.emit(UIEvents.SHOW_CUSTOM_TOOLBAR_BUTTON_POPUP,
popupSelectorID, show, timeout);
};

/**
* Return the type of the remote video.
* @param jid the jid for the remote video
Expand Down
4 changes: 2 additions & 2 deletions modules/UI/shared_video/SharedVideo.js
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ export default class SharedVideoManager {
if(show)
this.showSharedVideoMutedPopup(false);

UIUtil.animateShowElement($("#micMutedPopup"), show, 5000);
APP.UI.showCustomToolbarPopup('#micMutedPopup', show, 5000);
}

/**
Expand All @@ -554,7 +554,7 @@ export default class SharedVideoManager {
if(show)
this.showMicMutedPopup(false);

UIUtil.animateShowElement($("#sharedVideoMutedPopup"), show, 5000);
APP.UI.showCustomToolbarPopup('#sharedVideoMutedPopup', show, 5000);
}
}

Expand Down
81 changes: 60 additions & 21 deletions modules/UI/toolbars/Toolbar.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* global APP, $, config, interfaceConfig, JitsiMeetJS */
/* global AJS, APP, $, config, interfaceConfig, JitsiMeetJS */
import UIUtil from '../util/UIUtil';
import UIEvents from '../../../service/UI/UIEvents';
import SideContainerToggler from "../side_pannels/SideContainerToggler";
Expand Down Expand Up @@ -26,8 +26,8 @@ const buttonHandlers = {
if (sharedVideoManager
&& sharedVideoManager.isSharedVideoVolumeOn()
&& !sharedVideoManager.isSharedVideoOwner()) {
UIUtil.animateShowElement(
$("#unableToUnmutePopup"), true, 5000);
APP.UI.showCustomToolbarPopup(
'#unableToUnmutePopup', true, 5000);
}
else {
JitsiMeetJS.analytics.sendEvent('toolbar.audio.unmuted');
Expand Down Expand Up @@ -120,19 +120,19 @@ const defaultToolbarButtons = {
shortcutDescription: "keyboardShortcuts.mute",
popups: [
{
id: "micMutedPopup",
className: "loginmenu",
dataAttr: "[html]toolbar.micMutedPopup"
id: 'micMutedPopup',
className: 'loginmenu',
dataAttr: '[title]toolbar.micMutedPopup'
},
{
id: "unableToUnmutePopup",
className: "loginmenu",
dataAttr: "[html]toolbar.unableToUnmutePopup"
id: 'unableToUnmutePopup',
className: 'loginmenu',
dataAttr: '[title]toolbar.unableToUnmutePopup'
},
{
id: "talkWhileMutedPopup",
className: "loginmenu",
dataAttr: "[html]toolbar.talkWhileMutedPopup"
id: 'talkWhileMutedPopup',
className: 'loginmenu',
dataAttr: '[title]toolbar.talkWhileMutedPopup'
}
],
content: "Mute / Unmute",
Expand Down Expand Up @@ -263,11 +263,14 @@ const defaultToolbarButtons = {
id: 'toolbar_button_sharedvideo',
tooltipKey: 'toolbar.sharedvideo',
className: 'button icon-shared-video',
html: `<ul id="sharedVideoMutedPopup"
class="loginmenu extendedToolbarPopup">
<li data-i18n="[html]toolbar.sharedVideoMutedPopup"></li>
</ul>
`
popups: [
{
id: 'sharedVideoMutedPopup',
className: 'loginmenu extendedToolbarPopup',
dataAttr: '[title]toolbar.sharedVideoMutedPopup',
dataAttrPosition: 'w'
}
]
},
'sip': {
id: 'toolbar_button_sip',
Expand Down Expand Up @@ -358,6 +361,12 @@ Toolbar = {
Toolbar._handleFullScreenToggled(isFullScreen);
});

APP.UI.addListener(UIEvents.SHOW_CUSTOM_TOOLBAR_BUTTON_POPUP,
(toolbarButtonID, popupID, show, timeout) => {
Toolbar._showCustomToolbarPopup(
toolbarButtonID, popupID, show, timeout);
});

if(!APP.tokenData.isGuest) {
$("#toolbar_button_profile").addClass("unclickable");
UIUtil.removeTooltip(
Expand Down Expand Up @@ -724,17 +733,47 @@ Toolbar = {

_addPopups(buttonElement, popups = []) {
popups.forEach((popup) => {
let popupElement = document.createElement("ul");
const popupElement = document.createElement('div');
popupElement.id = popup.id;
popupElement.className = popup.className;
let liElement = document.createElement("li");
liElement.setAttribute("data-i18n", popup.dataAttr);
popupElement.appendChild(liElement);
popupElement.setAttribute('data-i18n', popup.dataAttr);

let gravity = 'n';
if (popup.dataAttrPosition)
gravity = popup.dataAttrPosition;
popupElement.setAttribute('data-tooltip', gravity);

buttonElement.appendChild(popupElement);
});
},

/**
* Show custom popup/tooltip for a specified button.
* @param popupSelectorID the selector id of the popup to show
* @param show true or false/show or hide the popup
* @param timeout the time to show the popup
*/
_showCustomToolbarPopup(popupSelectorID, show, timeout) {

const gravity = $(popupSelectorID).attr('data-tooltip');
AJS.$(popupSelectorID)
.tooltip({
trigger: 'manual',
html: true,
gravity: gravity,
title: 'title'});
if (show) {
AJS.$(popupSelectorID).tooltip('show');
setTimeout(function () {
// hide the tooltip
AJS.$(popupSelectorID).tooltip('hide');
}, timeout);
} else {
AJS.$(popupSelectorID).tooltip('hide');
}
},

/**
* Sets the toggled state of the given element depending on the isToggled
* parameter.
*
Expand Down
7 changes: 6 additions & 1 deletion service/UI/UIEvents.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,5 +153,10 @@ export default {
/**
* Indicates that a password is required for the call.
*/
PASSWORD_REQUIRED: "UI.password_required"
PASSWORD_REQUIRED: "UI.password_required",

/**
* Show custom popup/tooltip for a specified button.
*/
SHOW_CUSTOM_TOOLBAR_BUTTON_POPUP: "UI.show_custom_toolbar_button_popup"
};

0 comments on commit a1b3c56

Please sign in to comment.