adding an avatar manager
This commit is contained in:
parent
3d4a8a3052
commit
de8a0b2e37
5 changed files with 57 additions and 22 deletions
|
@ -23,6 +23,7 @@
|
|||
<div id="config-pannel">
|
||||
Login: <input type="text" id="login" 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>
|
||||
<button id="save">Save</button> <span id="status"></span>
|
||||
</div>
|
||||
|
@ -35,6 +36,7 @@
|
|||
<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="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/tab.nsui.js"></script>
|
||||
<script type="text/javascript" src="lib/contacts.nsui.js"></script>
|
||||
|
|
48
lib/avatars.js
Normal file
48
lib/avatars.js
Normal 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]);
|
||||
}
|
||||
};
|
|
@ -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) {
|
||||
var infos = {}, li = null, login = null, close = null;
|
||||
|
||||
|
@ -68,7 +49,9 @@ ContactList.prototype.addContact = function(name) {
|
|||
};
|
||||
|
||||
li = document.createElement("li");
|
||||
this.getContactPic(li, infos);
|
||||
$cs.avatars.get(infos.name, function(url) {
|
||||
li.style.backgroundImage = "url('" + url + "')";
|
||||
});
|
||||
login = document.createElement("span");
|
||||
close = document.createElement("span");
|
||||
close.classList.add("remove");
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Chromesoul",
|
||||
"version": "0.4.2",
|
||||
"version": "0.4.3",
|
||||
"minimum_chrome_version": "24",
|
||||
"manifest_version": 2,
|
||||
"offline_enabled": false,
|
||||
|
@ -17,6 +17,7 @@
|
|||
"http://www.epitech.eu/intra/photos/",
|
||||
"background",
|
||||
"storage",
|
||||
"notifications",
|
||||
{"socket": ["tcp-connect:ns-server.epita.fr:4242"]}
|
||||
]
|
||||
}
|
||||
|
|
3
start.js
3
start.js
|
@ -3,7 +3,8 @@ var chromesoul = (function() {
|
|||
"opts": new OptionsManager(),
|
||||
"ui": new Nsui(),
|
||||
"contacts": new ContactList(),
|
||||
"client": new NsClient()
|
||||
"client": new NsClient(),
|
||||
"avatars": new AvatarManager()
|
||||
};
|
||||
|
||||
return (window.chromesoul = window.$cs = chromesoul);
|
||||
|
|
Reference in a new issue