diff -r c66260a734ca -r eb3c442cec50 src/js/model.js --- a/src/js/model.js Wed Aug 29 18:32:34 2012 +0200 +++ b/src/js/model.js Wed Aug 29 18:34:11 2012 +0200 @@ -86,6 +86,7 @@ Array.call(this); this.directory = _directory; this.idIndex = []; + this.__events = {}; if (typeof _directory == "undefined") { console.trace(); throw "Error : new IriSP.Model.List(directory): directory is undefined"; @@ -259,6 +260,20 @@ }); } +IriSP.Model.List.prototype.on = function(_event, _callback) { + if (typeof this.__events[_event] === "undefined") { + this.__events[_event] = []; + } + this.__events[_event].push(_callback); +} + +IriSP.Model.List.prototype.trigger = function(_event, _data) { + var _list = this; + IriSP._(this.__events[_event]).each(function(_callback) { + _callback.call(_list, _data); + }); +} + /* A simple time management object, that helps converting millisecs to seconds and strings, * without the clumsiness of the original Date object. */ @@ -383,6 +398,7 @@ this.id = _id; this.title = ""; this.description = ""; + this.__events = {} this.source.directory.addElement(this); } @@ -409,6 +425,20 @@ }); } +IriSP.Model.Element.prototype.on = function(_event, _callback) { + if (typeof this.__events[_event] === "undefined") { + this.__events[_event] = []; + } + this.__events[_event].push(_callback); +} + +IriSP.Model.Element.prototype.trigger = function(_event, _data) { + var _element = this; + IriSP._(this.__events[_event]).each(function(_callback) { + _callback.call(_element, _data); + }); +} + /* */ IriSP.Model.Media = function(_id, _source) {