본문 바로가기

Mashup.OpenAPI

Daum blog Assistance on AIR

매쉬업 경진 대회에 이어 다음 Dev Day 를 갔다 왔습니다. 구현의 목적이 아니라, 여러 사람이 자신의 생각을 공유 할수 있는 장이 된거 같아서 좋았습니다. 푸짐한 아웃백 점심식사와, 푸짐한 경품들,, 코딩하는 동안 삽질만 한거 같지만 즐거운 토요일 이었습니다. 6월에 있을 Dev day 가 또 기다려 지네요.ㅎ  

오늘 다음 Dev Day 2008 에 가서 팀들과 함께 만든 다음 블로그 어플리케이션 입니다. 기존의 다음 블로그를 사용하시는 분이 브라우져를 거치지 않고 자신의 블로그의 정보를 메신져 형태로 알수 있게 해 주는 프로그램입니다. 싸이를 하시는 분이라면 네이트온 메신져의 "새글 알림이" 라고 생각하시면 되겠네요. 아직 구현 단계라 스샷과 메인 소스만 첨부 합니다.ㅎ
Flex ㅋㅋ 하면 할수록 매력 적인데, 쉽지 않네요;;; Flash 하던데로 하면 되겠지 하면서 진행했는데 곳곳에서 삽질 ...

5시간 동안 삽질만 한거 같습니다;; 

 

자신의 블로그 정보를 알려 줍니다. 댓글이 달렷을 경우 위와 같은 창으로 표시해 줍니다.

자신의 블로그에 Posting 하는 창 


 글을 읽어 보는 부분 

 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" width="420" height="541" xmlns:component="component.*" borderColor="#FBFBFB" themeColor="#F7F9FB" horizontalScrollPolicy="off" verticalScrollPolicy="off">
  3.         <mx:Script>
  4.                 <![CDATA[
  5.                 import mx.controls.List;
  6.                 import mx.events.FlexEvent;
  7.                 import mx.collections.ArrayCollection;
  8.                 import mx.containers.VBox;
  9.                 import mx.controls.Text;
  10.                 import mx.core.Container;       
  11.                 import flash.display.Sprite;
  12.                 import flash.events.Event;
  13.                 import data.db.SettingManager
  14.                 import blog.read.ReadList;
  15.                 import blog.read.ReadContents;
  16.                 import blog.read.ReadComment;
  17.                
  18.                 import mx.controls.Alert;
  19.                 import component.LoginPanel;
  20.                 import blog.write.WriteContents;
  21.                 import component.CompleteButton;
  22.                 import blog.login.BlogLogin;
  23.                 import com.adobe.air.notification.NotificationClickedEvent;
  24.                 import com.adobe.air.notification.Purr;
  25.                 import com.adobe.air.notification.AbstractNotification;
  26.                 import com.adobe.air.notification.Notification;
  27.                        
  28.                 public var resultList:XML;
  29.                 public var resultContents:XML;
  30.                 public var resultComments:XML;
  31.                        
  32.                 private var Postwrite:WriteContents = new WriteContents();
  33.                 private var settingManager:SettingManager;
  34.                
  35.                 public var tmpObj:Object;
  36.                 private const iconURL: String = "128_128.png";
  37.                 private var bmp: Bitmap = null;
  38.                 private var count:uint;
  39.                 private var timer:Timer;
  40.                 private var purr:Purr = new Purr(1);
  41.  
  42.                
  43.                 private function init():void
  44.                 {
  45.                         settingManager = new SettingManager();
  46.                        
  47.                         tmpObj = new Object();
  48.                        
  49.                                
  50.                         login_mc.addEventListener(MouseEvent.CLICK, onLoginhandler);
  51.                        
  52.                        
  53.        
  54.                
  55.                        
  56.                 }
  57.                 private function completeHandler(evt:Event):void{
  58.                                
  59.                                 bmp = Bitmap(Loader(evt.target.loader).content);
  60.                                 purr.setIcons([bmp.bitmapData], "This is tooltip");
  61.                                 var m: NativeMenu = new NativeMenu();
  62.                                 m.addItem(new NativeMenuItem('Show'));
  63.                                 m.addItem(new NativeMenuItem('Close'));
  64.                                 purr.setMenu(m);
  65.                                 showNoti("새글이 올라왔습니다.");
  66.                         }
  67.                        
  68.                         private function ioErrorHandler(evt:Event):void{
  69.                                
  70.                         }
  71.  
  72.                
  73.                         private function showNoti(str:String):void{
  74.                                 var icon:Bitmap = bmp;
  75.                                 purr.addTextNotificationByParams("DaumDesktop for DevDay", str, AbstractNotification.BOTTOM_RIGHT, 5, icon);
  76.                                
  77.                         }
  78.                
  79.                 private function onSendhandler(evt:MouseEvent):void
  80.                 {
  81.                         Postwrite.contentsWrite(post_mc.title_txt.text,post_mc.contents_txt.text,"tag");
  82.                
  83.                 }
  84.                 private function onLoginhandler(evt:MouseEvent):void
  85.                 {
  86.                         var popLogin:LoginPanel = new LoginPanel();
  87.                         popLogin.x = 90;
  88.                         popLogin.y = 100;
  89.                         addChild(popLogin);
  90.                        
  91.                 }
  92.                 public function onCompleteHandler(event : Event) : void {
  93.                                 var loader:Loader = new Loader();
  94.                                 loader.load(new URLRequest(iconURL));
  95.                                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
  96.                         loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  97.                            
  98.                         timer = new Timer(3000, 1);
  99.                                 timer.addEventListener(TimerEvent.TIMER,
  100.                                         function(e:TimerEvent):void{
  101.                                         purr.alert(NotificationType.INFORMATIONAL, NativeApplication.nativeApplication.activeWindow);
  102.                                         });
  103.                                
  104.                                
  105.                                 resultList = event.target.respond_list;
  106.                                 drawList();
  107.                                 event.target.removeEventListener(Event.COMPLETE, onCompleteHandler);
  108.                         }
  109.                        
  110.                         private function drawList():void{
  111.                                 var kItem:XML = new XML();
  112.                                 for(var i:int = 0;i < resultList.item.length();i++){                                   
  113.                                         var kVBox:VBox = new VBox();
  114.                                         kItem = resultList.item[i];
  115.                                         kVBox.label = kItem.date + " : " + kItem.title + " [" + kItem.commentCnt + "]";
  116.                                         kVBox.width = 400;
  117.                                         kVBox.name = kItem.link;
  118.                                         kVBox.addEventListener(FlexEvent.SHOW,viewPostHandler);                                        
  119.                                         listAccordion.addChild(kVBox);
  120.                                        
  121.                                         if(i == 0){
  122.                                                 getPost(kItem.link);
  123.                                         }                                      
  124.                                 }                                                              
  125.                         }
  126.                        
  127.                         private function viewPostHandler(evt:FlexEvent):void{                          
  128.                                 getPost(evt.target.name);                              
  129.                         }
  130.                        
  131.                         private function getPost(_link:String):void{
  132.                                 if(tmpObj[_link]) return;
  133.                                
  134.                                 var rc:ReadContents = new ReadContents();
  135.                                 settingManager.loadData();     
  136.                                 rc.contentsread(settingManager.name, _link.split("/")[4]);
  137.                                 rc.addEventListener(Event.COMPLETE, onCompleteGetPostHandler);
  138.                                 //trace(_link);
  139.                                 tmpObj[_link] = true;                          
  140.                         }
  141.  
  142.                         private function onCompleteGetPostHandler(event : Event):void {
  143.                                 //trace(event.target.respond_contents);
  144.                                 resultContents = event.target.respond_contents;
  145.                                 var kText:Text = new Text();
  146.                                 kText.text = resultContents.elements('description');
  147.                                 listAccordion.selectedChild.addChild(kText);
  148.                                 event.target.removeEventListener(Event.COMPLETE, onCompleteGetPostHandler);
  149.                                 showNoti(kText.text);
  150.                         }
  151.                
  152.                        
  153.                 ]]>
  154.         </mx:Script>
  155.         <mx:TabNavigator id="tab_mc" x="10" y="34" width="400" height="500">
  156.                 <mx:Canvas id="read_mc" label="Post" width="100%" height="100%">
  157.                         <mx:Accordion id="listAccordion" x="10" y="10" width="379" height="446">
  158.                                
  159.                         </mx:Accordion>
  160.                
  161.                 </mx:Canvas>
  162.                
  163.                 <mx:Canvas id="write_mc" label="Write" width="100%" height="100%">
  164.                         <component:PostEditor id="post_mc"  x="10" y="9"/>
  165.                 </mx:Canvas>
  166.         </mx:TabNavigator>
  167.         <mx:Button id="login_mc" x="354" y="29" label="Login"/>
  168.         <mx:Label x="10" y="8" text="Daum bloger assistence on AIR" fontWeight="bold"/>
  169.        
  170. </mx:WindowedApplication>

 여러 사람이 단시간에 코딩한거라 지져분 하네요.ㅎ 우선은 메인 mxml 만 올림니다.ㅎ
코딩 뿐만 아니라, 여러 가지로 정말 도움이 되는 말씀을 해 주신 GS eshop 의 "오창훈" 님께 감사 인사 드리고 싶습니다. 꾸벅