package com.spice.clove.plugin.rss.column.control { import com.adobe.xml.syndication.generic.RSS20Item; import com.adobe.xml.syndication.rss.RSS20; import com.spice.clove.events.CloveColumnEvent; import com.spice.clove.plugin.column.control.ColumnController; import com.spice.clove.plugin.rss.CloveRSSPlugin; import com.spice.clove.plugin.rss.column.control.render.RSSFeedItemRenderer; import com.spice.clove.plugin.rss.cue.LoadRSSCue; import com.spice.clove.plugin.rss.icon.RSSIcons; import com.spice.utils.EmbedUtil; import flash.xml.XMLDocument; public class RSSFeedColumnController extends ColumnController { //-------------------------------------------------------------------------- // // Public Variables // //-------------------------------------------------------------------------- [Bindable] [Setting] public var feed:String; [Bindable] [Setting] public var name:String; //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** */ public function RSSFeedColumnController() { super(new RSSFeedItemRenderer()); } //-------------------------------------------------------------------------- // // Protected Methods // //-------------------------------------------------------------------------- /** */ override protected function onColumnStartLoad(event:CloveColumnEvent):void { if(!this.feed || !this.pluginController) { Logger.log("Feed or plugin controller doesn't exist. Cannot load feeds!",this,LogType.NOTICE); } var cue:LoadRSSCue = new LoadRSSCue(this.feed,this.onComplete); this.setLoadCue(cue); CloveRSSPlugin(this.pluginController.plugin).call(cue); } /** */ //-------------------------------------------------------------------------- // // Private Methods // //-------------------------------------------------------------------------- /** */ private function onComplete(event:Event):void { Logger.log("onComplete()",this); event.target.removeEventListener(event.type,onComplete); var item:XMLDocument = new XMLDocument(event.target.data); /* var version:Number = new Number(item.xmlDecl.toString().match("version=\"(.*?)\"")[1]); if(version < 2) { this.parseRSS(new RSS10(),event.target.data); } else */ { this.parseRSS(new RSS20(),event.target.data); } } /** */ private function parseRSS(rss:*,data:*):void { /* try { */ rss.parse(data); /* }catch(e:Error) { //usually fked up xml Logger.log("RSSFeedColumn::ERROR ="+e); return; } */ var items:Array = rss.items; var im:Object; //if the rss image does not exist, then set the default RSS icon if(rss.image) { im = rss.image.url; } else { im = EmbedUtil.toImageByteArray(RSSIcons.RSS_ICON); } var tos:RSS20Item; RSSFeedItemRenderer(this.itemRenderer).rss = rss; RSSFeedItemRenderer(this.itemRenderer).icon = im; this.fillColumn(items); } } }