| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- var Settings = (function() {
- var displayed = false,
- currentPage = null,
- pages = {
- services: "services",
- display: "display",
- privacy: "privacy"
- },
- spawn = function() {
- document.getElementById(R.id.settings.wrapper).classList.remove(R.klass.hidden);
- // SERVICES
- var serviceFrag = document.createDocumentFragment(),
- hasServices = false;
- for (var i in CONFIG.services) {
- var provider = CONFIG.services[i];
- for (var service in provider) {
- var serviceItem = document.createElement("li"),
- providerDom = document.createElement("span"),
- serviceDom = document.createElement("span");
- providerDom.textContent = i;
- serviceDom.textContent = provider[service];
- serviceItem.className = R.klass.settings.services.item;
- providerDom.className = R.klass.settings.services.provider;
- serviceDom.className = R.klass.settings.services.service;
- serviceItem.appendChild(providerDom);
- serviceItem.appendChild(serviceDom);
- serviceFrag.appendChild(serviceItem);
- hasServices = true;
- }
- }
- var serviceListDom = document.getElementById(R.id.settings.services.serviceList);
- serviceListDom.textContent = "";
- if (hasServices) {
- document.getElementById(R.id.settings.services.serviceListEmpty).classList.remove(R.klass.hidden);
- serviceListDom.appendChild(serviceFrag);
- } else {
- document.getElementById(R.id.settings.services.serviceListEmpty).classList.add(R.klass.hidden);
- }
- // EMOJIS
- var emojiFrag = document.createDocumentFragment(),
- emojiList = document.getElementById(R.id.settings.display.emojiProvider);
- for (var i in EmojiProvider) {
- var opt = document.createElement("option");
- opt.value = i;
- opt.textContent = EmojiProvider[i].name;
- if (EmojiProvider[i] === CURRENT_EMOJI_PROVIDER)
- opt.selected = true;
- emojiFrag.appendChild(opt);
- }
- emojiList.textContent = "";
- emojiList.appendChild(emojiFrag);
- document.getElementById(R.id.settings.display.displayAvatar).checked = CONFIG.isDisplayAvatars();
- document.getElementById(R.id.settings.display.colorfulNames).checked = CONFIG.isColorfulNames();
- document.getElementById(R.id.settings.display.scrollAvatars).checked = CONFIG.isScrollAvatars();
- displayed = true;
- },
- setVisiblePage = function(page) {
- if (currentPage) {
- document.getElementById(R.id.settings.wrapper).classList.remove("display-" +currentPage);
- document.getElementById("setting-menu-" +currentPage).classList.remove(R.klass.selected);
- document.getElementById(R.id.settings.services.addSection).classList.add(R.klass.hidden);
- }
- document.getElementById(R.id.settings.wrapper).classList.add("display-" +page);
- document.getElementById("setting-menu-" +page).classList.add(R.klass.selected);
- currentPage = page;
- },
- close = function() {
- document.getElementById(R.id.settings.wrapper).classList.add(R.klass.hidden);
- displayed = false;
- };
- document.getElementById(R.id.settings.menu.list).addEventListener("click", function(e) {
- for (var target = e.target; e.currentTarget !== target && target; target = target.parentNode) {
- if (target.dataset && target.dataset["target"]) {
- for (var i in pages) {
- if (pages[i] === target.dataset["target"]) {
- setVisiblePage(pages[i]);
- return;
- }
- }
- }
- }
- });
- document.getElementById(R.id.settings.closeButton).addEventListener("click", close);
- document.getElementById(R.id.settings.services.addButton).addEventListener("click", function(e) {
- e.preventDefault();
- document.getElementById(R.id.settings.services.addSection).classList.remove(R.klass.hidden);
- return false;
- });
- document.getElementById(R.id.settings.services.serviceAddConfirm).addEventListener("click", function(e) {
- e.preventDefault();
- document.location.href = document.getElementById(R.id.settings.services.serviceProviderList).value;
- return false;
- });
- document.getElementById(R.id.settings.commitBt).addEventListener("click", function() {
- var newSettings = {},
- emojiProvider = document.getElementById(R.id.settings.display.emojiProvider).value;
- if (emojiProvider !== CONFIG.getEmojiProvider()) {
- newSettings["emojiProvider"] = document.getElementById(R.id.settings.display.emojiProvider).value;
- }
- var displayAvatar = !!document.getElementById(R.id.settings.display.displayAvatar).checked;
- if (displayAvatar !== CONFIG.isDisplayAvatars()) {
- newSettings["displayAvatar"] = displayAvatar;
- }
- var isColorfulNames = !!document.getElementById(R.id.settings.display.colorfulNames).checked;
- if (isColorfulNames !== CONFIG.isColorfulNames()) {
- newSettings["colorfulNames"] = isColorfulNames;
- }
- var isScrollAvatars = !!document.getElementById(R.id.settings.display.scrollAvatars).checked;
- if (isScrollAvatars !== CONFIG.isScrollAvatars()) {
- newSettings["scrollAvatars"] = isScrollAvatars;
- }
- CONFIG.commitNewSettings(newSettings);
- close();
- });
- return {
- /** @type {function(string=)} */
- display: function(page) {
- if (!displayed)
- spawn();
- setVisiblePage(page || pages.services);
- return this;
- },
- /** @type {function(boolean)} */
- setClosable: function(closable) {
- return this;
- },
- pages: pages
- };
- })();
|