/** * Abstract model class of the players MCV pattern, extended by all models. * * @author Jeroen Wijering * @version 1.3 **/ import com.jeroenwijering.players.*; class com.jeroenwijering.players.AbstractModel { /** a list of all registered views **/ private var registeredViews:Array; /** a reference to the controller **/ private var controller:AbstractController; /** reference to the config array **/ private var config:Object; /** reference to the feed array **/ private var feeder:Object; /** item that's currently playing **/ private var currentItem:Number; /** url of the item that's currently used by this model **/ private var currentURL:String; /** array with extensions used by a model **/ private var mediatypes:Array; /** boolean to check if a model is currently active **/ private var isActive:Boolean; /** Constructor. **/ function AbstractModel(vws:Array,ctr:AbstractController, cfg:Object,fed:Object) { registeredViews = vws; controller = ctr; config = cfg; feeder = fed; }; /** Receive changes from the PlayerController. **/ public function getChange(typ:String,prm:Number):Void { trace("model: "+typ+": "+prm); switch(typ) { case "item": setItem(prm); break; case "start": isActive == true ? setStart(prm): null; break; case "pause": isActive == true ? setPause(prm): null; break; case "stop": isActive == true ? setStop(): null; break; case "volume": setVolume(prm); break; default: trace("Model: incompatible change received"); break; } }; /** Set new item and check if the model should be the active one. **/ private function setItem(idx:Number) { currentItem = idx; var fnd:Boolean = false; for (var i=0; i