diff --git a/PopMenu1.as b/PopMenu1.as index da8e1e9b..bcc8cc15 100644 --- a/PopMenu1.as +++ b/PopMenu1.as @@ -35,7 +35,7 @@ package staticStageHeight = applicationStageSize ; } - public static function popUp(title:String='' , type:PopMenuTypes=null , content:PopMenuContent=null,closeOnTime:uint=0,onButtonSelects:Function = null,onClosedByTimer:Function=null,onClose:Function=null) + public static function popUp(title:String='' , type:PopMenuTypes=null , content:PopMenuContent=null,closeOnTime:uint=0,onButtonSelects:Function = null,onClosedByTimer:Function=null,onClose:Function=null):void { //SaffronLogger.log('POP 1 MENU OPENED '+Math.random()); //ME1.popUp2(title, type, content,closeOnTime,onButtonSelects); @@ -89,7 +89,7 @@ package { return ME1.popDispatcher ; } - public static function close() + public static function close():void { if(ME1) { diff --git a/PopMenu2.as b/PopMenu2.as index 56b29deb..b5e4ec43 100644 --- a/PopMenu2.as +++ b/PopMenu2.as @@ -15,7 +15,7 @@ ME2 = this; } - public static function popUp(title:String='' , type:PopMenuTypes=null , content:PopMenuContent=null,closeOnTime:uint=0,onButtonSelects:Function = null) + public static function popUp(title:String='' , type:PopMenuTypes=null , content:PopMenuContent=null,closeOnTime:uint=0,onButtonSelects:Function = null):void { //SaffronLogger.log('POP 2 MENU OPENED '+Math.random()); ME2.popUp2(title, type, content,closeOnTime,onButtonSelects); @@ -25,7 +25,7 @@ { return ME2.popDispatcher ; } - public static function close() + public static function close():void { if(ME2) ME2.close(); diff --git a/README.md b/README.md index bfb50584..34230840 100644 --- a/README.md +++ b/README.md @@ -13,19 +13,21 @@ SaffronCode is a collection of codes & libraries for producing powerful and flex ## You can be an app developer by using Adobe Animate & SaffronCode SDK -• You do not need programming knowledge to be a software developer, you can build a variety of software and brochures without having to write a line of code. You can easily prepare graphical and animated pages in Adobe Animate’s graphic environment for the production of mobile software. -• To use the extensive and diverse libraries in this set, you should only be familiar with Ecma Script 6 or Action Script so you can add calendars, lists, dynamic images and ... to your software. With a higher level of software knowledge, you can easily create a variety of software that connects to a lot of different web services without any hassle of managing Internet access and cache storage. +• You do not need programming knowledge to be a software developer, you can build a variety of software and brochures without having to write a line of code. You can easily prepare graphical and animated pages in Adobe Animate’s graphic environment for the production of mobile software.
+• To use the extensive and diverse libraries in this set, you should only be familiar with Ecma Script 6 or Action Script so you can add calendars, lists, dynamic images and ... to your software. With a higher level of software knowledge, you can easily create a variety of software that connects to a lot of different web services without any hassle of managing Internet access and cache storage.
• Do not worry about managing hardware resources. SaffronCode will optimize your software code to run on mobile devices by using GPU resources. ## How To Start? SaffronCode is adding to the Adobe Animate environment to build mobile applications output. To get ready the environment, follow these steps: -• Install the appropriate version of Adobe Animate -• Download SaffronCode SDK -• ASPack (Collection of key libraries) -• Flex and other general swc libraries (if you need soap web services) -• Download the latest version of the Air SDK -• JDK +• Install the appropriate version of Adobe Animate
+• Download SaffronCode SDK
+• Download our ASPack libraries to. you need these libraries to be able to use all features on SaffronCode.
+• Download ASPack
+• Flex and other general swc libraries (if you need soap web services)
+• Download the latest version of the Air SDK
+• JDK
+• Download the sample project here
## Contact Us diff --git a/SaffronLogger.as b/SaffronLogger.as index 02ece41d..7a326dc1 100644 --- a/SaffronLogger.as +++ b/SaffronLogger.as @@ -120,7 +120,7 @@ package trace("Log file located on "+todayFile.nativePath); todayFileStream = new FileStream(); todayFileStream.openAsync(todayFile,FileMode.WRITE); - todayFileStream.writeShort(-2); + // todayFileStream.writeShort(-2); } } diff --git a/animation/Anim_alpha_shine.as b/animation/Anim_alpha_shine.as index 7d49a6e6..81efa638 100644 --- a/animation/Anim_alpha_shine.as +++ b/animation/Anim_alpha_shine.as @@ -10,9 +10,11 @@ import flash.events.EventDispatcher; public class Anim_alpha_shine extends Sprite{ - var object:Object ; + private var object:Object ; - var I:Number ; + private var I:Number ; + + private var _paused:Boolean = false ; public function Anim_alpha_shine(displayObject:Object) { this.addEventListener(Event.ENTER_FRAME,animate); @@ -37,8 +39,19 @@ public class Anim_alpha_shine extends Sprite{ object.alpha = 1 ; } + public function pauseShine():void + { + _paused = true ; + } + + public function playShine():void + { + _paused = false ; + } + private function animate(e:Event):void { + if(_paused)return; object.alpha = 1-(Math.cos(I)+1)/4 ; I+=0.1; } diff --git a/appManager/animatedPages/Intro.as b/appManager/animatedPages/Intro.as index d90f2f58..9873151e 100644 --- a/appManager/animatedPages/Intro.as +++ b/appManager/animatedPages/Intro.as @@ -2,6 +2,8 @@ package appManager.animatedPages {//appManager.animatedPages.Intro import flash.display.MovieClip; import flash.events.Event; + import stageManager.StageManager; + import contents.alert.Alert; [Event(name="imFinished", type="flash.events.Event")] public class Intro extends MovieClip @@ -13,12 +15,22 @@ package appManager.animatedPages stop(); this.addFrameScript(this.totalFrames-1,introIsOver); + this.addFrameScript(Math.ceil((this.totalFrames/3)*2),controlStage); } - private function introIsOver() + private function introIsOver():void { this.stop(); this.dispatchEvent(new Event(EVENT_FINISHED)); + controlStage(); + } + + private function controlStage():void + { + if(StageManager.isSatUp()) + { + StageManager.controllStageSizes(null,false,true); + } } } } \ No newline at end of file diff --git a/appManager/animatedPages/MainAnim.as b/appManager/animatedPages/MainAnim.as index faca401c..b66dff24 100644 --- a/appManager/animatedPages/MainAnim.as +++ b/appManager/animatedPages/MainAnim.as @@ -39,7 +39,7 @@ package appManager.animatedPages } /**animate the frames*/ - private function anim(e:Event,instantMove:Boolean=false) + private function anim(e:Event,instantMove:Boolean=false):void { if(App.skipAnimations || instantMove) { @@ -67,7 +67,7 @@ package appManager.animatedPages } /**take main animation to home frame*/ - public function goHome() + public function goHome():void { currentPage = frame_home ; eventDispatched = false ; @@ -75,7 +75,7 @@ package appManager.animatedPages /**take main menu animation to internal pages frame , it will dispatch app event after animation gone to currect frame
* if you pass true, it will show the page instantly*/ - public function goInternalPage(instantMove:Boolean=false) + public function goInternalPage(instantMove:Boolean=false):void { currentPage = frame_internal ; eventDispatched = false ; diff --git a/appManager/animatedPages/Shiner.as b/appManager/animatedPages/Shiner.as index 7d49399a..b9e183c4 100644 --- a/appManager/animatedPages/Shiner.as +++ b/appManager/animatedPages/Shiner.as @@ -21,7 +21,7 @@ /**Update shine positions and animation*/ protected function updateShines(event:Event):void { - for(var i = 0 ; i< position had bug, if you set it true, the scroll will lock anyway - scrollerMC = new ScrollMT(currentPage,AppWithContent.contentRect,targetArea,autoSizeDetector,false/*autoSizeDetector*/,currentPageData.scrollEffect,false); + scrollerMC = new ScrollMT(currentPage,Contents.config.pageRectXY0,targetArea,autoSizeDetector,false/*autoSizeDetector*/,currentPageData.scrollEffect,false); } if(myEvent is AppEventContent) diff --git a/appManager/animatedPages/pageManager/PageManager.as b/appManager/animatedPages/pageManager/PageManager.as index 41d8eccb..79eacc58 100644 --- a/appManager/animatedPages/pageManager/PageManager.as +++ b/appManager/animatedPages/pageManager/PageManager.as @@ -49,7 +49,7 @@ package appManager.animatedPages.pageManager } /**change the page event*/ - public function setUp(newEvent:AppEvent) + public function setUp(newEvent:AppEvent):void { toEvent = newEvent ; } diff --git a/appManager/animatedPages/pageManager/TitleManager.as b/appManager/animatedPages/pageManager/TitleManager.as index afb498af..2ee6d46d 100644 --- a/appManager/animatedPages/pageManager/TitleManager.as +++ b/appManager/animatedPages/pageManager/TitleManager.as @@ -49,7 +49,7 @@ } /**change the page event*/ - public function setUp(newEvent:AppEvent,forceToRefresh:Boolean=false) + public function setUp(newEvent:AppEvent,forceToRefresh:Boolean=false):void { if(toEvent!=null) { @@ -113,6 +113,7 @@ /**Set the title both for parags and titletexts*/ public function setTitle(text:String):void { + this.visible = text!=''; if(myTitle!=null) { if(myTitle.text != text) diff --git a/appManager/displayContentElemets/Image.as b/appManager/displayContentElemets/Image.as index 3cc78565..8e901f88 100644 --- a/appManager/displayContentElemets/Image.as +++ b/appManager/displayContentElemets/Image.as @@ -26,7 +26,7 @@ package appManager.displayContentElemets this.dispatchEvent(new ImageEvent(ImageEvent.IMAGE_SELECTED,URL)); } - public function setUp(imageURL:String,loadInThisArea:Boolean = false ,imageW:Number=0,imageH:Number=0,X:Number=0,Y:Number=0,keepRatio:Boolean=true) + public function setUp(imageURL:String,loadInThisArea:Boolean = false ,imageW:Number=0,imageH:Number=0,X:Number=0,Y:Number=0,keepRatio:Boolean=true):void { } } diff --git a/appManager/displayContentElemets/LightImage.as b/appManager/displayContentElemets/LightImage.as index 77824cff..4939fe59 100644 --- a/appManager/displayContentElemets/LightImage.as +++ b/appManager/displayContentElemets/LightImage.as @@ -168,7 +168,7 @@ } /**Second setting up the LightImage class*/ - public function setUp2(doAnimation:Boolean = true) + public function setUp2(doAnimation:Boolean = true):void { animated = doAnimation ; } @@ -229,7 +229,7 @@ /**This class will resize the loaded image to its size to prevent gpu process and also it will crop the image to.
* pass -1 for each dimention to make the original value to use on that side*/ - override public function setUp(imageURL:String, loadInThisArea:Boolean=false, imageW:Number=0, imageH:Number=0, X:Number=0, Y:Number=0,keepRatio:Boolean=true):* + override public function setUp(imageURL:String, loadInThisArea:Boolean=false, imageW:Number=0, imageH:Number=0, X:Number=0, Y:Number=0,keepRatio:Boolean=true):void { //PerformanceTest.traceDelay(1); //SaffronLogger.log("Load this image : "+imageURL); diff --git a/appManager/displayContentElemets/TitleText.as b/appManager/displayContentElemets/TitleText.as index bf037e3b..15d725df 100644 --- a/appManager/displayContentElemets/TitleText.as +++ b/appManager/displayContentElemets/TitleText.as @@ -32,7 +32,7 @@ package appManager.displayContentElemets myText.text = ''; } - public function setUp(title:String,arabicText:Boolean = true,splitIfToLong:Boolean=false,resolution:uint=0,replaceWithBitmap:Boolean=true,dynamicWidth:Boolean=false) + public function setUp(title:String,arabicText:Boolean = true,splitIfToLong:Boolean=false,resolution:uint=0,replaceWithBitmap:Boolean=true,dynamicWidth:Boolean=false):void { this.title = title; this.arabicText = arabicText ; @@ -49,7 +49,7 @@ package appManager.displayContentElemets TextPutter.OnButton(myText,title,arabicText,replaceWithBitmap,true,false,resolution,splitIfToLong,dynamicWidth); } /**setup and split text by any car*/ - public function setUp2(title:String,arabicText:Boolean = true,splitIfToLong:Boolean=false,resolution:uint=0,replaceWithBitmap:Boolean=true,splitRange_p:int=0,car_p:String=',',direction_p:String=TitleText.RIGHT,reverse_p:Boolean=false) + public function setUp2(title:String,arabicText:Boolean = true,splitIfToLong:Boolean=false,resolution:uint=0,replaceWithBitmap:Boolean=true,splitRange_p:int=0,car_p:String=',',direction_p:String=TitleText.RIGHT,reverse_p:Boolean=false):void { if(splitRange_p>0) { diff --git a/appManager/displayContentElemets/VersionTracer.as b/appManager/displayContentElemets/VersionTracer.as index cbee477b..27a10f0a 100644 --- a/appManager/displayContentElemets/VersionTracer.as +++ b/appManager/displayContentElemets/VersionTracer.as @@ -31,7 +31,7 @@ package appManager.displayContentElemets { if(this.stage!=null) { - intervalId = setInterval(updateVersionLabel,2000); + intervalId = setInterval(updateVersionLabel,10000); this.addEventListener(Event.REMOVED_FROM_STAGE,unLoad); } else diff --git a/appManager/displayObjects/SwitchButtonAnimated.as b/appManager/displayObjects/SwitchButtonAnimated.as index 1984c8d0..808100c4 100644 --- a/appManager/displayObjects/SwitchButtonAnimated.as +++ b/appManager/displayObjects/SwitchButtonAnimated.as @@ -11,6 +11,8 @@ { private var _status:Boolean = false ; + private var onChangeFunction:Function ; + public function SwitchButtonAnimated(status:Boolean = false) { _status = status ; @@ -23,6 +25,11 @@ this.addEventListener(Event.REMOVED_FROM_STAGE,unLoad); } + public function onChanged(func:Function):void + { + onChangeFunction = func ; + } + private function unLoad(e:Event):void { this.removeEventListener(MouseEvent.MOUSE_DOWN,switchMe); @@ -35,6 +42,7 @@ _status = !_status ; this.dispatchEvent(new Event(Event.CHANGE)); SaffronLogger.log(_status); + if(onChangeFunction!=null)onChangeFunction(); } public function get status():Boolean @@ -50,6 +58,13 @@ } } + public function setInstantStaut(status:Boolean):void + { + _status = status; + if(status)this.gotoAndStop(this.totalFrames); + else this.gotoAndStop(1); + } + private function anim(event:Event):void { if(_status) diff --git a/appManager/event/PageControllEvent.as b/appManager/event/PageControllEvent.as index c6b3d296..1bb4af59 100644 --- a/appManager/event/PageControllEvent.as +++ b/appManager/event/PageControllEvent.as @@ -23,14 +23,17 @@ package appManager.event public var preventerPage:DisplayObject ; public var let_cashed_requested_page_activate:Boolean = true ; + + public var ignorelastCalledPage:Boolean = false ; /**Feel the getPermition and preventerDisplayObject on PREVENT_PAGE_CHANGING event*/ - public function PageControllEvent(type:String,getPermition:Function=null,preventerDisplayObject:DisplayObject=null,let_requested_page_to_open:Boolean=true) + public function PageControllEvent(type:String,getPermition:Function=null,preventerDisplayObject:DisplayObject=null,let_requested_page_to_open:Boolean=true,ignorelastCalledPage:Boolean=false) { super(type,true); let_cashed_requested_page_activate = let_requested_page_to_open; permitionReceiver = getPermition ; preventerPage = preventerDisplayObject ; + this.ignorelastCalledPage = ignorelastCalledPage ; } } } \ No newline at end of file diff --git a/appManager/mains/App.as b/appManager/mains/App.as index 1e60411e..b26a0089 100644 --- a/appManager/mains/App.as +++ b/appManager/mains/App.as @@ -78,9 +78,9 @@ ME.dispatchEvent(new AppEventContent(link,false,forceToRefreshPage)); } - public static function changePageByLink(pageLink:LinkData):void + public static function changePageByLink(pageLink:LinkData,forceToReload:Boolean=false):void { - ME.dispatchEvent(new AppEventContent(pageLink)); + ME.dispatchEvent(new AppEventContent(pageLink,false,forceToReload)); } //replaced with TitleManager.ME @@ -299,7 +299,7 @@ /**this function will dispatches whenever intro is over*/ - protected function intoIsOver(e=null):void + protected function intoIsOver(e:*=null):void { introMC.removeEventListener(Intro.EVENT_FINISHED,intoIsOver); Obj.remove(introMC); @@ -381,6 +381,10 @@ { ContentSoundManager.changeMainMusic((event as AppEventContent).pageData.musicURL,(event as AppEventContent).pageData.musicVolume); } + else + { + ContentSoundManager.changeVolume((event as AppEventContent).pageData.musicVolume); + } if(mainAnim == null) diff --git a/appManager/mains/AppWithContent.as b/appManager/mains/AppWithContent.as index b87abdf3..d4211407 100644 --- a/appManager/mains/AppWithContent.as +++ b/appManager/mains/AppWithContent.as @@ -61,6 +61,8 @@ import flash.display.DisplayObjectContainer; import com.mteamapp.BlackStageDebugger; import nativeClasses.distriqtApplication.DistriqtApplication; + import flash.net.URLLoader; + import flash.events.IOErrorEvent; public class AppWithContent extends App { @@ -68,6 +70,8 @@ private static var _contentRect:Rectangle = new Rectangle() ; private static var ME:AppWithContent ; + + private static var showTheOptionalUpateWarning:Boolean = true ; /**Preventor variables*/ private var preventorFunction:Function, @@ -87,6 +91,8 @@ /**StageMask is using to cover the bottom of the page, when a keboard moves stage to up */ private var stageMask:Sprite ; + + private var pageLoggerRequest:URLRequest,pageLoggerLoader:URLLoader; /**This is the contentManager rectangle size. it will generate from the content w and h on the home xml tag*/ public static function get contentRect():Rectangle @@ -117,7 +123,7 @@ //Solving Back button on Android 28 DistriqtApplication.solveBackButton(); - stage.addEventListener(MouseEvent.MOUSE_DOWN, function(e):*{ + stage.addEventListener(MouseEvent.MOUSE_DOWN, function(e:*):*{ mouseClickCounter++; }) @@ -197,7 +203,7 @@ NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, URICalled); } - NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE,function(e){ + NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE,function(e:*):void{ SliderManager.hide(true); }) if(!DevicePrefrence.isAndroid() && appDescriptorString.indexOf("NSAllowsArbitraryLoads")==-1) @@ -366,7 +372,7 @@ } prventedPageWasLastPage = false ; - if(preventedEventCash!=null) + if(preventedEventCash!=null && !event.ignorelastCalledPage) { SaffronLogger.log("Prevented page event is released"); managePages(preventedEventCash); @@ -459,6 +465,13 @@ { SaffronLogger.log("History changed"); History.pushHistory((event as AppEventContent).linkData); + + + } + + if(event2!=null) + { + logPageChange(event2.myID); } if((!DevicePrefrence.isItPC) && mouseClickCounter>0) @@ -469,6 +482,26 @@ return duplicatePageController ; } + + /**Save teh page ID to Analytic server */ + private function logPageChange(pageId:String):void + { + //GOODBY Saffron Logger... we will miss you + // if(pageLoggerRequest==null) + // { + // pageLoggerRequest = new URLRequest(Contents.config.version_controll_url); + // pageLoggerRequest.contentType = 'application/json'; + // pageLoggerRequest.method = URLRequestMethod.POST ; + // } + // pageLoggerRequest.data = JSON.stringify({AppId:DevicePrefrence.appID,PageName:pageId,Enter:true}) ; + // if(pageLoggerLoader==null) + // { + // pageLoggerLoader = new URLLoader(); + // pageLoggerLoader.addEventListener(IOErrorEvent.IO_ERROR,function():void{}) + // } + // pageLoggerLoader.load(pageLoggerRequest); + + } /**Contents are load now*/ protected function startApp():void @@ -477,16 +510,28 @@ playIntro(); if(!(skipAnimations || Contents.config.skipAnimations)) { - var versionContrllURL:String = Contents.config.version_controll_url ; - SaffronLogger.log("Version controll : "+versionContrllURL); - var versionRequest:URLRequest = new URLRequest(versionContrllURL); - versionRequest.contentType = 'application/json'; - versionRequest.method = URLRequestMethod.POST ; - versionRequest.data = JSON.stringify({AppId:DevicePrefrence.appID}) ; - - VersionController.controllVersion(currentVersionIsOk,stopThisVersion,versionRequest,DevicePrefrence.appVersion,true); + controlCurrentVersion(); } } + + public static function checkVersion():void + { + showTheOptionalUpateWarning = true ; + ME.controlCurrentVersion(true); + } + + private function controlCurrentVersion(useOfflineVersion:Boolean=false):void + { + //GOODBY Saffron analytics, we will miss you + // var versionContrllURL:String = Contents.config.version_controll_url ; + // SaffronLogger.log("Version controll : "+versionContrllURL); + // var versionRequest:URLRequest = new URLRequest(versionContrllURL); + // versionRequest.contentType = 'application/json'; + // versionRequest.method = URLRequestMethod.POST ; + // versionRequest.data = JSON.stringify({AppId:DevicePrefrence.appID}) ; + + // VersionController.controllVersion(currentVersionIsOk,stopThisVersion,versionRequest,DevicePrefrence.appVersion,true,useOfflineVersion); + } /**The application version is ok*/ private function currentVersionIsOk():void @@ -508,29 +553,28 @@ } /**The application is expired*/ - private function stopThisVersion(theHint:String,appURL:String):void + private function stopThisVersion(theHint:String,appURL:String,forceToUpdate:Boolean=true):void { - if(isExpired(theHint,appURL)) + if(forceToUpdate) { + Alert.show(theHint.replace("ID","ID ("+DevicePrefrence.appID+")")); SaffronLogger.log("Switch to the download url instantly"); resetIntro(); stage.removeEventListener(MouseEvent.CLICK,openDownloadLink); stage.addEventListener(MouseEvent.CLICK,openDownloadLink); setTimeout(openDownloadLink,3000); } + else if(showTheOptionalUpateWarning) + { + Alert.show(theHint.replace("ID","ID ("+DevicePrefrence.appID+")")); + showTheOptionalUpateWarning = false ; + setTimeout(openDownloadLink,3000); + } } private function openDownloadLink(event:MouseEvent=null):void { navigateToURL(new URLRequest(VersionController.appStoreURL)); } - - - /**Returns true if there is no listener on this function, so the application have to redirect to the server*/ - protected function isExpired(hint:String,link:String):Boolean - { - Alert.show(hint.replace("ID","ID ("+DevicePrefrence.appID+")")); - return true ; - } } } \ No newline at end of file diff --git a/contents/Config.as b/contents/Config.as index f5922e5b..b822c17a 100644 --- a/contents/Config.as +++ b/contents/Config.as @@ -116,7 +116,7 @@ var loadedXMLString:String = TextFile.load(File.applicationDirectory.resolvePath(configURLFile)); var xml:XML = XML(loadedXMLString); - for(var i = 0 ; i * if your application is supporting multilanguages, you have to use language.xml standart near the content.xml file. and also * you have to set application stage here for the Language class to help it to find added elements to stage.*/ - public static function setUp(OnLoaded:Function=null,supportsMultiLanguage:Boolean=false,autoConvertFontsAndContentTextsByLanguage:Boolean=true,stage:Stage=null,loadConfigFile:Boolean=false) + public static function setUp(OnLoaded:Function=null,supportsMultiLanguage:Boolean=false,autoConvertFontsAndContentTextsByLanguage:Boolean=true,stage:Stage=null,loadConfigFile:Boolean=false):void { onLoaded = OnLoaded ; @@ -121,7 +118,7 @@ } /**This function will controll the langEnabled, so be sure that you are calling it after langEnabled set*/ - private static function loadLang() + private static function loadLang():void { if(langEnabled) { @@ -135,7 +132,7 @@ } /**Load the xml file now*/ - private static function loadXML() + private static function loadXML():void { //SaffronLogger.log("1. debug time : "+getTimer()); /*var fileLoader:FileStream = new FileStream(); @@ -148,7 +145,7 @@ } /**xml file loaded*/ - private static function xmlLoaded(e:Event,myInstantData:String='') + private static function xmlLoaded(e:Event,myInstantData:String=''):void { if(myInstantData!='') { @@ -163,7 +160,7 @@ //Dynamic pages will lost in this mode pages = new Vector.(); - for(var i = 0 ; i(); - for(var i = 0 ; i*/ public function export():XML { - var xml = XML(''); + var xml:XML = XML(''); xml.@id = id; xml.music = musicURL ; @@ -256,7 +256,7 @@ package contents //var link1Node:XML = XML(''); //xml.links = new XML(); - for(var i = 0 ; i=0 ; i--) + for(var i:* = l-1 ; i>=0 ; i--) { if(asyncQue[i].id == id) { diff --git a/diagrams/calender/CalenderConstants.as b/diagrams/calender/CalenderConstants.as index 1a09b983..0d3e3da9 100644 --- a/diagrams/calender/CalenderConstants.as +++ b/diagrams/calender/CalenderConstants.as @@ -32,6 +32,11 @@ package diagrams.calender public static var dayNames:Array = [d0,d1,d2,d3,d4,d5,d6]; + + public static function getDayNameFarsi(date:Date):String + { + return dayNames[(date.day+1)%7]; + } public static var dayNames2:Vector. = new Vector.(); dayNames2.push(dd0,dd1,dd2,dd3,dd4,dd5,dd6); diff --git a/diagrams/calender/MyShamsi.as b/diagrams/calender/MyShamsi.as index 07d70737..e462c970 100644 --- a/diagrams/calender/MyShamsi.as +++ b/diagrams/calender/MyShamsi.as @@ -220,7 +220,7 @@ return mounthName; } - public function toString(e = null):String + public function toString(e:* = null):String { return fullYear + '/' + (month + 1) + '/' + date + ' ' + hours + ':' + minutes + ':' + seconds; } diff --git a/drawPad/Paper.as b/drawPad/Paper.as index 5bd84d42..1041336d 100644 --- a/drawPad/Paper.as +++ b/drawPad/Paper.as @@ -130,7 +130,7 @@ this.addEventListener(Event.REMOVED_FROM_STAGE,unLoad); } - private function unLoad(event:Event) + private function unLoad(event:Event):void { this.removeEventListener(Event.ENTER_FRAME,drawLines); this.removeEventListener(Event.REMOVED_FROM_STAGE,unLoad); @@ -163,11 +163,11 @@ } - private function drawLines(ev:Event=null) + private function drawLines(ev:Event=null):void { if(draw) { - for(var i = 0 ; i, + markerItemsList:Vector. = new Vector.(), myIcons:Vector.; private var mapCretedOnStage:Boolean; @@ -96,12 +81,13 @@ public static function setUp(GoogleAPIKey:String=null,DistriqtId:String=null):void { //SaffronLogger.log('*********GoogleAPIKey*******'+GoogleAPIKey); - + if(isSupports==true)return; try { - AuthorisationStatusClass = getDefinitionByName("com.distriqt.extension.nativemaps.AuthorisationStatus") as Class ; - NativeMapsClass = NativeMaps;//getDefinitionByName("com.distriqt.extension.nativemaps.NativeMaps") as Class ; + AuthorisationStatusClass = getDefinitionByName("com.distriqt.extension.application.AuthorisationStatus") as Class ; + NativeMapsClass = getDefinitionByName("com.distriqt.extension.nativemaps.NativeMaps") as Class ; NativeMapEventClass = getDefinitionByName("com.distriqt.extension.nativemaps.events.NativeMapEvent") as Class ; + NativeMapBitmapEventClass = getDefinitionByName("com.distriqt.extension.nativemaps.events.NativeMapBitmapEvent") as Class ; CustomMarkerIconClass = getDefinitionByName("com.distriqt.extension.nativemaps.objects.CustomMarkerIcon") as Class ; LatLngClass = getDefinitionByName("com.distriqt.extension.nativemaps.objects.LatLng") as Class ; MapMarkerClass = getDefinitionByName("com.distriqt.extension.nativemaps.objects.MapMarker") as Class ; @@ -173,6 +159,7 @@ { counter++; super(); + setUp(); dispatcher.dispatchEvent(new Event(Event.REMOVED_FROM_STAGE)); unload(); @@ -185,6 +172,23 @@ this.addEventListener(Event.REMOVED_FROM_STAGE,unload); dispatcher.addEventListener(Event.REMOVED_FROM_STAGE,removeMeBecauseSomeOneElseComes); } + + override public function set visible(value:Boolean):void + { + super.visible = value ; + + try + { + if(value) + (NativeMapsClass as Object).service.showMap(); + else + (NativeMapsClass as Object).service.hideMap(); + } + catch(e:Error) + { + trace(e.message); + } + } protected function removeMeBecauseSomeOneElseComes(event:Event):void { @@ -198,6 +202,8 @@ public function setMap(centerLat:Number=NaN,centerLon:Number=NaN,icons:Vector.=null,zoomLevel:Number=-1,mapStyleJSON:String=null,showUserLocation:Boolean=false):void { + if(!isSupports) + return; map_style = mapStyleJSON ; user_location = showUserLocation ; //unload(); @@ -240,37 +246,59 @@ firstZoomLevel = zoomLevel<0?defaultZoomLevel:zoomLevel ; SaffronLogger.log("...listenning..."); (NativeMapsClass as Object).service.addEventListener( (NativeMapEventClass as Object).MAP_CREATED, mapCreatedHandler ); - (NativeMapsClass as Object).service.addEventListener( NativeMapBitmapEvent.READY , updateCapturedBitmap); + (NativeMapsClass as Object).service.addEventListener( (NativeMapBitmapEventClass as Object).READY , updateCapturedBitmap); + (NativeMapsClass as Object).service.addEventListener((NativeMapEventClass as Object).MARKER_TOUCHED,getTouchedItem); SaffronLogger.log("---Creating..."); - NativeMaps.service.createMap( rect, (MapTypeClass as Object).MAP_TYPE_NORMAL,new LatLng(centerLat,centerLon),firstZoomLevel); - + (NativeMapsClass as Object).service.createMap( rect, (MapTypeClass as Object).MAP_TYPE_NORMAL,new LatLngClass(centerLat,centerLon),firstZoomLevel); + if(!super.visible) + (NativeMapsClass as Object).service.hideMap(); SaffronLogger.log("Create map done"); mapCreated = true ; mapIsShowing = true ; } + else + { + SaffronLogger.log("Google map is not support"); + } this.addEventListener(Event.ENTER_FRAME,repose,false,10000); } - private var centerMarker:MapMarker, - centerMarkerPosition:LatLng, + public function isCreated():Boolean + { + return mapCreated ; + } + + private function getTouchedItem(e:*):void + { + for(var i:int = 0 ; i(); } private function mapCreatedHandler(e:*):void @@ -323,7 +354,7 @@ setMapStyle(); - NativeMaps.service.showUserLocation(user_location); + (NativeMapsClass as Object).service.showUserLocation(user_location); updateMarkers(); updateCenterMarker(); @@ -336,24 +367,26 @@ /*forceToHideMap = true ; repose(null); (NativeMapsClass as Object).service.addEventListener( (NativeMapEvent).MAP_RENDER_COMPLETE, showMapAgain );*/ - var styleOption:MapStyleOptions = new MapStyleOptions(map_style); - NativeMaps.service.setMapStyle(styleOption); + var styleOption:* = new MapStyleOptionsClass(map_style); + (NativeMapsClass as Object).service.setMapStyle(styleOption); } } private function showMapAgain(e:*):void { - (NativeMapsClass as Object).service.removeEventListener( (NativeMapEvent).MAP_RENDER_COMPLETE, showMapAgain ); + (NativeMapsClass as Object).service.removeEventListener( (NativeMapEventClass).MAP_RENDER_COMPLETE, showMapAgain ); forceToHideMap = false ; } public function setCenter(lat:Number,lon:Number,zoomLevel:Number=-1,animationDuration:uint=2000):void { + setUp(); + if(isSupports==false)return; SaffronLogger.log("******* first center is : "+lat,lon,zoomLevel); center = new LatLngClass(lat,lon); firstZoomLevel = zoomLevel<=0?defaultZoomLevel:zoomLevel ; - NativeMaps.service.setCentre(center as LatLng,firstZoomLevel,animationDuration!=0,animationDuration) + (NativeMapsClass as Object).service.setCentre(center/* as LatLng*/,firstZoomLevel,animationDuration!=0,animationDuration) } private function createViewPort():Rectangle @@ -399,8 +432,8 @@ //SaffronLogger.log("Old rect : " +rect); //SaffronLogger.log("scl : "+scl); - SaffronLogger.log("deltaX : "+deltaX); - SaffronLogger.log("deltaY : "+deltaY); + //SaffronLogger.log("deltaX : "+deltaX); + //SaffronLogger.log("deltaY : "+deltaY); rect.x*=scl; rect.y*=scl; @@ -462,7 +495,7 @@ if(forceToHideMap ==false && rect!=null && Obj.isAccesibleByMouse(this)) { //SaffronLogger.log("Show map!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - if(!mapIsShowing) + if(!mapIsShowing && super.visible) { //SaffronLogger.log("!!!!!!!!!!!!!!!!!show!!!!!!!!!!!!"); (NativeMapsClass as Object).service.showMap(); @@ -477,7 +510,7 @@ { //SaffronLogger.log("!!!!!!!!!!!!!!!hide!!!!!!!!!!!!!!!"); (NativeMapsClass as Object).service.hideMap(); - NativeMaps.service.requestMapBitmapData(); + (NativeMapsClass as Object).service.requestMapBitmapData(); mapIsShowing = false ; catchedBitmap.visible = true ; } @@ -485,7 +518,7 @@ if(centerMarker!=null) { - var cent:LatLng = NativeMaps.service.getCentre() ; + var cent:* = (NativeMapsClass as Object).service.getCentre() ; if(centerMarkerPosition==null) { centerMarkerPosition = cent ; @@ -495,20 +528,30 @@ centerMarkerPosition.lat = centerMarkerPosition.lat+(cent.lat-centerMarkerPosition.lat)/2; centerMarkerPosition.lon = centerMarkerPosition.lon+(cent.lon-centerMarkerPosition.lon)/2; centerMarker.setPosition(centerMarkerPosition); - NativeMaps.service.updateMarker(centerMarker); + (NativeMapsClass as Object).service.updateMarker(centerMarker); } } public function centerPosition():Point { - var cent:LatLng = NativeMaps.service.getCentre() ; - if(cent!=null) - return new Point(cent.lat,cent.lon); + setUp() + try{ + var cent:* = (NativeMapsClass as Object).service.getCentre() ; + if(cent!=null) + return new Point(cent.lat,cent.lon); + } + catch(e:Error){}; return new Point(0,0); } - public function addMarker(markerName:String,lat:Number,lon:Number,markerTitle:String,markerInfo:String,color:uint=0,enableInfoWindow:Boolean=true,animated:Boolean=true,showInfoButton:Boolean=true,iconId:String=''):void + /**Be carefull to user a unique name as marekrName */ + public function addMarker(markerName:String,lat:Number,lon:Number,markerTitle:String,markerInfo:String,color:uint=0,enableInfoWindow:Boolean=true,animated:Boolean=true,showInfoButton:Boolean=true,iconId:String=''):MarkerItem { + setUp(); + var markerItem:MarkerItem = new MarkerItem(markerName); + markerItemsList.push(markerItem); + if(!isSupports) + return markerItem; //Alert.show("****************Map marker Added : ",lat,lon,markerName,'iconId : '+iconId); var myMarker:Object = new MapMarkerClass(markerName,new LatLngClass(lat,lon),markerTitle,markerInfo,color,false,enableInfoWindow,animated,showInfoButton,iconId) myMarkers.push(myMarker); @@ -516,6 +559,7 @@ { updateMarkers(); } + return markerItem ; } public function style(style:String):void @@ -526,18 +570,18 @@ public function zoomLevel():Number { - return NativeMaps.service.getZoom(); + return (NativeMapsClass as Object).service.getZoom(); } private function updateMarkers():void { //(NativeMapsClass as Object).service.clearMap(); - var i:int ; + var i:int, j:int ; var isDuplicated:Boolean = false ; for(i = 0 ; i(); for(i = 0 ; i(); + if(super.visible==false)(NativeMapsClass as Object).service.hideMap(); } } } \ No newline at end of file diff --git a/nativeClasses/map/MarkerItem.as b/nativeClasses/map/MarkerItem.as new file mode 100644 index 00000000..97a3bfab --- /dev/null +++ b/nativeClasses/map/MarkerItem.as @@ -0,0 +1,33 @@ +package nativeClasses.map +{ + public class MarkerItem + { + internal var id:int; + + + public var name:String ; + + private var _onClick:Function ; + + public function MarkerItem(markerName:String) + { + name = markerName ; + } + + public function dispatchClicked():void + { + if(_onClick!=null) + { + if(_onClick.length==0) + _onClick(); + else + _onClick(this); + } + } + + public function onClick(event:Function):void + { + _onClick = event ; + } + } +} \ No newline at end of file diff --git a/nativeClasses/player/BandwidthTester.as b/nativeClasses/player/BandwidthTester.as index 750ae7d6..4bb5d08b 100644 --- a/nativeClasses/player/BandwidthTester.as +++ b/nativeClasses/player/BandwidthTester.as @@ -6,21 +6,21 @@ public class BandwidthTester extends EventDispatcher { - public static const BAND_TESTED = 'tested'; - public static const TEST = 'test'; + public static const BAND_TESTED:String = 'tested'; + public static const TEST:String = 'test'; - private var bandwidth = 0; //final average bandwidth - private var peak_bandwidth = 0; //peak bandwidth - private var curr_bandwidth = 0; //current take bandwidth + private var bandwidth:* = 0; //final average bandwidth + private var peak_bandwidth:* = 0; //peak bandwidth + private var curr_bandwidth:* = 0; //current take bandwidth - private var testfile = ''; - private var l; //loader - private var tm; //timer - private var last_bytes = 0; //bytes loaded last time - private var bands; //recorded byte speeds - private var _latency = 1; //network utilization approximation + private var testfile:* = ''; + private var l:*; //loader + private var tm:*; //timer + private var last_bytes:* = 0; //bytes loaded last time + private var bands:*; //recorded byte speeds + private var _latency:* = 1; //network utilization approximation - public function BandwidthTester(latency = 0,URL_Path:String="") + public function BandwidthTester(latency:* = 0,URL_Path:String="") { tm = new Timer(1000, 3); testfile = URL_Path; @@ -30,7 +30,7 @@ _latency = 1 - latency; } - public function start() + public function start():void { l = new URLLoader(); l.addEventListener(Event.OPEN, start_timer); @@ -38,7 +38,7 @@ l.load(new URLRequest(testfile)); } - private function get_band(e:TimerEvent) + private function get_band(e:TimerEvent):void { curr_bandwidth = Math.floor(((l.bytesLoaded - last_bytes) / 125) * _latency); bands.push(curr_bandwidth); @@ -47,12 +47,12 @@ dispatchEvent(new Event(BandwidthTester.TEST)); } - public function start_timer(e:Event) + public function start_timer(e:Event):void { tm.start(); } - private function timer_complete(e:TimerEvent) + private function timer_complete(e:TimerEvent):void { l.close(); bands.sort(Array.NUMERIC | Array.DESCENDING); @@ -63,7 +63,7 @@ dispatchEvent(new Event(BandwidthTester.BAND_TESTED)); } - private function end_download(e) + private function end_download(e:*):void { tm.removeEventListener(TimerEvent.TIMER, get_band); tm.removeEventListener(TimerEvent.TIMER_COMPLETE, timer_complete); @@ -76,10 +76,10 @@ dispatchEvent(new Event(BandwidthTester.BAND_TESTED)); } - private function calc_avg_bandwidth() + private function calc_avg_bandwidth():Number { - var total = 0; - var len = bands.length; + var total:* = 0; + var len:int = bands.length; while (len--) { total += bands[len]; @@ -87,22 +87,22 @@ return Math.round(total / bands.length); } - public function set latency(prc) + public function set latency(prc:*):void { this._latency = 1 - prc; } - public function getBandwidth() + public function getBandwidth():* { return bandwidth; } - public function getPeak() + public function getPeak():* { return peak_bandwidth; } - public function last_speed() + public function last_speed():* { return curr_bandwidth; diff --git a/nativeClasses/player/DistriqtAudioPlayer.as b/nativeClasses/player/DistriqtAudioPlayer.as index 08142e0d..33eca6e9 100644 --- a/nativeClasses/player/DistriqtAudioPlayer.as +++ b/nativeClasses/player/DistriqtAudioPlayer.as @@ -25,7 +25,7 @@ import contents.alert.Alert; - public class DistriqtMediaPlayer extends Sprite + public class DistriqtAudioPlayer extends Sprite { private var isFullScreen:Boolean = false; @@ -82,7 +82,7 @@ private var checkQuailyID:int; private var checkSeekID:int; - public function DistriqtMediaPlayer(Width:Number, Height:Number) + public function DistriqtAudioPlayer(Width:Number, Height:Number) { super(); if (myDistriqtId == null) diff --git a/nativeClasses/player/DistriqtMediaPlayer.as b/nativeClasses/player/DistriqtMediaPlayer.as index 52c7ebbd..f03bd27d 100644 --- a/nativeClasses/player/DistriqtMediaPlayer.as +++ b/nativeClasses/player/DistriqtMediaPlayer.as @@ -153,7 +153,7 @@ } } - private function controlOrientationPortrate() + private function controlOrientationPortrate():void { if (stage.deviceOrientation == StageOrientation.UNKNOWN || (lastDeviceOriention == stage.deviceOrientation && lastStageorientetion == stage.orientation && (isLandScape(stage.orientation) != isLandScape(stage.deviceOrientation)))) return; @@ -316,14 +316,14 @@ } } - private function band_test(e):void + private function band_test(e:*):void { SaffronLogger.log("testSpeed:" + e.target.last_speed() + ' kb/s') } - private function play_video(e):void + private function play_video(e:*):void { - var bw = e.target.getBandwidth(); + var bw:* = e.target.getBandwidth(); SaffronLogger.log("Final bandwidth: " + bw + ' kb/s'); SaffronLogger.log("Peak bandwidth: " + e.target.getPeak() + ' kb/s'); @@ -351,6 +351,8 @@ } videoURL = videoQualities[index]; + if(nc) + nc.removeEventListener(NetStatusEvent.NET_STATUS, nc_status); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, nc_status); nc.connect(null); @@ -373,12 +375,12 @@ { stream = new NetStream(nc); stream.addEventListener(NetStatusEvent.NET_STATUS, nc_status); - stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, function(e) + stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, function(e:*):void { }); if (playFirstVideo == true) // play for first time { - player.load(videoURL); + if(player)player.load(videoURL); playFirstVideo = false; } else diff --git a/nativeClasses/pushNotification/DistriqtPushNotification.as b/nativeClasses/pushNotification/DistriqtPushNotification.as index 1fbc23f8..5e065911 100644 --- a/nativeClasses/pushNotification/DistriqtPushNotification.as +++ b/nativeClasses/pushNotification/DistriqtPushNotification.as @@ -1,257 +1,258 @@ -package nativeClasses.pushNotification -{ - /*import com.distriqt.extension.core.Core; - import com.distriqt.extension.pushnotifications.AuthorisationStatus; - import com.distriqt.extension.pushnotifications.PushNotifications; - import com.distriqt.extension.pushnotifications.Service; - import com.distriqt.extension.pushnotifications.builders.ActionBuilder; - import com.distriqt.extension.pushnotifications.builders.CategoryBuilder; - import com.distriqt.extension.pushnotifications.builders.ChannelBuilder; - import com.distriqt.extension.pushnotifications.events.AuthorisationEvent; - import com.distriqt.extension.pushnotifications.events.RegistrationEvent;*/ - import flash.utils.getDefinitionByName; - import contents.alert.Alert; - //import com.distriqt.extension.pushnotifications.events.PushNotificationEvent; - //import com.distriqt.extension.pushnotifications.events.PushNotificationGroupEvent; - /** - * ... - * @author Younes Mashayekhi - */ - public class DistriqtPushNotification - { - public static var deviceToken:String; - public static var CoreClass:Class; - public static var AuthorisationStatusClass:Class; - public static var PushNotificationsClass:Class; - public static var ServiceClass:Class; - public static var ActionBuilderClass:Class; - public static var CategoryBuilderClass:Class; - public static var ChannelBuilderClass:Class; - public static var AuthorisationEventClass:Class; - public static var RegistrationEventClass:Class; - /**com.distriqt.extension.pushnotifications.events.PushNotificationEvent */ - public static var PushNotificationEventClass:Class; - /**com.distriqt.extension.pushnotifications.events.PushNotificationGroupEvent */ - public static var PushNotificationGroupEventClass:Class; +package nativeClasses.pushNotification { + /*import com.distriqt.extension.core.Core; + import com.distriqt.extension.pushnotifications.AuthorisationStatus; + import com.distriqt.extension.pushnotifications.PushNotifications; + import com.distriqt.extension.pushnotifications.Service; + import com.distriqt.extension.pushnotifications.builders.ActionBuilder; + import com.distriqt.extension.pushnotifications.builders.CategoryBuilder; + import com.distriqt.extension.pushnotifications.builders.ChannelBuilder; + import com.distriqt.extension.pushnotifications.events.AuthorisationEvent; + import com.distriqt.extension.pushnotifications.events.RegistrationEvent;*/ + import flash.utils.getDefinitionByName; + import contents.alert.Alert; + //import com.distriqt.extension.pushnotifications.events.PushNotificationEvent; + //import com.distriqt.extension.pushnotifications.events.PushNotificationGroupEvent; + /** + * ... + * @author Younes Mashayekhi + */ + public class DistriqtPushNotification { + public static var deviceToken:String; + private static var CoreClass:Class; + private static var AuthorisationStatusClass:Class; + private static var PushNotificationsClass:Class; + private static var ServiceClass:Class; + private static var ActionBuilderClass:Class; + private static var CategoryBuilderClass:Class; + private static var ChannelBuilderClass:Class; + private static var AuthorisationEventClass:Class; + private static var RegistrationEventClass:Class; + private static var InAppMessagingEventClass:Class; + /**com.distriqt.extension.pushnotifications.events.PushNotificationEvent */ + private static var PushNotificationEventClass:Class; + /**com.distriqt.extension.pushnotifications.events.PushNotificationGroupEvent */ + private static var PushNotificationGroupEventClass:Class; - private static var NotifReceived:Function ; - - public function DistriqtPushNotification() - { - - } - - public static function loadClasses():void - { - if (PushNotificationsClass == null) - { - try - { - CoreClass = getDefinitionByName("com.distriqt.extension.core.Core") as Class; - AuthorisationStatusClass = getDefinitionByName("com.distriqt.extension.pushnotifications.AuthorisationStatus") as Class; - PushNotificationsClass = getDefinitionByName("com.distriqt.extension.pushnotifications.PushNotifications") as Class; - ServiceClass = getDefinitionByName("com.distriqt.extension.pushnotifications.Service") as Class; - ActionBuilderClass = getDefinitionByName("com.distriqt.extension.pushnotifications.builders.ActionBuilder") as Class; - CategoryBuilderClass = getDefinitionByName("com.distriqt.extension.pushnotifications.builders.CategoryBuilder") as Class; - ChannelBuilderClass = getDefinitionByName("com.distriqt.extension.pushnotifications.builders.ChannelBuilder") as Class; - AuthorisationEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.AuthorisationEvent") as Class; - RegistrationEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.RegistrationEvent") as Class; - PushNotificationEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.PushNotificationEvent") as Class; - PushNotificationGroupEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.PushNotificationGroupEvent") as Class; - SaffronLogger.log("RegistrationEventClass : "+RegistrationEventClass); - } - catch (e) - { - SaffronLogger.log('Add \n\n\tcom.distriqt.PushNotification\n\tcom.distriqt.Core\n\n to your project xmls');// and below permitions to the tag : \n\n\n\n\t\n\n\n\n\t\n\n'; - } - } - } - - public static function isSupport():Boolean - { - loadClasses(); - if (PushNotificationsClass == null || PushNotificationsClass.isSupported == false) - return false - else - return true; - } - - /** - * You can receive server data on onNotifReceived function as a String - * @param onResult - * @param onNotifReceived - */ - public static function setup(onResult:Function = null,onNotifReceived:Function=null):void - { - NotifReceived = onNotifReceived ; - var PushNotifications:Object; - loadClasses(); - if(onResult==null) - { - onResult = function(text:String):void - { - //show registration ID : - SaffronLogger.log(text); - } - } - if (PushNotificationsClass == null) - { - SaffronLogger.log("push notification is null"); - deviceToken = "windowsDebug"; - onResult(deviceToken); - return; - } - try - { - if (PushNotificationsClass.isSupported) - { - SaffronLogger.log("Push Notification supported") - if ((PushNotificationsClass as Object).service.isServiceSupported((ServiceClass as Object).FCM)) - { - var service:* = new ServiceClass((ServiceClass as Object).FCM, ""); - service.sandboxMode = false; - service.enableNotificationsWhenActive = true; - service.categories.push(new CategoryBuilderClass().setIdentifier("MESSAGE_CATEGORY").addAction(new ActionBuilderClass().setTitle("OK").setWillLaunchApplication(true).setIdentifier("OPEN_APP_BTN").build()).addAction(new ActionBuilderClass().setTitle("Cancel").setDestructive(true).setShouldCancelOnAction(true).setIdentifier("CANCEL_APP_BTN").build()).build()); - service.channels.push(new ChannelBuilderClass().setId("app_channel").setName("App Channel").build()); - (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).REGISTERING, registeringHandler); - (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).REGISTER_SUCCESS, registerSuccessHandler); - (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).CHANGED, registrationChangedHandler); - (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).REGISTER_FAILED, registerFailedHandler); - (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).ERROR,errorHandler); - (PushNotificationsClass as Object).service.addEventListener((AuthorisationEventClass as Object).CHANGED,authorisationChangedHandler); - (PushNotificationsClass as Object).service.addEventListener( (PushNotificationEventClass as Object).NOTIFICATION, notificationHandler ); - (PushNotificationsClass as Object).service.addEventListener( (PushNotificationEventClass as Object).NOTIFICATION_SELECTED, notificationHandler ); - (PushNotificationsClass as Object).service.addEventListener( (PushNotificationEventClass as Object).ACTION, actionHandler ); - (PushNotificationsClass as Object).service.addEventListener( (PushNotificationGroupEventClass as Class).GROUP_SELECTED, groupSelectedHandler ); - - (PushNotificationsClass as Object).service.setup(service); - requestAuthorisation(); - function registeringHandler(event:*):void - { - SaffronLogger.log("Registration started"); - } - - function registerSuccessHandler(event:*):void - { - SaffronLogger.log("Registration succeeded with ID: " + event.data); - deviceToken = event.data; - onResult(event.data); - } - - function registrationChangedHandler(event:*):void - { - SaffronLogger.log("Registration ID has changed: " + event.data); - deviceToken = event.data; - onResult(event.data); - } - - function registerFailedHandler(event:*):void - { - SaffronLogger.log("Registration failed"); - // onResult("Registration failed"); - } - - function errorHandler(event:*):void - { - SaffronLogger.log("Registration error: " + event.data); - // onResult("Registration error"); - } - - } - else - { - SaffronLogger.log("fcm notification is not support"); - // onResult("FCM Not Support"); - } - } - else - { - SaffronLogger.log("notification is not support"); - // onResult("windows Debug"); - } - } - catch (e:Error) - { - SaffronLogger.log("ERROR:" + e.message); - // onResult("error occured"); - } - } + private static var NotifReceived:Function; + private static var InAppMsgRecevied:Function; + public function DistriqtPushNotification() { - private static function notificationHandler( event:* ):void - { - SaffronLogger.log( "Notification: ["+event.type+"] state="+event.applicationState+" startup="+event.startup ); - SaffronLogger.log( event.payload );//{"google.delivered_priority":"high","TypeId":"2","google.ttl":2419200,"google.original_priority":"high","Id":"2096"} - SaffronLogger.log(">>Complete data : "+JSON.stringify(event)); - if(NotifReceived!=null) - { - if(NotifReceived.length>0) - { - NotifReceived(event.payload); - } - else - { - NotifReceived(); - } - } - } + } - private static function actionHandler( event:* ):void - { - SaffronLogger.log( "Action: ["+event.type+"] identifier="+event.identifier+" state="+event.applicationState+" startup="+event.startup ); - SaffronLogger.log( event.payload ); - SaffronLogger.log(">>Complete data : "+JSON.stringify(event)); - } + private static function loadClasses():void { + if (PushNotificationsClass == null) { + try { + CoreClass = getDefinitionByName("com.distriqt.extension.core.Core") as Class; + AuthorisationStatusClass = getDefinitionByName("com.distriqt.extension.pushnotifications.AuthorisationStatus") as Class; + PushNotificationsClass = getDefinitionByName("com.distriqt.extension.pushnotifications.PushNotifications") as Class; + ServiceClass = getDefinitionByName("com.distriqt.extension.pushnotifications.Service") as Class; + ActionBuilderClass = getDefinitionByName("com.distriqt.extension.pushnotifications.builders.ActionBuilder") as Class; + CategoryBuilderClass = getDefinitionByName("com.distriqt.extension.pushnotifications.builders.CategoryBuilder") as Class; + ChannelBuilderClass = getDefinitionByName("com.distriqt.extension.pushnotifications.builders.ChannelBuilder") as Class; + AuthorisationEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.AuthorisationEvent") as Class; + RegistrationEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.RegistrationEvent") as Class; + PushNotificationEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.PushNotificationEvent") as Class; + PushNotificationGroupEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.PushNotificationGroupEvent") as Class; + InAppMessagingEventClass = getDefinitionByName("com.distriqt.extension.pushnotifications.events.InAppMessagingEvent") as Class; + SaffronLogger.log("RegistrationEventClass : " + RegistrationEventClass); + } catch (e) { + SaffronLogger.log('Add \n\n\tcom.distriqt.PushNotification\n\tcom.distriqt.Core\n\n to your project xmls'); // and below permitions to the tag : \n\n\n\n\t\n\n\n\n\t\n\n'; + } + } + } - private static function groupSelectedHandler( event:* ):void - { - SaffronLogger.log( "Group Selected: ["+event.type+"] groupKey="+event.groupKey+" state="+event.applicationState+" startup="+event.startup ); - for each (var payload:String in event.payloads) - { - SaffronLogger.log( "PAYLOAD: "+ payload ); - } - SaffronLogger.log(">>Complete data : "+JSON.stringify(event)); - } - - private static function authorisationChangedHandler(e:*):void - { - requestAuthorisation(); - } - - private static function requestAuthorisation(e:* = null):void - { - switch ((PushNotificationsClass as Object).service.authorisationStatus()) - { - case (AuthorisationStatusClass as Object).AUTHORISED: - // This device has been authorised. - // You can register this device and expect: - // - registration success/failed event, and; - // - notifications to be displayed - (PushNotificationsClass as Object).service.register(); - break; - - case (AuthorisationStatusClass as Object).NOT_DETERMINED: - // You are yet to ask for authorisation to display notifications - // At this point you should consider your strategy to get your user to authorise - // notifications by explaining what the application will provide - (PushNotificationsClass as Object).service.requestAuthorisation(); - break; - - case (AuthorisationStatusClass as Object).DENIED: - // The user has disabled notifications - // Advise your user of the lack of notifications as you see fit - - // For example: You can redirect to the settings page on iOS - if ((PushNotificationsClass as Object).service.canOpenDeviceSettings) - { - //PushNotifications.service.openDeviceSettings(); - } - break; - } - } - - } + public static function isSupport():Boolean { + loadClasses(); + if (PushNotificationsClass == null || PushNotificationsClass.isSupported == false) + return false + else + return true; + } -} \ No newline at end of file + /** + * You can receive server data on onNotifReceived & onInAppMsgRecevied function as a String + * @param onResult + * @param onNotifReceived + * @param onInAppMsgRecevied + */ + public static function setup(onResult:Function = null, onNotifReceived:Function = null, onInAppMsgRecevied:Function = null):void { + NotifReceived = onNotifReceived; + InAppMsgRecevied = onInAppMsgRecevied; + var PushNotifications:Object; + loadClasses(); + if (onResult == null) { + onResult = function(text:String):void { + //show registration ID : + SaffronLogger.log(text); + } + } + if (PushNotificationsClass == null) { + SaffronLogger.log("push notification is null"); + deviceToken = "windowsDebug"; + onResult(deviceToken); + return; + } + try { + (CoreClass as Object).init(); + trace("CoreClass init") + if (PushNotificationsClass.isSupported) { + SaffronLogger.log("Push Notification supported") + if ((PushNotificationsClass as Object).service.isServiceSupported((ServiceClass as Object).FCM)) { + SaffronLogger.log("FCM supported") + var service:* = new ServiceClass((ServiceClass as Object).FCM, ""); + service.sandboxMode = true; // false it in production mode!!! + service.setNotificationsWhenActive(true); + service.categories.push(new CategoryBuilderClass().setIdentifier("MESSAGE_CATEGORY").addAction(new ActionBuilderClass().setTitle("OK").setWillLaunchApplication(true).setIdentifier("OPEN_APP_BTN").build()).addAction(new ActionBuilderClass().setTitle("Cancel").setDestructive(true).setShouldCancelOnAction(true).setIdentifier("CANCEL_APP_BTN").build()).build()); + service.channels.push(new ChannelBuilderClass().setId("app_channel").setName("App Channel").build()); + (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).REGISTERING, registeringHandler); + (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).REGISTER_SUCCESS, registerSuccessHandler); + (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).CHANGED, registrationChangedHandler); + (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).REGISTER_FAILED, registerFailedHandler); + (PushNotificationsClass as Object).service.addEventListener((RegistrationEventClass as Object).ERROR, errorHandler); + (PushNotificationsClass as Object).service.addEventListener((AuthorisationEventClass as Object).CHANGED, authorisationChangedHandler); + (PushNotificationsClass as Object).service.addEventListener((PushNotificationEventClass as Object).NOTIFICATION, notificationHandler); + (PushNotificationsClass as Object).service.addEventListener((PushNotificationEventClass as Object).NOTIFICATION_SELECTED, notificationHandler); + (PushNotificationsClass as Object).service.addEventListener((PushNotificationEventClass as Object).ACTION, actionHandler); + (PushNotificationsClass as Object).service.addEventListener((PushNotificationGroupEventClass as Class).GROUP_SELECTED, groupSelectedHandler); + (PushNotificationsClass as Object).service.setup(service); + requestAuthorisation(); + function registeringHandler(event:*):void { + SaffronLogger.log("Registration started"); + } + + function registerSuccessHandler(event:*):void { + SaffronLogger.log("Registration succeeded with ID: " + event.data); + deviceToken = event.data; + onResult(event.data); + } + + function registrationChangedHandler(event:*):void { + SaffronLogger.log("Registration ID has changed: " + event.data); + deviceToken = event.data; + onResult(event.data); + } + + function registerFailedHandler(event:*):void { + SaffronLogger.log("Registration failed"); + // onResult("Registration failed"); + } + + function errorHandler(event:*):void { + SaffronLogger.log("Registration error: " + event.data); + // onResult("Registration error"); + } + + } else { + SaffronLogger.log("fcm notification is not support"); + // onResult("FCM Not Support"); + } + } else { + SaffronLogger.log("notification is not support"); + // onResult("windows Debug"); + } + } catch (e:Error) { + SaffronLogger.log("ERROR:" + e.message); + // onResult("error occured"); + } + } + + + private static function notificationHandler(event:*):void { + SaffronLogger.log("Notification: [" + event.type + "] state=" + event.applicationState + " startup=" + event.startup); + SaffronLogger.log(event.payload); //{"google.delivered_priority":"high","TypeId":"2","google.ttl":2419200,"google.original_priority":"high","Id":"2096"} + SaffronLogger.log(">>Complete data : " + JSON.stringify(event)); + if (NotifReceived != null) { + if (JSON.stringify(event.payload).length > 0) { + NotifReceived(event.payload); + } else { + NotifReceived(); + } + } + } + + private static function actionHandler(event:*):void { + SaffronLogger.log("Action: [" + event.type + "] identifier=" + event.identifier + " state=" + event.applicationState + " startup=" + event.startup); + SaffronLogger.log(event.payload); + SaffronLogger.log(">>Complete data : " + JSON.stringify(event)); + } + + private static function groupSelectedHandler(event:*):void { + SaffronLogger.log("Group Selected: [" + event.type + "] groupKey=" + event.groupKey + " state=" + event.applicationState + " startup=" + event.startup); + for each (var payload:String in event.payloads) { + SaffronLogger.log("PAYLOAD: " + payload); + } + SaffronLogger.log(">>Complete data : " + JSON.stringify(event)); + } + + public static function setupInAppMessaging():void { + // call this function after a few second after setup pushnotification + if (PushNotificationsClass == null) { + //windowsDebug; + return; + } + if ((PushNotificationsClass as Object).service.inAppMessaging.isSupported) { + (PushNotificationsClass as Object).service.inAppMessaging.addEventListener((InAppMessagingEventClass as Object).SELECTED, inappmessaging_selectedHandler); + SaffronLogger.log("InAppMessaging SUPPORTED") + } else { + SaffronLogger.log("InAppMessaging NOT SUPPORTED") + } + } + + public static function setTriggerForInAppMessaging(key:String, value:String = ""):void { + //at first,you must call setupInAppMessaging method + if (PushNotificationsClass == null) { + //windowsDebug; + return; + } + (PushNotificationsClass as Object).service.inAppMessaging.addTrigger(key, value); + } + + private static function inappmessaging_selectedHandler(event:*):void { + if (InAppMsgRecevied != null) { + if (JSON.stringify(event.data).length > 0) { + InAppMsgRecevied(JSON.stringify(event.data)); + } else { + InAppMsgRecevied(); + } + } + } + + private static function authorisationChangedHandler(e:*):void { + requestAuthorisation(); + } + + private static function requestAuthorisation(e:* = null):void { + switch ((PushNotificationsClass as Object).service.authorisationStatus()) { + case (AuthorisationStatusClass as Object).AUTHORISED: + // This device has been authorised. + // You can register this device and expect: + // - registration success/failed event, and; + // - notifications to be displayed + (PushNotificationsClass as Object).service.register(); + break; + + case (AuthorisationStatusClass as Object).NOT_DETERMINED: + // You are yet to ask for authorisation to display notifications + // At this point you should consider your strategy to get your user to authorise + // notifications by explaining what the application will provide + (PushNotificationsClass as Object).service.requestAuthorisation(); + break; + + case (AuthorisationStatusClass as Object).DENIED: + // The user has disabled notifications + // Advise your user of the lack of notifications as you see fit + + // For example: You can redirect to the settings page on iOS + if ((PushNotificationsClass as Object).service.canOpenDeviceSettings) { + //PushNotifications.service.openDeviceSettings(); + } + break; + } + } + + } + +} diff --git a/netManager/UDPManager.as b/netManager/UDPManager.as new file mode 100644 index 00000000..3a5c31cc --- /dev/null +++ b/netManager/UDPManager.as @@ -0,0 +1,71 @@ +package netManager +{ + import flash.net.DatagramSocket; + import flash.utils.ByteArray; + import flash.events.DatagramSocketDataEvent; + import flash.utils.getTimer; + + public class UDPManager + { + private static var myUDP:DatagramSocket ; + + private static var onReceiveFunction:Function ; + + private static var lastMassageDeliveryTime:int ; + + private static function setUp():void + { + if(myUDP==null) + { + myUDP = new DatagramSocket(); + myUDP.addEventListener(DatagramSocketDataEvent.DATA,onDataReceived); + } + } + + private static function onDataReceived(e:DatagramSocketDataEvent):void + { + trace("Message received"); + lastMassageDeliveryTime = getTimer(); + var message:String = e.data.toString(); + if(onReceiveFunction!=null && onReceiveFunction.length>0) + onReceiveFunction(message) + } + + public static function getMessageOnPort(onRespond:Function,myPort:uint):void + { + trace("myUDP.connected : "+myUDP.connected); + trace("myUDP.localPort : " +myUDP.localPort); + onReceiveFunction = onRespond ; + if(myUDP.localPort==0 || ( myUDP.localPort!=myPort)) + { + if(myUDP.connected) + myUDP.close(); + + myUDP.bind(myPort); + myUDP.receive(); + } + } + + public static function isConnected():Boolean + { + return myUDP.connected && myUDP.localPort !=0; + } + + public static function sendMessageTo(message:String,onRespond:Function,targetIp:String,targetPort:uint,localPort:uint=2000):void + { + setUp(); + trace("Message sent:"+message); + getMessageOnPort(onRespond,localPort); + var data:ByteArray = new ByteArray(); + data.writeUTFBytes(message); + myUDP.send(data,0,0,targetIp,targetPort); + myUDP.receive(); + } + + /**Returns the last time that connection accured */ + public function getLastConnectionTimeout():int + { + return getTimer()-lastMassageDeliveryTime; + } + } +} \ No newline at end of file diff --git a/netManager/urlSaver/URLSaver.as b/netManager/urlSaver/URLSaver.as index 00a163a3..bd54bda9 100644 --- a/netManager/urlSaver/URLSaver.as +++ b/netManager/urlSaver/URLSaver.as @@ -42,7 +42,7 @@ package netManager.urlSaver private static var acceptableDate:Number = 0 ; - public static function activateDateControll(noOlder:Date) + public static function activateDateControll(noOlder:Date):void { acceptableDate = noOlder.time ; } @@ -240,7 +240,7 @@ package netManager.urlSaver } /**Cansel current download*/ - public function cansel() + public function cansel():void { //SaffronLogger.log('Cansel donwload manager : '+onlineURL); if(fileSaver) @@ -358,7 +358,7 @@ package netManager.urlSaver private function saveLoadedBytes():void { - + trace("Download file done"); var oflineFolder:File; if(mySpecialFolder!=null) { @@ -445,21 +445,34 @@ package netManager.urlSaver fileSaver.close(); fileSaver = null ; } - fileSaver = new FileStream(); - fileSaver.addEventListener(Event.CLOSE,fileIsSaved); - fileSaver.addEventListener(IOErrorEvent.IO_ERROR,fileSaverError); - fileSaver.openAsync(oflineFile,FileMode.WRITE); - fileSaver.writeBytes(myLoadedBytes); - fileSaver.close(); - //SaffronLogger.log("Save the imafe on device...................................... : "+oflineFile.url+' > '+myLoadedBytes.bytesAvailable); - - //SavedDatas.save(onlineURL,offlineURL); - //SaffronLogger.log('offile file saved on : '+onlineURL); - storage.data[onlineURL] = offlineURL ; - datestorage.data[onlineURL] = new Date().time ; - //SaffronLogger.log("datestorage.data[onlineURL] : " +datestorage.data[onlineURL]); - datestorage.flush(); - storage.flush(); + + if(oflineFile.nativePath.indexOf(File.applicationStorageDirectory.nativePath)!=-1) + { + startSaveItem(); + } + else + { + FileManager.controlFilePermission(startSaveItem,true); + } + + function startSaveItem():void + { + fileSaver = new FileStream(); + fileSaver.addEventListener(Event.CLOSE,fileIsSaved); + fileSaver.addEventListener(IOErrorEvent.IO_ERROR,fileSaverError); + fileSaver.openAsync(oflineFile,FileMode.WRITE); + fileSaver.writeBytes(myLoadedBytes); + fileSaver.close(); + SaffronLogger.log("Save the imafe on device...................................... : "+oflineFile.url+' > '+myLoadedBytes.bytesAvailable); + + //SavedDatas.save(onlineURL,offlineURL); + //SaffronLogger.log('offile file saved on : '+onlineURL); + storage.data[onlineURL] = offlineURL ; + datestorage.data[onlineURL] = new Date().time ; + //SaffronLogger.log("datestorage.data[onlineURL] : " +datestorage.data[onlineURL]); + datestorage.flush(); + storage.flush(); + } } protected function fileSaverError(event:IOErrorEvent):void @@ -559,9 +572,9 @@ package netManager.urlSaver //////////////////////////////////////////////delete temporary /**Delete images older than this date*/ - public static function deleteDatasOlderThan(date:Date) + public static function deleteDatasOlderThan(date:Date):void { - for(var i in datestorage.data) + for(var i:* in datestorage.data) { if(datestorage.data[i] < date.time) { diff --git a/notification/NotificationEvent.as b/notification/NotificationEvent.as index 2b14cbd5..1b4bf925 100644 --- a/notification/NotificationEvent.as +++ b/notification/NotificationEvent.as @@ -4,8 +4,8 @@ package notification public class NotificationEvent extends Event { - public static const TOKEN_REGISTER_COMPELETED="TOKEN_REGISTER_COMPELETED" - public static const TOKEN_REGISTER_START = "TOKEN_REGISTER_START" + public static const TOKEN_REGISTER_COMPELETED:String="TOKEN_REGISTER_COMPELETED" + public static const TOKEN_REGISTER_START:String = "TOKEN_REGISTER_START" public static const NOTIFICATION:String = "NOTIFICATION"; public static const FOREGROUND_NOTIFICATION:String = "FOREGROUND_NOTIFICATION"; diff --git a/notification/NotificationManager.as b/notification/NotificationManager.as index dd240358..519f8e78 100644 --- a/notification/NotificationManager.as +++ b/notification/NotificationManager.as @@ -69,7 +69,7 @@ return Notification_Event ; } - private function EasyPushExample() + private function EasyPushExample() :void { //Controll permissions↓ diff --git a/photoEditor/EditorPencil.as b/photoEditor/EditorPencil.as index ca491f3d..b70aa312 100644 --- a/photoEditor/EditorPencil.as +++ b/photoEditor/EditorPencil.as @@ -194,7 +194,7 @@ package photoEditor var tool:MovieClip = event.currentTarget as MovieClip ; var toolSize:Number = uint(tool.name.split(toolsSizeName).join('')); - for(var i = 0 ; i = imageHistory.splice(imageIndex+1,imageHistory.length-imageIndex); - for(var i = 0 ; i0) { @@ -84,7 +86,8 @@ Alert.show(String(evt.field[credit]));
}
*/ - public static function getText(title:String,question:String,tagLable:String,onDone:Function,OnNotAccepted:Function=null,keyboardType:String=SoftKeyboardType.DEFAULT,isPassword:Boolean=false,innerDisplayObject:DisplayObject=null,ButtonFrameYes:int=1,ButtonFrameNo:int=1,defaultTextOnField:String=''):void + public static function getText(title:String,question:String,tagLable:String,onDone:Function,OnNotAccepted:Function=null,keyboardType:String=SoftKeyboardType.DEFAULT,isPassword:Boolean=false, + innerDisplayObject:DisplayObject=null,ButtonFrameYes:int=1,ButtonFrameNo:int=1,defaultTextOnField:String='',numLine:uint=1):void { controllConfig(); onQuestionAccepted = onDone; @@ -93,7 +96,7 @@ var buttons:Array = [new PopButtonData(Contents.lang.t[id_submit],ButtonFrameYes,null,true,true) ,new PopButtonData(Contents.lang.t[id_back],ButtonFrameNo,null,true,true)] ; var popFields:PopMenuFields = new PopMenuFields(); - popFields.addField(tagLable,defaultTextOnField,keyboardType,isPassword,true,true); + popFields.addField(tagLable,defaultTextOnField,keyboardType,isPassword,true,true,numLine,0,1,0,numLine>1); var popText:PopMenuContent = new PopMenuContent(question,popFields,buttons,innerDisplayObject); PopMenu1.popUp(title,null,popText,0,textCatched); } @@ -126,7 +129,7 @@ } } - private static function onQuestionAnswered(e:PopMenuEvent) + private static function onQuestionAnswered(e:PopMenuEvent):void { if(e.buttonTitle == Contents.lang.t[id_yes]) { @@ -174,19 +177,21 @@ { if(_onClose!=null) { - _onClose.call(); + var cahsedhCloseFunc:Function = _onClose ; + _onClose = null ; + cahsedhCloseFunc(); } } /**Show no internet connection available*/ - public static function noInternet(fakeInput:*=null,onClosed:Function=null) + public static function noInternet(fakeInput:*=null,onClosed:Function=null):void { controllConfig(); show(Contents.lang.t[id_no_internet],true,-1,null,'',onClosed); } /**hide hint*/ - public static function hide() + public static function hide():void { PopMenu1.close(); //throw "Hide calls"; @@ -195,7 +200,7 @@ /**Show the please wait page , you have to close this page manualy
* The onCloded function had to get popDataEvent*/ - public static function pleaseWait( onClosed:Function = null ) + public static function pleaseWait( onClosed:Function = null ):void { controllConfig(); var buttons:Array ; diff --git a/popForm/PopButton.as b/popForm/PopButton.as index 9b5b8fdb..2cbddcd0 100644 --- a/popForm/PopButton.as +++ b/popForm/PopButton.as @@ -187,7 +187,7 @@ /**add titles that will triggerring the back button*/ - public static function addBackTitleTrigger(backTitle:String) + public static function addBackTitleTrigger(backTitle:String):void { backList.push(backTitle); } @@ -215,7 +215,7 @@ NativeApplication.nativeApplication.removeEventListener(KeyboardEvent.KEY_DOWN,checkBack); } - private function checkBack(e:KeyboardEvent) + private function checkBack(e:KeyboardEvent):void { if(!Obj.getVisible(me) || !Obj.getImOnStage(me)) { @@ -234,14 +234,16 @@ } } - public function onClick(func:Function):void + public function onClick(func:Function):PopButton { Obj.setButton(this,func); + return this ; } - public function onClickOpenLink(link:LinkData):void + public function onClickOpenLink(link:LinkData):PopButton { Obj.setButton(this,openLink); _link_to_open = link ; + return this ; } private function openLink():void { @@ -249,13 +251,14 @@ this.dispatchEvent(new AppEventContent(_link_to_open)); } - public function setUpByLink(linkData:LinkData):void + public function setUpByLink(linkData:LinkData):PopButton { setUp(linkData.name); var ME:PopButton = this ; onClick(function():void{ ME.dispatchEvent(new AppEventContent(linkData)); }); + return this ; } diff --git a/popForm/PopField.as b/popForm/PopField.as index b476ca1f..c9523081 100644 --- a/popForm/PopField.as +++ b/popForm/PopField.as @@ -69,6 +69,8 @@ private var onSubmited:Function ; private var onEditedFunc:Function ; private var onEditeFuncCalDelay:uint ; + + private var requiredMC:MovieClip ; public function get textField():TextField @@ -185,6 +187,20 @@ { super(); stop(); + requiredMC = Obj.get("required_mc",this); + if(requiredMC)requiredMC.visible = false ; + } + + public function required():PopField + { + if(requiredMC)requiredMC.visible = true ; + return this ; + } + + public function isCurrentcy():PopField + { + if(nativeKeyBoard)nativeKeyBoard.isCurrency() + return this ; } /**Changing the form color without making effect on other values*/ @@ -218,9 +234,10 @@ } } - public function onEdited(func:Function):void + public function onEdited(func:Function):PopField { onEditedFunc = func ; + return this ; } public function setUp(tagName:String,defaultText:String,KeyBordType:String = SoftKeyboardType.DEFAULT,isPass:Boolean = false,editable:Boolean = true,isAraic:Boolean=true,numLines:uint = 1,color:uint=1,frame:uint=1,maxChar:uint=0,otherOptions:Array=null,deleteDefautlText:Boolean=false,activateRadioSwitcher:Boolean=false,returnKey:String=ReturnKeyLabel.DEFAULT,onTypedFunction:Function=null,justShowNativeText:Boolean=false,multiLineTag:Boolean=false,justify:Boolean=true,selectAllCharchter:Boolean=false):PopField @@ -343,7 +360,7 @@ Y0 = myTXT.height; myTXT.multiline = true ; myTXT.wordWrap = true ; - for(var i = 0 ; i(); @@ -156,9 +156,9 @@ package popForm public function update(content:PopMenuFields):void { - for(var i = 0 ; i * When this event dispatches from field, you have to detect field id from buttonID value and you can get last field value by using field[buttinID]*/ diff --git a/popForm/PopMenuFields.as b/popForm/PopMenuFields.as index d57847ca..c460be86 100644 --- a/popForm/PopMenuFields.as +++ b/popForm/PopMenuFields.as @@ -63,7 +63,7 @@ /**add new field
* frameForDirection: 1 for rtl and 2 for ltr script
* if the field is read only, you can set numLines to 0 and make it change the lines by it's needs*/ - public function addField(tagName:String,fieldDefault:*='',keyBoardType:String = SoftKeyboardType.DEFAULT,isPass:Boolean=false,Editable:Boolean = true,isArabic_v:Boolean=true,numLine:uint=1,frameForDirection:uint=0,fieldColorFrame:uint=1,maxChar:uint=0,MultiLineTag:Boolean=false,Align:Boolean=true) + public function addField(tagName:String,fieldDefault:*='',keyBoardType:String = SoftKeyboardType.DEFAULT,isPass:Boolean=false,Editable:Boolean = true,isArabic_v:Boolean=true,numLine:uint=1,frameForDirection:uint=0,fieldColorFrame:uint=1,maxChar:uint=0,MultiLineTag:Boolean=false,Align:Boolean=true):void { if(frameForDirection==0) { @@ -99,7 +99,7 @@ maxCharacters.push(maxChar); } - public function addRadioListField(tagName:String,popFieldOptions:Array,fieldDefault:*='',isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1,Align:Boolean=true) + public function addRadioListField(tagName:String,popFieldOptions:Array,fieldDefault:*='',isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1,Align:Boolean=true):void { tagNames.push(tagName); if(fieldDefault==null) @@ -124,7 +124,7 @@ maxCharacters.push(0); } - public function addPhoneField(tagName:String,fieldDefault:String='',isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1,isEditable:Boolean=true) + public function addPhoneField(tagName:String,fieldDefault:String='',isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1,isEditable:Boolean=true):void { tagNames.push(tagName); fieldDefaults.push(fieldDefault); @@ -147,7 +147,7 @@ /**add new field
* frameForDirection: 1 for rtl and 2 for ltr script*/ - public function addClickField(tagName:String,fieldDefault:String='',/*keyBoardType:String = SoftKeyboardType.DEFAULT*//*,isPass:Boolean=false*//*,Editable:Boolean = true,*/isArabic_v:Boolean=true,numLine:uint=1,frameForDirection:uint=1,fieldColorFrame:uint=1) + public function addClickField(tagName:String,fieldDefault:String='',/*keyBoardType:String = SoftKeyboardType.DEFAULT*//*,isPass:Boolean=false*//*,Editable:Boolean = true,*/isArabic_v:Boolean=true,numLine:uint=1,frameForDirection:uint=1,fieldColorFrame:uint=1):void { //keyBoardType = (keyBoardType==null)?SoftKeyboardType.DEFAULT:keyBoardType; @@ -172,7 +172,7 @@ /**add new field
* frameForDirection: 1 for rtl and 2 for ltr script*/ - public function addDateField(tagName:String,fieldDefaultDates:Date=null,Editable:Boolean = true,isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1) + public function addDateField(tagName:String,fieldDefaultDates:Date=null,Editable:Boolean = true,isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1):void { //keyBoardType = (keyBoardType==null)?SoftKeyboardType.DEFAULT:keyBoardType; @@ -197,7 +197,7 @@ /**add new field
* frameForDirection: 1 for rtl and 2 for ltr script*/ - public function addBooleanField(tagName:String,booleanValue:Boolean,frameForDirection:uint=1,fieldColorFrame:uint=1,Arabic:Boolean=true) + public function addBooleanField(tagName:String,booleanValue:Boolean,frameForDirection:uint=1,fieldColorFrame:uint=1,Arabic:Boolean=true):void { //keyBoardType = (keyBoardType==null)?SoftKeyboardType.DEFAULT:keyBoardType; tagNames.push(tagName); @@ -221,7 +221,7 @@ /**add new field
* frameForDirection: 1 for rtl and 2 for ltr script*/ - public function addTimeField(tagName:String,fieldDefaultDates:Date=null,Editable:Boolean = true,isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1) + public function addTimeField(tagName:String,fieldDefaultDates:Date=null,Editable:Boolean = true,isArabic_v:Boolean=true,frameForDirection:uint=1,fieldColorFrame:uint=1):void { //keyBoardType = (keyBoardType==null)?SoftKeyboardType.DEFAULT:keyBoardType; diff --git a/popForm/PopMenuTypes.as b/popForm/PopMenuTypes.as index 2a518f55..4d1fe2cc 100644 --- a/popForm/PopMenuTypes.as +++ b/popForm/PopMenuTypes.as @@ -23,13 +23,13 @@ } /**this is a answer type of pop ups*/ - public static function get DEFAULT() + public static function get DEFAULT():PopMenuTypes { return new PopMenuTypes(1/*,0xFF33CC*/); } /**this is a question type of pop ups*/ - public static function get CAUTION() + public static function get CAUTION():PopMenuTypes { return new PopMenuTypes(2/*,0x00cc00*/); } diff --git a/restDoaService/RestDoaServiceCaller.as b/restDoaService/RestDoaServiceCaller.as index f16bcec9..39b73e8a 100644 --- a/restDoaService/RestDoaServiceCaller.as +++ b/restDoaService/RestDoaServiceCaller.as @@ -61,6 +61,7 @@ private static var webServiceId:uint = 0 ; + private static var _fake_no_net:Boolean = false ; public function get pureData():String { @@ -158,6 +159,11 @@ requestLoader.addEventListener(ProgressEvent.PROGRESS,dispatchProgress); } + public static function cutConnect(status:Boolean=true):void + { + _fake_no_net = status ; + } + public function then(onResponded:Function):RestDoaServiceCaller { resultReturnedFunc = onResponded ; @@ -455,10 +461,10 @@ } /**Values are not case sencitive*/ - protected function loadParam(obj:Object=null,isDataForm:Boolean=false):void + protected function loadParam(obj:Object=null,isDataForm:Boolean=false,clearFunctions:Boolean=true):void { HTTPStatus = 0 ; - cansel(); + cansel(clearFunctions); updateHeaders(); isConnected = false ; onUpdateProccess = false ; @@ -501,7 +507,7 @@ var readableObject:Object = Obj.createReadAbleObject(obj);// .myParams ; urlVars = new URLVariables(); - for(var i in readableObject) + for(var i:* in readableObject) { urlVars[i] = readableObject[i] ;//a1=123&a2=32 || CaseTbl=(a1=123&a2=32) } @@ -548,7 +554,7 @@ { SaffronLogger.log("* instant cashed data for "+myId+" : "+savedData); } - FuncManager.callAsyncOnFrame(function(){ + FuncManager.callAsyncOnFrame(function():void{ parsLoadedData(savedData); if(expired) { @@ -583,17 +589,27 @@ //debug line //navigateToURL(pureRequest); _isLoading = true ; - requestLoader.load(pureRequest); + if(_fake_no_net) + { + setTimeout(function():void{ + requestLoader.dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR,true,false,'no net')); + },100) + } + else + { + requestLoader.load(pureRequest); + } //noInternet(); } - public function reLoad(delay:uint=20000,dontReturnOfflineData:Boolean=false):void + public function reLoad(delay:uint=20000,dontReturnOfflineData:Boolean=false):RestDoaServiceCaller { cansel(false); offlineDate = new Date() ; offlineDataIsOK = !dontReturnOfflineData ; instantOfflineData = false ; - timerId = setTimeout(loadParam,delay) + timerId = setTimeout(loadParam,delay,null,false,false); + return this ; } public function cancel():void diff --git a/sliderMenu/SliderManager.as b/sliderMenu/SliderManager.as index c29f1eba..003514e7 100644 --- a/sliderMenu/SliderManager.as +++ b/sliderMenu/SliderManager.as @@ -348,7 +348,7 @@ package sliderMenu /**start the drag*/ private static function checkDrag(e:MouseEvent):void { - if(lock_flag) + if(lock_flag || PopMenu.isOpen) { //menu is lock return ; diff --git a/tabMenu/TabMenuManager.as b/tabMenu/TabMenuManager.as index 532fb101..45bd1928 100644 --- a/tabMenu/TabMenuManager.as +++ b/tabMenu/TabMenuManager.as @@ -24,7 +24,7 @@ package tabMenu } - for(var valueName in _currentTabe[GroupName_p]) + for(var valueName:* in _currentTabe[GroupName_p]) { _currentTabe[GroupName_p][valueName] = false; } diff --git a/webService/webCallers/WebServiceCaller.as b/webService/webCallers/WebServiceCaller.as index ce2b9bce..c0fcc125 100644 --- a/webService/webCallers/WebServiceCaller.as +++ b/webService/webCallers/WebServiceCaller.as @@ -63,6 +63,7 @@ private var func_onDataRetrived:Function, func_onConnectionError:Function, + func_onConnected:Function, func_onError:Function; private var reloadIfNotConnected:Boolean = false ; @@ -97,10 +98,9 @@ return this ; } - public function onConnected2(onError:Function):WebServiceCaller + public function onConnected2(onConnectedFunc:Function):WebServiceCaller { - func_onConnectionError = onError; - func_onError = onError; + func_onConnected = onConnectedFunc; return this ; } @@ -225,7 +225,7 @@ myWebService.CanselThisToken(myToken); } - private function onConnected() + private function onConnected():void { SaffronLogger.log("connected"); //TODO: implement function @@ -262,11 +262,12 @@ connected = true ; cansel(); generateDataAndDispatchEvent(e.pureData); - if(func_onDataRetrived!=null) + /*if(func_onDataRetrived!=null) { func_onDataRetrived(); - } + }*/ this.dispatchEvent(new Event(Event.CONNECT)); + if(func_onConnected!=null)func_onConnected(); } } diff --git a/wrokersJob/WorkerFunctions.as b/wrokersJob/WorkerFunctions.as index c694290b..1d5f88fc 100644 --- a/wrokersJob/WorkerFunctions.as +++ b/wrokersJob/WorkerFunctions.as @@ -93,7 +93,7 @@ else SaffronLogger.log(moreHints); } - var workerBytes:ByteArray = FileManager.loadFile(workerTarget); + var workerBytes:ByteArray = FileManager.loadFile(workerTarget,false,null,false); SaffronLogger.log("workerTarget.exists : "+workerTarget.exists); SaffronLogger.log("Capabilities.isDebugger : "+Capabilities.isDebugger); @@ -118,7 +118,7 @@ var receiverChannel:MessageChannel = worker.createMessageChannel(Worker.current); receiverChannel.addEventListener(Event.CHANNEL_MESSAGE, handlecustomeChannel); //receiverChannel.addEventListener(Event.DEACTIVATE, workerDeactivated); - receiverChannel.addEventListener(Event.CHANNEL_STATE, function(e:Event){SaffronLogger.log(e)}); + receiverChannel.addEventListener(Event.CHANNEL_STATE, function(e:Event):void{SaffronLogger.log(e)}); worker.setSharedProperty("receiverChannel_fromMainProject", receiverChannel); worker.start(); @@ -166,7 +166,7 @@ } /**Worker state*/ - private static function workerStateHandler(e:Event) { + private static function workerStateHandler(e:Event):void { var worker:Worker = e.currentTarget as Worker ; SaffronLogger.log("Worker State : "+worker.state); if(worker.state == WorkerState.RUNNING) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy