/** * Playlist view management of the players MCV pattern. * * @author Jeroen Wijering * @version 1.6 **/ import com.jeroenwijering.players.*; import com.jeroenwijering.utils.*; class com.jeroenwijering.players.PlaylistView extends AbstractView implements com.jeroenwijering.feeds.FeedListener { /** ImageLoader **/ private var thumbLoader:ImageLoader; /** Scroller instance **/ private var listScroller:Scroller; /** Position of the playlist **/ private var listRight:Boolean; /** Position of the playlist **/ private var listWidth:Number; /** number of items in the playlist **/ private var listLength:Number; /** Currently highlighted playlist item **/ private var currentItem:Number; /** Save the current time **/ private var currentTime:Number = -10; /** Constructor **/ function PlaylistView(ctr:AbstractController,cfg:Object,fed:Object) { super(ctr,cfg,fed); if(config["displaywidth"] < config["width"]) { listRight = true; listWidth = config["width"]-config["displaywidth"]-1; } else { listRight = false; listWidth = config["width"]; } setButtons(); Stage.addListener(this); feeder.addListener(this); }; /** OnLoad event handler; sets up the playlist sizes and colors. **/ private function setButtons() { var ref = this; var tgt = config["clip"].playlist; tgt.btn._visible = false; // iterate playlist and setup each button listLength = feeder.feed.length; for(var i=0; i:
"+ feeder.feed[i]["title"]; } else { tgt["btn"+i].txt.htmlText = "" + feeder.feed[i]["author"] + ":
" + feeder.feed[i]["title"]; } if(feeder.feed[i]["image"] != undefined) { tgt["btn"+i].txt._x += 60; tgt["btn"+i].txt._width -= 60; thumbLoader = new ImageLoader(tgt["btn"+i].img,"true",60,40); thumbLoader.loadImage(feeder.feed[i]["image"]); tgt["btn"+i].img.setMask(tgt["btn"+i].msk); } else { tgt["btn"+i].msk._height = 10; tgt["btn"+i].img._visible = tgt["btn"+i].msk._visible = false; } } else { tgt["btn"+i]._y = i*23; if(feeder.feed[i]["author"] == undefined) { tgt["btn"+i].txt.htmlText = feeder.feed[i]["title"]; } else { tgt["btn"+i].txt.htmlText = feeder.feed[i]["author"] + " - " + feeder.feed[i]["title"]; } tgt["btn"+i].msk._height = 10; tgt["btn"+i].img._visible = tgt["btn"+i].msk._visible = false; } tgt["btn"+i].txt.textColor = config["frontcolor"]; // set link icon if(feeder.feed[i]["link"] != undefined) { tgt["btn"+i].txt._width -= 20; tgt["btn"+i].icn._x = listWidth - 24; tgt["btn"+i].icn.onRollOver = function() { this._parent.col2.setRGB(ref.config["lightcolor"]); }; tgt["btn"+i].icn.onRollOut = function() { if(ref.currentItem == this._parent.getDepth()) { this._parent.col2.setRGB(ref.config["backcolor"]); } else { this._parent.col2.setRGB(ref.config["frontcolor"]); } }; tgt["btn"+i].icn.onPress = function() { ref.sendEvent("getlink",this._parent.getDepth()); }; } else { tgt["btn"+i].icn._visible = false; } } // setup mask and scrollbar if needed var msk = config["clip"].playlistmask; if(listRight == true) { msk._x = tgt._x = Number(config["displaywidth"]) + 1; msk._y = tgt._y = 0; msk._height = config["displayheight"]; } else { msk._y = tgt._y = Number(config["displayheight"]) + Number(config["controlbar"]) - 1; msk._height = Number(config["height"]) + 1 - Number(config["controlbar"])-Number(config["displayheight"]); } msk._width = listWidth; tgt.setMask(msk); if(tgt._height > msk._height + 2 && feeder.feed.length > 1) { if(config["autoscroll"] == "false") { msk._width -= 10; for(var i=0; i 5) { currentTime = elp; for (var i=0; i currentTime) { if(i != currentItem+1) { setItem(i-1); } break; } } } }; /** Hide the scrollbar on fullscreen **/ public function onFullScreen(fs:Boolean) { if(listScroller == undefined) { break; } else if(fs == true) { config["clip"].scrollbar._visible = false; } else { config["clip"].scrollbar._visible = true; } }; /** Render a new playlist when the feed updates **/ public function onFeedUpdate() { var tgt = config["clip"].playlist; for(var i=0; i<99; i++) { tgt["btn"+i].removeMovieClip(); } listScroller.purgeScrollbar(); setButtons(); setItem(currentItem); }; }