From 6a4af6636283e853420697b15d9dd3d78daab266 Mon Sep 17 00:00:00 2001 From: Belga Date: Thu, 30 Oct 2014 09:51:57 +0100 Subject: [PATCH] Issue #4: font-size option now available in options added: double-clicking on a contact when on the options tab now switches to chat-panel --- chromesoul.html | 9 +++++---- lib/contacts.nsui.js | 1 + lib/nsui.js | 32 +++++++++++++++++++++++++------- lib/options.js | 14 +++++++++++--- lib/tab.nsui.js | 15 +++++++++++---- 5 files changed, 53 insertions(+), 18 deletions(-) mode change 100644 => 100755 lib/tab.nsui.js diff --git a/chromesoul.html b/chromesoul.html index 8b30a73..56ec90b 100644 --- a/chromesoul.html +++ b/chromesoul.html @@ -19,10 +19,11 @@
-
-
-
-
+
+
+
+
+
diff --git a/lib/contacts.nsui.js b/lib/contacts.nsui.js index d46b2f3..ab1df9a 100644 --- a/lib/contacts.nsui.js +++ b/lib/contacts.nsui.js @@ -66,6 +66,7 @@ ContactList.prototype.addContact = function(name) { var nel = $cs.ui.addNewTab(name); $cs.ui.hideAllTabs(); + $cs.ui.showContent("chat-pannel"); nel.show(); }); close.addEventListener("click", (function(elem) { diff --git a/lib/nsui.js b/lib/nsui.js index b21779b..caf174e 100644 --- a/lib/nsui.js +++ b/lib/nsui.js @@ -77,7 +77,7 @@ Nsui.prototype.getTabByName = function(name) { } return ret; -} +}; Nsui.prototype.getNextTab = function(current_name) { var i, prev = null; @@ -204,15 +204,33 @@ Nsui.prototype.sanitizeText = function(str) { return str.replace(/&/g, '&').replace(//g, '>'); }; +Nsui.prototype.currentTabStyle = function() { + $cs.opts.restore(); + if (this.tab_lst.length > 1) { + for (var tab in this.tab_lst) { + if (tab.el_lst.classList.contains("tab-current")) { + tab.chat_log.style.fontSize = $cs.opts.values["chat-size"] + "px"; + break; + } + } + } + else if (this.tab_lst.length > 0) { + this.tab_lst[0].chat_log.style.fontSize = $cs.opts.values["chat-size"] + "px"; + } +}; + Nsui.prototype.showContent = function(part_id) { var i, ctn_lst = ["config-pannel", "chat-pannel"]; - for (i = ctn_lst.length - 1; i>= 0; --i) { - if (ctn_lst[i] === part_id) { - document.getElementById(ctn_lst[i]).style.display = "block"; - } else { - document.getElementById(ctn_lst[i]).style.display = "none"; + if (part_id === "chat-pannel") { + this.currentTabStyle(); } + for (i = ctn_lst.length - 1; i>= 0; --i) { + if (ctn_lst[i] === part_id) { + document.getElementById(ctn_lst[i]).style.display = "block"; + } else { + document.getElementById(ctn_lst[i]).style.display = "none"; + } } }; @@ -222,7 +240,7 @@ Nsui.prototype.switchContent = function(part_id, part_id_to) { } else { this.showContent(part_id_to); } -} +}; Nsui.prototype.init = function() { window.onfocus = (function(elem) { diff --git a/lib/options.js b/lib/options.js index 4afacdc..226782d 100644 --- a/lib/options.js +++ b/lib/options.js @@ -33,6 +33,9 @@ OptionsManager.prototype.types = { }, "checkbox": function(elem) { return elem.checked; + }, + "number": function(elem) { + return elem.value; } }, "set": { @@ -48,6 +51,9 @@ OptionsManager.prototype.types = { } else { elem.setAttribute('checked'); } + }, + "number": function(elem, val) { + elem.value = val; } } }; @@ -81,7 +87,7 @@ OptionsManager.prototype.init = function() { OptionsManager.prototype.savePart = function(pass) { var i = 0, data = {}, storage; - if (pass) { + if (pass) { storage = this.pass_storage; } else { storage = this.storage; @@ -89,7 +95,7 @@ OptionsManager.prototype.savePart = function(pass) { if (this.opts !== null) { for (i = this.opts.length - 1; i >= 0; --i) { - if ((pass && (this.getElemType(this.opts[i]) === "password" || this.getElemType(this.opts[i]) === "text")) + if ((pass && (this.getElemType(this.opts[i]) === "password" || this.getElemType(this.opts[i]) === "text")) || (!pass && this.getElemType(this.opts[i]) !== "password" && this.getElemType(this.opts[i]) !== "text")) { data[this.opts[i].id] = this.getElemValue(this.opts[i]); this.values[this.opts[i].id] = data[this.opts[i].id]; @@ -110,7 +116,7 @@ OptionsManager.prototype.savePart = function(pass) { OptionsManager.prototype.save = function() { this.savePart(true); - this.savePart(false); + this.savePart(false); }; OptionsManager.prototype.restore = function() { @@ -151,3 +157,5 @@ OptionsManager.prototype.setElemValue = function(elem, val) { this.types.set[type](elem, val); } }; + + diff --git a/lib/tab.nsui.js b/lib/tab.nsui.js old mode 100644 new mode 100755 index c4f8f26..571889a --- a/lib/tab.nsui.js +++ b/lib/tab.nsui.js @@ -22,6 +22,7 @@ var Tab = function(name) { this.buff_len = 1000; this.history_index = 0; this.history = []; + $cs.opts.restore(); this.initListElement(); this.initBodyElement(); }; @@ -62,16 +63,21 @@ Tab.prototype.initListElement = function() { Tab.prototype.initBodyElement = function() { var chat_input_w = document.createElement("div"); - + this.chat_input = document.createElement("input"); this.chat_input.placeholder = "Some text here..."; + this.chat_log = document.createElement("p"); this.chat_log.classList.add("chat-log"); + this.chat_log.style.fontSize = $cs.opts.values["chat-size"] + "px"; + this.el_body = document.createElement("div"); - this.el_body.classList.add("tab-body"); + this.el_body.classList.add("tab-body"); this.el_body.id = this.name; this.el_body.style.display = "none"; + chat_input_w.classList.add("chat-input-wrapper"); + this.chat_input.classList.add("chat-input"); this.chat_input.setAttribute("type", "text"); this.chat_input.addEventListener("keyup", (function(elem) { @@ -132,7 +138,9 @@ Tab.prototype.show = function() { this.el_lst.classList.remove("tab-active"); this.el_lst.classList.add("tab-current"); this.el_body.style.display = "block"; + $cs.opts.restore() this.chat_log.scrollTop = 42000; + this.chat_log.style.fontSize = $cs.opts.values["chat-size"] + "px"; this.chat_input.focus(); }; @@ -156,11 +164,10 @@ Tab.prototype.flushText = function() { Tab.prototype.appendMessage = function(msg) { this.history_index = 0; this.chat_log.innerHTML += '
' + $cs.ui.formatMessage(msg) + '
'; - + if (!(typeof msg.login !== "undefined" && msg.login !== null)) { this.history.push(msg.message); } - this.flushText(); this.chat_log.scrollTop = 42 * this.buff_len; };