summaryrefslogtreecommitdiff
path: root/bPod/com/keywords
diff options
context:
space:
mode:
Diffstat (limited to 'bPod/com/keywords')
-rw-r--r--bPod/com/keywords/KeywordButton.as95
-rw-r--r--bPod/com/keywords/KeywordScroller.as67
-rw-r--r--bPod/com/keywords/KeywordSelectionSystem.as85
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();
+ }
+
+
+};
+