uiSettings.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. var Settings = (function() {
  2. var displayed = false,
  3. currentPage = null,
  4. pages = {
  5. services: "services",
  6. display: "display",
  7. privacy: "privacy"
  8. },
  9. spawn = function() {
  10. document.getElementById(R.id.settings.wrapper).classList.remove(R.klass.hidden);
  11. var emojiFrag = document.createDocumentFragment(),
  12. emojiList = document.getElementById(R.id.settings.display.emojiProvider);
  13. for (var i in EmojiProvider) {
  14. var opt = document.createElement("option");
  15. opt.value = i;
  16. opt.textContent = EmojiProvider[i].name;
  17. if (EmojiProvider[i] === CURRENT_EMOJI_PROVIDER)
  18. opt.selected = true;
  19. emojiFrag.appendChild(opt);
  20. }
  21. emojiList.textContent = "";
  22. emojiList.appendChild(emojiFrag);
  23. displayed = true;
  24. },
  25. setVisiblePage = function(page) {
  26. if (currentPage) {
  27. document.getElementById(R.id.settings.wrapper).classList.remove("display-" +currentPage);
  28. document.getElementById("setting-menu-" +currentPage).classList.remove(R.klass.selected);
  29. document.getElementById(R.id.settings.services.addSection).classList.add(R.klass.hidden);
  30. }
  31. document.getElementById(R.id.settings.wrapper).classList.add("display-" +page);
  32. document.getElementById("setting-menu-" +page).classList.add(R.klass.selected);
  33. currentPage = page;
  34. },
  35. close = function() {
  36. document.getElementById(R.id.settings.wrapper).classList.add(R.klass.hidden);
  37. displayed = false;
  38. };
  39. document.getElementById(R.id.settings.menu.list).addEventListener("click", function(e) {
  40. for (var target = e.target; e.currentTarget !== target && target; target = target.parentNode) {
  41. if (target.dataset && target.dataset["target"]) {
  42. for (var i in pages) {
  43. if (pages[i] === target.dataset["target"]) {
  44. setVisiblePage(pages[i]);
  45. return;
  46. }
  47. }
  48. }
  49. }
  50. });
  51. document.getElementById(R.id.settings.closeButton).addEventListener("click", close);
  52. document.getElementById(R.id.settings.services.addButton).addEventListener("click", function(e) {
  53. e.preventDefault();
  54. document.getElementById(R.id.settings.services.addSection).classList.remove(R.klass.hidden);
  55. return false;
  56. });
  57. document.getElementById(R.id.settings.services.serviceAddConfirm).addEventListener("click", function(e) {
  58. e.preventDefault();
  59. document.location.href = document.getElementById(R.id.settings.services.serviceProviderList).value;
  60. return false;
  61. });
  62. document.getElementById(R.id.settings.commitBt).addEventListener("click", function() {
  63. loadEmojiProvider(document.getElementById(R.id.settings.display.emojiProvider).value);
  64. close();
  65. });
  66. return {
  67. /** @type {function(string=)} */
  68. display: function(page) {
  69. if (!displayed)
  70. spawn();
  71. setVisiblePage(page || pages.services);
  72. return this;
  73. },
  74. /** @type {function(boolean)} */
  75. setClosable: function(closable) {
  76. return this;
  77. },
  78. pages: pages
  79. };
  80. })();