You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SettingsMenu.js 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /* global APP, $ */
  2. var Settings = require("./../../../settings/Settings");
  3. var UIUtil = require("../../util/UIUtil");
  4. var languages = require("../../../../service/translation/languages");
  5. var UIEvents = require("../../../../service/UI/UIEvents");
  6. function generateLanguagesSelectBox() {
  7. var currentLang = APP.translation.getCurrentLanguage();
  8. var html = "<select id=\"languages_selectbox\">";
  9. var langArray = languages.getLanguages();
  10. for(var i = 0; i < langArray.length; i++) {
  11. var lang = langArray[i];
  12. html += "<option ";
  13. if(lang === currentLang)
  14. html += "selected ";
  15. html += "value=\"" + lang + "\" data-i18n='languages:" + lang + "'>";
  16. html += "</option>";
  17. }
  18. return html + "</select>";
  19. }
  20. var SettingsMenu = {
  21. init: function (emitter) {
  22. this.emitter = emitter;
  23. var startMutedSelector = $("#startMutedOptions");
  24. startMutedSelector.before(generateLanguagesSelectBox());
  25. APP.translation.translateElement($("#languages_selectbox"));
  26. $('#settingsmenu>input').keyup(function(event){
  27. if(event.keyCode === 13) {//enter
  28. SettingsMenu.update();
  29. }
  30. });
  31. if (APP.conference.isModerator) {
  32. startMutedSelector.css("display", "block");
  33. } else {
  34. startMutedSelector.css("display", "none");
  35. }
  36. $("#updateSettings").click(function () {
  37. SettingsMenu.update();
  38. });
  39. },
  40. onRoleChanged: function () {
  41. if(APP.conference.isModerator) {
  42. $("#startMutedOptions").css("display", "block");
  43. }
  44. else {
  45. $("#startMutedOptions").css("display", "none");
  46. }
  47. },
  48. setStartMuted: function (audio, video) {
  49. $("#startAudioMuted").attr("checked", audio);
  50. $("#startVideoMuted").attr("checked", video);
  51. },
  52. update: function() {
  53. // FIXME check if this values really changed:
  54. // compare them with Settings etc.
  55. var newDisplayName =
  56. UIUtil.escapeHtml($('#setDisplayName').get(0).value);
  57. if (newDisplayName) {
  58. this.emitter.emit(UIEvents.NICKNAME_CHANGED, newDisplayName);
  59. }
  60. var language = $("#languages_selectbox").val();
  61. this.emitter.emit(UIEvents.LANG_CHANGED, language);
  62. var newEmail = UIUtil.escapeHtml($('#setEmail').get(0).value);
  63. this.emitter.emit(UIEvents.EMAIL_CHANGED, newEmail);
  64. var startAudioMuted = ($("#startAudioMuted").is(":checked"));
  65. var startVideoMuted = ($("#startVideoMuted").is(":checked"));
  66. this.emitter.emit(
  67. UIEvents.START_MUTED_CHANGED, startAudioMuted, startVideoMuted
  68. );
  69. },
  70. isVisible: function() {
  71. return $('#settingsmenu').is(':visible');
  72. },
  73. onDisplayNameChange: function(id, newDisplayName) {
  74. if(id === 'localVideoContainer' || APP.conference.isLocalId(id)) {
  75. $('#setDisplayName').get(0).value = newDisplayName;
  76. }
  77. },
  78. changeAvatar: function (thumbUrl) {
  79. $('#avatar').get(0).src = thumbUrl;
  80. }
  81. };
  82. module.exports = SettingsMenu;