diff options
Diffstat (limited to 'bPod/com/keywords')
| -rw-r--r-- | bPod/com/keywords/KeywordButton.as | 95 | ||||
| -rw-r--r-- | bPod/com/keywords/KeywordScroller.as | 67 | ||||
| -rw-r--r-- | bPod/com/keywords/KeywordSelectionSystem.as | 85 |
3 files changed, 247 insertions, 0 deletions
diff --git a/bPod/com/keywords/KeywordButton.as b/bPod/com/keywords/KeywordButton.as new file mode 100644 index 0000000..aec9648 --- /dev/null +++ b/bPod/com/keywords/KeywordButton.as @@ -0,0 +1,95 @@ +import com.oop.UIButton;
+import com.oop.SelectionSystem;
+import mx.utils.Delegate;
+
+import mx.transitions.easing.*;
+import mx.transitions.Tween;
+
+class com.keywords.KeywordButton extends UIButton
+{
+ private var title_mc:MovieClip;
+ private var desc_mc:MovieClip;
+ private var icon_mc:MovieClip;
+ private var bg_mc:MovieClip;
+ private var gridObj:Object;
+ private var shine_mc:MovieClip;
+ private var element_mc:MovieClip;
+ private var initialAlpha:Number = 60;
+ private var initialShine:Number = 30;
+ private var tint:Number;
+
+ public var elementSymbol:String;
+
+ private var installedX:Number = 0;
+ private var installedY:Number = 0;
+
+ public function KeywordButton() {}
+
+ public function init(_selectionSystem:SelectionSystem, _id:Number, _itemData:Object, _gridObj:Object ):Void {
+ gridObj = _gridObj;
+ super.init (_selectionSystem, _id, _itemData);
+ makeButton(itemData);
+ }
+
+ public function hashColor (_inStr:String):Number {
+ switch (_inStr) {
+ case "ivory": return (0xE0E0D8);
+ case "orange": return (0xFFD799);
+ case "yellow": return (0xFFF7A8);
+ case "green": return (0xDAF4B2);
+ case "blue": return (0xCCCCFF);
+ case "purple": return (0xDDB1FF);
+ case "pink": return (0xFFAECD);
+ case "plain": return (0xE6f0f0);
+ default: return (0xFFFFFF);
+ }
+ }
+
+
+ private function makeButton(_val:Object):Void {
+ icon_mc._alpha = initialAlpha;
+ shine_mc._alpha = initialShine;
+ title_mc.title_txt.text = _val.name.toLowerCase();
+
+ var c:String = _val.name.charAt(0); // b
+ var cc:String = _val.name.charAt(1); // u
+ var u:String = c.toUpperCase(); // B (if b)
+ var uu:String = cc.toLowerCase(); // u (if U)
+ var tmp:String = u.concat (uu); // Bu
+
+ element_mc.element_txt.text = tmp;
+
+ elementSymbol = tmp;
+
+
+ var tmpColor:Number = hashColor ( _val.color.toString() );
+ element_mc.element_txt.textColor = tmpColor; // &= 0x7F7F7F;
+ setPosition();
+ }
+
+ private function setPosition():Void {
+ _x = Math.round ( (gridObj.grid_x * _width) + (gridObj.horizSpace * gridObj.grid_x));
+ _y = Math.round ( ((gridObj.grid_y-1) * _height) + (gridObj.vertSpace * (gridObj.grid_y-1)));
+
+ installedX = _x;
+ installedY = _y;
+ }
+
+ private function handleRollOver():Void {
+ var tTween = new Tween(icon_mc, "_alpha", Regular.easeOut, icon_mc._alpha, 100, 1, true);
+ var shineTween = new Tween(shine_mc, "_alpha", Regular.easeOut, shine_mc._alpha, 0, .2, true);
+ }
+
+ private function handleRollOut():Void
+ {
+ if(visited) { var fadeVal:Number = initialAlpha; }
+ else { var fadeVal:Number = initialAlpha; }
+
+ var tTween = new Tween (icon_mc, "_alpha", Regular.easeOut, icon_mc._alpha, initialAlpha, 1, true);
+ var shineTween = new Tween (shine_mc, "_alpha", Regular.easeOut, shine_mc._alpha, initialShine, .2, true);
+ }
+
+ public function setSelected():Void
+ {
+ }
+}
\ No newline at end of file diff --git a/bPod/com/keywords/KeywordScroller.as b/bPod/com/keywords/KeywordScroller.as new file mode 100644 index 0000000..5bcda46 --- /dev/null +++ b/bPod/com/keywords/KeywordScroller.as @@ -0,0 +1,67 @@ +import com.oop.ScrollingMenuFrame; + +class com.keywords.KeywordScroller extends ScrollingMenuFrame +{ + var intRate:Number = 14; // scroller speed + var adornments:Number = 0 ; + + var tagArray:Array; + + public function doLoad(_dataArray:Array):Void { + holder_mc.attachMovie("KeywordSelectionSystem", "keywordTiles", 1000); + holder_mc["keywordTiles"].doInit(_dataArray, "KeywordButton"); + } + + public function insertAdornment():Void { + adornments++; + var adorn:MovieClip = holder_mc["keywordTiles"].attachMovie ("adornment", "adornment" + adornments , this.getNextHighestDepth()-adornments ); + _root.debug.text += "\nadorn: " + adorn; + adorn._y = _height; + } + + public function insertFeeds():Void { + holder_mc.attachMovie ("FeedSelectionSystem", "feeds", 2000); + holder_mc["feeds"]._y = _height; + holder_mc["feeds"].doInit ( buckyFeeds() , "KeywordButton"); + } + + public function insertTags(_inArray:Array):Void { + holder_mc.attachMovie ("KeywordSelectionSystem", "tags", 3000); + holder_mc["tags"]._y = _height; + holder_mc["tags"].doInit ( _inArray , "TagButton"); + } + + public function buckyFeeds():Array { + +// return []; + var feeds:Array = [ + {name:"bboing", color:"yellow", feed:"http://feeds.feedburner.com/boingboing/iBag" }, + {name:"drawn", color:"plain", feed:"http://drawn.ca/feed/" }, + {name:"daily rotn", color:"orange", feed:"http://feeds.dailyrotten.com/dailyrotten.rss" }, + + {name:"slashdot", color:"green", feed:"http://rss.slashdot.org/Slashdot/slashdot" }, + {name:"trailers", color:"blue", feed:"http://images.apple.com/trailers/rss/newtrailers.rss" }, + {name:"info", color:"yellow", feed:"http://feeds.infosthetics.com/infosthetics" }, + + {name:"reddit", color:"orange", feed:"http://reddit.com/.rss" }, + {name:"jerkcity", color:"yellow", feed:"http://www.jerkcity.com/jc.rss" }, + {name:"d.lic.us", color:"purple", feed:"http://del.icio.us/rss/" }, + + {name:"w4m", color:"pink", feed:"http://sfbay.craigslist.org/search/w4m?query=&minAsk=min&maxAsk=max&hasPic=1&format=rss" }, + {name:"m4m", color:"pink", feed:"http://sfbay.craigslist.org/search/m4m?query=&minAsk=min&maxAsk=max&hasPic=1&format=rss" }, + {name:"casual", color:"pink", feed:"http://sfbay.craigslist.org/search/cas?query=&minAsk=min&maxAsk=max&hasPic=1&format=rss" }, + + {name:"art farts", color:"ivory", feed:"http://www.asciiartfarts.com/farts.rss" } + + + + ]; + + + return (feeds); + + } + + + +};
\ No newline at end of file diff --git a/bPod/com/keywords/KeywordSelectionSystem.as b/bPod/com/keywords/KeywordSelectionSystem.as new file mode 100644 index 0000000..45183f4 --- /dev/null +++ b/bPod/com/keywords/KeywordSelectionSystem.as @@ -0,0 +1,85 @@ +import com.tubes.BuckyThreadTube; +import com.events.EventBroadcaster; +import com.oop.GridSelectionSystem; +import com.services.BuckyServices; + +class com.keywords.KeywordSelectionSystem extends GridSelectionSystem { + + private var tube:BuckyThreadTube; + private var cockblocker:Boolean = false; // to discourage crazy button clickage + private var lastClicked:Number; // failsafe for crazy button clickage + + private function doAction():Void { + if (!cockblocker) { + eraseExistingSpinners(); + lastClicked = currentSelection; + BuckyServices.setActiveKeyword ( selectedData() ); + EventBroadcaster.getInstance().addEventListener("threadListMade", this); + var tag_preamble:String; + if (selectedData().isTag) { + tag_preamble = "tag_"; + } else { + tag_preamble = ""; + } + tube = new BuckyThreadTube ( BuckyServices.threads + tag_preamble + selectedData().name); + startButtonSpinner(); + cockblocker = true; + } + } + + private function eraseExistingSpinners():Void { + for (var i:Number = 0 ; i < listItems.length ; i++) { + var t:MovieClip = listItems[i]; + t.element_mc._visible = true; + t.element_mc.element_txt.text = t.elementSymbol; + t["spinnerHolder"].removeMovieClip(); // kill if exists .. fail silently if not + } + EventBroadcaster.getInstance().removeEventListener("threadListMade", this); + } + + private function startButtonSpinner():Void { + var t:MovieClip = listItems[currentSelection]; + t.element_mc._visible = false; + t.createEmptyMovieClip ("spinnerHolder", t.getNextHighestDepth()); + t["spinnerHolder"].attachMovie ("Spinner", "spinner" , 100, {_x:40, _y:29, _width:27, _height:27}); + } + + + private function threadListMade (_evt:Object):Void { + eraseExistingSpinners(); + + if ((tube.articles.length != undefined) && (tube.articles.length != 0)) { + BuckyServices.threadsMC.doLoad( tube.articles, "ThreadButton" ); + EventBroadcaster.getInstance().broadcastEvent("switchToThreadsView", this); + BuckyServices.setActiveKeyword ( selectedData() ); + setCurrentSelection ( currentSelection ); + cockblocker = false; + } + + else if (tube.articles.length == 0) { + drawFrownyFace(); + cockblocker = false; + } + + else { trace ("sigh, some other weird scenario"); } + } + + + private function drawFrownyFace():Void { + listItems[lastClicked].element_mc.element_txt.text = listItems[lastClicked].elementSymbol = ":("; + } + + public function setSelection(_id:Number):Void { + + // overriding existing selection system's setSelection so tiles that get + // clicked do not killMouseEvents() -- the same tile can be clicked over and over. + + listItems[currentSelection].setUnselected(); + currentSelection = _id; + listItems[currentSelection].setSelected(); + doAction(); + } + + +}; + |
