adding an avatar manager

This commit is contained in:
Rodolphe Breard 2013-01-13 20:06:06 +01:00
parent 3d4a8a3052
commit de8a0b2e37
5 changed files with 57 additions and 22 deletions

View file

@ -23,6 +23,7 @@
<div id="config-pannel"> <div id="config-pannel">
Login: <input type="text" id="login" class="opt" value=""><br> Login: <input type="text" id="login" class="opt" value=""><br>
Password (socks): <input type="password" id="pwd_socks" class="opt" value=""><br> Password (socks): <input type="password" id="pwd_socks" class="opt" value=""><br>
Enable notifications: <input type="checkbox" id="enable_notif" class="opt" checked="checked"><br>
Enable messages: <input type="checkbox" id="enable_msg" class="opt" checked="checked"><br> Enable messages: <input type="checkbox" id="enable_msg" class="opt" checked="checked"><br>
<button id="save">Save</button> <span id="status"></span> <button id="save">Save</button> <span id="status"></span>
</div> </div>
@ -35,6 +36,7 @@
<script type="text/javascript" src="third-party/md5-min.js"></script> <script type="text/javascript" src="third-party/md5-min.js"></script>
<script type="text/javascript" src="third-party/ab-str.js"></script> <script type="text/javascript" src="third-party/ab-str.js"></script>
<script type="text/javascript" src="lib/ns_client.js"></script> <script type="text/javascript" src="lib/ns_client.js"></script>
<script type="text/javascript" src="lib/avatars.js"></script>
<script type="text/javascript" src="lib/options.js"></script> <script type="text/javascript" src="lib/options.js"></script>
<script type="text/javascript" src="lib/tab.nsui.js"></script> <script type="text/javascript" src="lib/tab.nsui.js"></script>
<script type="text/javascript" src="lib/contacts.nsui.js"></script> <script type="text/javascript" src="lib/contacts.nsui.js"></script>

48
lib/avatars.js Normal file
View file

@ -0,0 +1,48 @@
//
// Copyright (c) 2012 Rodolphe Breard
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
var AvatarManager = function() {
this.avatars = {};
};
AvatarManager.prototype.getContactPic = function(name, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://www.epitech.eu/intra/photos/" + name + ".jpg", true);
xhr.responseType = "blob";
xhr.onload = (function(elem) {
return function(e) {
if (e.target.status === 200) {
elem.avatars[name] = window.webkitURL.createObjectURL(this.response);
} else {
elem.avatars[name] = "img/default-avatar.jpg";
}
if (typeof callback !== "undefined") {
callback(elem.avatars[name]);
}
};
})(this);
xhr.send();
}
AvatarManager.prototype.get = function(name, callback) {
if (typeof this.avatars[name] === "undefined") {
this.getContactPic(name, callback);
} else {
callback(this.avatars[name]);
}
};

View file

@ -38,25 +38,6 @@ ContactList.prototype.insertContact = function(elem) {
} }
}; };
ContactList.prototype.getContactPic = function(elem, infos) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://www.epitech.eu/intra/photos/" + infos.name + ".jpg", true);
xhr.responseType = "blob";
xhr.onload = (function(el) {
return function(e) {
if (e.target.status === 200) {
infos.avatar = window.webkitURL.createObjectURL(this.response);
} else {
infos.avatar= "img/default-avatar.jpg";
}
elem.style.backgroundImage = "url('" + infos.avatar + "')";
};
})(this);
xhr.send();
}
ContactList.prototype.addContact = function(name) { ContactList.prototype.addContact = function(name) {
var infos = {}, li = null, login = null, close = null; var infos = {}, li = null, login = null, close = null;
@ -68,7 +49,9 @@ ContactList.prototype.addContact = function(name) {
}; };
li = document.createElement("li"); li = document.createElement("li");
this.getContactPic(li, infos); $cs.avatars.get(infos.name, function(url) {
li.style.backgroundImage = "url('" + url + "')";
});
login = document.createElement("span"); login = document.createElement("span");
close = document.createElement("span"); close = document.createElement("span");
close.classList.add("remove"); close.classList.add("remove");

View file

@ -1,6 +1,6 @@
{ {
"name": "Chromesoul", "name": "Chromesoul",
"version": "0.4.2", "version": "0.4.3",
"minimum_chrome_version": "24", "minimum_chrome_version": "24",
"manifest_version": 2, "manifest_version": 2,
"offline_enabled": false, "offline_enabled": false,
@ -17,6 +17,7 @@
"http://www.epitech.eu/intra/photos/", "http://www.epitech.eu/intra/photos/",
"background", "background",
"storage", "storage",
"notifications",
{"socket": ["tcp-connect:ns-server.epita.fr:4242"]} {"socket": ["tcp-connect:ns-server.epita.fr:4242"]}
] ]
} }

View file

@ -3,7 +3,8 @@ var chromesoul = (function() {
"opts": new OptionsManager(), "opts": new OptionsManager(),
"ui": new Nsui(), "ui": new Nsui(),
"contacts": new ContactList(), "contacts": new ContactList(),
"client": new NsClient() "client": new NsClient(),
"avatars": new AvatarManager()
}; };
return (window.chromesoul = window.$cs = chromesoul); return (window.chromesoul = window.$cs = chromesoul);