Diff
Added: freeswitch/trunk/contrib/seven/fsair/.actionScriptProperties (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/.actionScriptProperties (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/.actionScriptProperties 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actionScriptProperties mainApplicationPath="fsair.mxml" version="3">
+<compiler additionalCompilerArguments="-locale en_US" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersion="9.0.124" htmlPlayerVersionCheck="true" outputFolderPath="bin-debug" sourceFolderPath="src" strict="true" useApolloConfig="true" verifyDigests="true" warn="true">
+<compilerSourcePath/>
+<libraryPath defaultLinkType="1">
+<libraryPathEntry kind="4" path=""/>
+<libraryPathEntry kind="1" linkType="1" path="libs"/>
+</libraryPath>
+<sourceAttachmentPath/>
+</compiler>
+<applications>
+<application path="fsair.as"/>
+<application path="fsair.mxml"/>
+</applications>
+<modules/>
+<buildCSSFiles/>
+</actionScriptProperties>
Added: freeswitch/trunk/contrib/seven/fsair/.flexProperties (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/.flexProperties (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/.flexProperties 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<flexProperties flexServerType="0" toolCompile="true" useServerFlexSDK="false" version="1"/>
Added: freeswitch/trunk/contrib/seven/fsair/.project (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/.project (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/.project 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>fsair</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.adobe.flexbuilder.project.flexbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.adobe.flexbuilder.apollo.apollobuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.adobe.flexbuilder.apollo.apollonature</nature>
+ <nature>com.adobe.flexbuilder.project.flexnature</nature>
+ <nature>com.adobe.flexbuilder.project.actionscriptnature</nature>
+ </natures>
+</projectDescription>
Added: freeswitch/trunk/contrib/seven/fsair/.settings/org.eclipse.core.resources.prefs (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/.settings/org.eclipse.core.resources.prefs (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/.settings/org.eclipse.core.resources.prefs 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,3 @@
+#Fri Jul 10 22:37:21 CST 2009
+eclipse.preferences.version=1
+encoding/<project>=utf-8
Added: freeswitch/trunk/contrib/seven/fsair/FreeSWITCH-Air.air
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/FreeSWITCH-Air.air
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/airhello-app.xml (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/bin-debug/airhello-app.xml (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/bin-debug/airhello-app.xml 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://ns.adobe.com/air/application/1.5">
+
+<!-- Adobe AIR Application Descriptor File Template.
+
+ Specifies parameters for identifying, installing, and launching AIR applications.
+
+ xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/1.5
+ The last segment of the namespace specifies the version
+ of the AIR runtime required for this application to run.
+
+ minimumPatchLevel - The minimum patch level of the AIR runtime required to run
+ the application. Optional.
+-->
+
+ <!-- The application identifier string, unique to this application. Required. -->
+ <id>airhello</id>
+
+ <!-- Used as the filename for the application. Required. -->
+ <filename>airhello</filename>
+
+ <!-- The name that is displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <name>
+ <text xml:lang="en">FreeSWITCH Air SoftPhone</text>
+ <text xml:lang="fr">FreeSWITCH Air SoftPhone</text>
+ <text xml:lang="zh">FreeSWITCH Air 软电话</text>
+ </name>
+
+ <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
+ <version>Ver 0.0.1</version>
+
+ <!-- Description, displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- Copyright information. Optional -->
+ <!-- <copyright></copyright> -->
+
+ <!-- Settings for the application's initial window. Required. -->
+ <initialWindow>
+ <!-- The main SWF or HTML file of the application. Required. -->
+ <!-- Note: In Flex Builder, the SWF reference is set automatically. -->
+ <content>airhello.swf</content>
+
+ <!-- The title of the main window. Optional. -->
+ <!-- <title></title> -->
+
+ <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
+ <systemChrome>none</systemChrome>
+
+ <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
+ <transparent>true</transparent>
+
+ <!-- Whether the window is initially visible. Optional. Default false. -->
+ <!-- <visible></visible> -->
+
+ <!-- Whether the user can minimize the window. Optional. Default true. -->
+ <!-- <minimizable></minimizable> -->
+
+ <!-- Whether the user can maximize the window. Optional. Default true. -->
+ <!-- <maximizable></maximizable> -->
+
+ <!-- Whether the user can resize the window. Optional. Default true. -->
+ <!-- <resizable></resizable> -->
+
+ <!-- The window's initial width. Optional. -->
+ <!-- <width></width> -->
+
+ <!-- The window's initial height. Optional. -->
+ <!-- <height></height> -->
+
+ <!-- The window's initial x position. Optional. -->
+ <!-- <x></x> -->
+
+ <!-- The window's initial y position. Optional. -->
+ <!-- <y></y> -->
+
+ <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
+ <!-- <minSize></minSize> -->
+
+ <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
+ <!-- <maxSize></maxSize> -->
+ </initialWindow>
+
+ <!-- The subpath of the standard default installation location to use. Optional. -->
+ <!-- <installFolder></installFolder> -->
+
+ <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
+ <!-- <programMenuFolder></programMenuFolder> -->
+
+ <!-- The icon the system uses for the application. For at least one resolution,
+ specify the path to a PNG file included in the AIR package. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- Whether the application handles the update when a user double-clicks an update version
+ of the AIR file (true), or the default AIR application installer handles the update (false).
+ Optional. Default false. -->
+ <!-- <customUpdateUI></customUpdateUI> -->
+
+ <!-- Whether the application can be launched when the user clicks a link in a web browser.
+ Optional. Default false. -->
+ <!-- <allowBrowserInvocation></allowBrowserInvocation> -->
+
+ <!-- Listing of file types for which the application can register. Optional. -->
+ <!-- <fileTypes> -->
+
+ <!-- Defines one file type. Optional. -->
+ <!-- <fileType> -->
+
+ <!-- The name that the system displays for the registered file type. Required. -->
+ <!-- <name></name> -->
+
+ <!-- The extension to register. Required. -->
+ <!-- <extension></extension> -->
+
+ <!-- The description of the file type. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- The MIME content type. -->
+ <!-- <contentType></contentType> -->
+
+ <!-- The icon to display for the file type. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- </fileType> -->
+ <!-- </fileTypes> -->
+
+</application>
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/airhello.swf
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/bin-debug/airhello.swf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair-app.xml (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair-app.xml (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair-app.xml 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://ns.adobe.com/air/application/1.5">
+
+<!-- Adobe AIR Application Descriptor File Template.
+
+ Specifies parameters for identifying, installing, and launching AIR applications.
+
+ xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/1.5
+ The last segment of the namespace specifies the version
+ of the AIR runtime required for this application to run.
+
+ minimumPatchLevel - The minimum patch level of the AIR runtime required to run
+ the application. Optional.
+-->
+
+ <!-- The application identifier string, unique to this application. Required. -->
+ <id>fsair</id>
+
+ <!-- Used as the filename for the application. Required. -->
+ <filename>fsair</filename>
+
+ <!-- The name that is displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <name>
+ <text xml:lang="en">FreeSWITCH Air SoftPhone</text>
+ <text xml:lang="fr">FreeSWITCH Air SoftPhone</text>
+ <text xml:lang="zh">FreeSWITCH Air 软电话</text>
+ </name>
+
+ <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
+ <version>Ver 0.0.1</version>
+
+ <!-- Description, displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- Copyright information. Optional -->
+ <!-- <copyright></copyright> -->
+
+ <!-- Settings for the application's initial window. Required. -->
+ <initialWindow>
+ <!-- The main SWF or HTML file of the application. Required. -->
+ <!-- Note: In Flex Builder, the SWF reference is set automatically. -->
+ <content>fsair.swf</content>
+
+ <!-- The title of the main window. Optional. -->
+ <!-- <title></title> -->
+
+ <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
+ <systemChrome>none</systemChrome>
+
+ <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
+ <transparent>true</transparent>
+
+ <!-- Whether the window is initially visible. Optional. Default false. -->
+ <!-- <visible></visible> -->
+
+ <!-- Whether the user can minimize the window. Optional. Default true. -->
+ <!-- <minimizable></minimizable> -->
+
+ <!-- Whether the user can maximize the window. Optional. Default true. -->
+ <!-- <maximizable></maximizable> -->
+
+ <!-- Whether the user can resize the window. Optional. Default true. -->
+ <resizable>false</resizable>
+
+ <!-- The window's initial width. Optional. -->
+ <width>400</width>
+
+ <!-- The window's initial height. Optional. -->
+ <height>460</height>
+
+ <!-- The window's initial x position. Optional. -->
+ <!-- <x></x> -->
+
+ <!-- The window's initial y position. Optional. -->
+ <!-- <y></y> -->
+
+ <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
+ <!-- <minSize></minSize> -->
+
+ <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
+ <!-- <maxSize></maxSize> -->
+ </initialWindow>
+
+ <!-- The subpath of the standard default installation location to use. Optional. -->
+ <!-- <installFolder></installFolder> -->
+
+ <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
+ <!-- <programMenuFolder></programMenuFolder> -->
+
+ <!-- The icon the system uses for the application. For at least one resolution,
+ specify the path to a PNG file included in the AIR package. Optional. -->
+ <icon>
+ <image16x16>icons/fsair_16.png</image16x16>
+ <image32x32>icons/fsair_32.png</image32x32>
+ <!--<image48x48></image48x48>
+ <image128x128></image128x128>-->
+ </icon>
+
+ <!-- Whether the application handles the update when a user double-clicks an update version
+ of the AIR file (true), or the default AIR application installer handles the update (false).
+ Optional. Default false. -->
+ <!-- <customUpdateUI></customUpdateUI> -->
+
+ <!-- Whether the application can be launched when the user clicks a link in a web browser.
+ Optional. Default false. -->
+ <!-- <allowBrowserInvocation></allowBrowserInvocation> -->
+
+ <!-- Listing of file types for which the application can register. Optional. -->
+ <!-- <fileTypes> -->
+
+ <!-- Defines one file type. Optional. -->
+ <!-- <fileType> -->
+
+ <!-- The name that the system displays for the registered file type. Required. -->
+ <!-- <name></name> -->
+
+ <!-- The extension to register. Required. -->
+ <!-- <extension></extension> -->
+
+ <!-- The description of the file type. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- The MIME content type. -->
+ <!-- <contentType></contentType> -->
+
+ <!-- The icon to display for the file type. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- </fileType> -->
+ <!-- </fileTypes> -->
+
+</application>
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair.swf
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair.swf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair_16.png
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair_16.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair_32.png
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/bin-debug/fsair_32.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/ringWin-app.xml (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/bin-debug/ringWin-app.xml (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/bin-debug/ringWin-app.xml 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://ns.adobe.com/air/application/1.5">
+
+<!-- Adobe AIR Application Descriptor File Template.
+
+ Specifies parameters for identifying, installing, and launching AIR applications.
+
+ xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/1.5
+ The last segment of the namespace specifies the version
+ of the AIR runtime required for this application to run.
+
+ minimumPatchLevel - The minimum patch level of the AIR runtime required to run
+ the application. Optional.
+-->
+
+ <!-- The application identifier string, unique to this application. Required. -->
+ <id>com.fsair.ringWin</id>
+
+ <!-- Used as the filename for the application. Required. -->
+ <filename>ringWin</filename>
+
+ <!-- The name that is displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <name>ringWin</name>
+
+ <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
+ <version>v1</version>
+
+ <!-- Description, displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- Copyright information. Optional -->
+ <!-- <copyright></copyright> -->
+
+ <!-- Settings for the application's initial window. Required. -->
+ <initialWindow>
+ <!-- The main SWF or HTML file of the application. Required. -->
+ <!-- Note: In Flex Builder, the SWF reference is set automatically. -->
+ <content>ringWin.swf</content>
+
+ <!-- The title of the main window. Optional. -->
+ <!-- <title></title> -->
+
+ <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
+ <!-- <systemChrome></systemChrome> -->
+
+ <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
+ <!-- <transparent></transparent> -->
+
+ <!-- Whether the window is initially visible. Optional. Default false. -->
+ <!-- <visible></visible> -->
+
+ <!-- Whether the user can minimize the window. Optional. Default true. -->
+ <!-- <minimizable></minimizable> -->
+
+ <!-- Whether the user can maximize the window. Optional. Default true. -->
+ <!-- <maximizable></maximizable> -->
+
+ <!-- Whether the user can resize the window. Optional. Default true. -->
+ <!-- <resizable></resizable> -->
+
+ <!-- The window's initial width. Optional. -->
+ <!-- <width></width> -->
+
+ <!-- The window's initial height. Optional. -->
+ <!-- <height></height> -->
+
+ <!-- The window's initial x position. Optional. -->
+ <!-- <x></x> -->
+
+ <!-- The window's initial y position. Optional. -->
+ <!-- <y></y> -->
+
+ <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
+ <!-- <minSize></minSize> -->
+
+ <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
+ <!-- <maxSize></maxSize> -->
+ </initialWindow>
+
+ <!-- The subpath of the standard default installation location to use. Optional. -->
+ <!-- <installFolder></installFolder> -->
+
+ <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
+ <!-- <programMenuFolder></programMenuFolder> -->
+
+ <!-- The icon the system uses for the application. For at least one resolution,
+ specify the path to a PNG file included in the AIR package. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- Whether the application handles the update when a user double-clicks an update version
+ of the AIR file (true), or the default AIR application installer handles the update (false).
+ Optional. Default false. -->
+ <!-- <customUpdateUI></customUpdateUI> -->
+
+ <!-- Whether the application can be launched when the user clicks a link in a web browser.
+ Optional. Default false. -->
+ <!-- <allowBrowserInvocation></allowBrowserInvocation> -->
+
+ <!-- Listing of file types for which the application can register. Optional. -->
+ <!-- <fileTypes> -->
+
+ <!-- Defines one file type. Optional. -->
+ <!-- <fileType> -->
+
+ <!-- The name that the system displays for the registered file type. Required. -->
+ <!-- <name></name> -->
+
+ <!-- The extension to register. Required. -->
+ <!-- <extension></extension> -->
+
+ <!-- The description of the file type. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- The MIME content type. -->
+ <!-- <contentType></contentType> -->
+
+ <!-- The icon to display for the file type. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- </fileType> -->
+ <!-- </fileTypes> -->
+
+</application>
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/ringWin.swf
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/bin-debug/ringWin.swf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/ring_win-app.xml (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/bin-debug/ring_win-app.xml (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/bin-debug/ring_win-app.xml 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://ns.adobe.com/air/application/1.5">
+
+<!-- Adobe AIR Application Descriptor File Template.
+
+ Specifies parameters for identifying, installing, and launching AIR applications.
+
+ xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/1.5
+ The last segment of the namespace specifies the version
+ of the AIR runtime required for this application to run.
+
+ minimumPatchLevel - The minimum patch level of the AIR runtime required to run
+ the application. Optional.
+-->
+
+ <!-- The application identifier string, unique to this application. Required. -->
+ <id>com.ring-win</id>
+
+ <!-- Used as the filename for the application. Required. -->
+ <filename>ring_win</filename>
+
+ <!-- The name that is displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <name>ring_win</name>
+
+ <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
+ <version>v1</version>
+
+ <!-- Description, displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- Copyright information. Optional -->
+ <!-- <copyright></copyright> -->
+
+ <!-- Settings for the application's initial window. Required. -->
+ <initialWindow>
+ <!-- The main SWF or HTML file of the application. Required. -->
+ <!-- Note: In Flex Builder, the SWF reference is set automatically. -->
+ <content>ring_win.swf</content>
+
+ <!-- The title of the main window. Optional. -->
+ <!-- <title></title> -->
+
+ <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
+ <!-- <systemChrome></systemChrome> -->
+
+ <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
+ <!-- <transparent></transparent> -->
+
+ <!-- Whether the window is initially visible. Optional. Default false. -->
+ <!-- <visible></visible> -->
+
+ <!-- Whether the user can minimize the window. Optional. Default true. -->
+ <!-- <minimizable></minimizable> -->
+
+ <!-- Whether the user can maximize the window. Optional. Default true. -->
+ <!-- <maximizable></maximizable> -->
+
+ <!-- Whether the user can resize the window. Optional. Default true. -->
+ <!-- <resizable></resizable> -->
+
+ <!-- The window's initial width. Optional. -->
+ <!-- <width></width> -->
+
+ <!-- The window's initial height. Optional. -->
+ <!-- <height></height> -->
+
+ <!-- The window's initial x position. Optional. -->
+ <!-- <x></x> -->
+
+ <!-- The window's initial y position. Optional. -->
+ <!-- <y></y> -->
+
+ <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
+ <!-- <minSize></minSize> -->
+
+ <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
+ <!-- <maxSize></maxSize> -->
+ </initialWindow>
+
+ <!-- The subpath of the standard default installation location to use. Optional. -->
+ <!-- <installFolder></installFolder> -->
+
+ <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
+ <!-- <programMenuFolder></programMenuFolder> -->
+
+ <!-- The icon the system uses for the application. For at least one resolution,
+ specify the path to a PNG file included in the AIR package. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- Whether the application handles the update when a user double-clicks an update version
+ of the AIR file (true), or the default AIR application installer handles the update (false).
+ Optional. Default false. -->
+ <!-- <customUpdateUI></customUpdateUI> -->
+
+ <!-- Whether the application can be launched when the user clicks a link in a web browser.
+ Optional. Default false. -->
+ <!-- <allowBrowserInvocation></allowBrowserInvocation> -->
+
+ <!-- Listing of file types for which the application can register. Optional. -->
+ <!-- <fileTypes> -->
+
+ <!-- Defines one file type. Optional. -->
+ <!-- <fileType> -->
+
+ <!-- The name that the system displays for the registered file type. Required. -->
+ <!-- <name></name> -->
+
+ <!-- The extension to register. Required. -->
+ <!-- <extension></extension> -->
+
+ <!-- The description of the file type. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- The MIME content type. -->
+ <!-- <contentType></contentType> -->
+
+ <!-- The icon to display for the file type. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- </fileType> -->
+ <!-- </fileTypes> -->
+
+</application>
Added: freeswitch/trunk/contrib/seven/fsair/bin-debug/ring_win.swf
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/bin-debug/ring_win.swf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/icons/fsair_16.png
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/icons/fsair_16.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/icons/fsair_32.png
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/icons/fsair_32.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/src/MessageWindow.mxml (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/src/MessageWindow.mxml (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/src/MessageWindow.mxml 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="70">
+ <mx:Label x="39" y="19" text="Incoming Call ..." id="MessageLabel" width="220"/>
+ <mx:Button x="71" y="36" label="Accept"/>
+ <mx:Button x="217" y="36" label="Reject"/>
+
+
+</mx:Window>
Added: freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/XML/ESL_event.as (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/XML/ESL_event.as (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/XML/ESL_event.as 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,55 @@
+// ActionScript file
+
+
+package com.FreeSWITCH.XML {
+ import flash.errors.*;
+ import flash.events.*;
+ import flash.utils.Dictionary;
+
+ public class ESL_event extends Object
+ {
+ private var xml:XML;
+ private var plain:Dictionary;
+ private var type:String;
+
+
+ public function ESL_event(event_type:String, str:String="<xml></xml>"):void{
+ type = event_type;
+
+ if (type == "xml") {
+ xml = new XML(str);
+ } else {
+ plain = new Dictionary;
+ for each( var line:String in str.split("\n") ) {
+ var a:Array = line.split(": ");
+ plain[a[0]] = a[1];
+ }
+ }
+ }
+
+ public function toString():String {
+ if (type == "xml" ) {
+ return xml.toString();
+ } else {
+ return plain.toString();
+ }
+ }
+
+ public function event_name():String{
+ return get_value("Event-Name");
+ }
+
+ public function event_subclass():String{
+ return get_value("Event-Subclass");
+ }
+
+ public function get_value(element:String):String{
+ if ( type == "xml" ) {
+ return unescape(xml.headers.elements(element));
+ } else {
+ return unescape(plain[element]);
+ }
+ }
+ }
+
+}
Added: freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/socket/ESL.as (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/socket/ESL.as (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/socket/ESL.as 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,153 @@
+// ActionScript file
+
+
+package com.FreeSWITCH.socket {
+ import com.FreeSWITCH.XML.ESL_event;
+
+ import flash.errors.*;
+ import flash.events.*;
+ import flash.net.Socket;
+ import flash.utils.ByteArray;
+ import flash.utils.Dictionary;
+
+
+ public class ESL extends Socket
+ {
+
+ private var last_data:String;
+
+ private var event_callback:Dictionary = new Dictionary();
+ private var api_callback:Function;
+ private var command_callback:Function;
+ private var esl_password:String;
+
+ public function ESL(password:String = "ClueCon"):void {
+ trace("init");
+ esl_password = password;
+ addEventListener(ProgressEvent.SOCKET_DATA, dataHandler);
+ }
+
+ public function addEventCallback(key:String, func:Function):void{
+ event_callback[key] = func;
+ }
+
+ public function dataHandler(event:ProgressEvent):void {
+
+ var str:String = readUTFBytes(event.bytesLoaded);
+ var header:ESL_header;
+ var body:String;
+
+ var head_end:int;
+
+ if (last_data != null) {
+ str = last_data + str;
+ last_data = null;
+ }
+
+ while (str != null && str.length > 0) {
+
+ head_end = str.indexOf("\n\n");
+ if (head_end < 0) {
+ last_data = str;
+ break;
+ }
+
+ header = new ESL_header(str.substring(0, head_end));
+ body = str.substr(head_end + 2, header.content_length());
+
+ if (body.length < header.content_length() ) {
+ last_data = str;
+ trace("last_date: " + last_data);
+ break;
+ }
+
+ str = str.substr(head_end + 2 + header.content_length() );
+//trace(str);
+// trace(header.content_type());
+
+ if(header.content_type() == "auth/request") {
+ auth(esl_password);
+ }else if(header.content_type() == "api/response") {
+
+ if (api_callback != null) {
+ api_callback(body);
+ api_callback = null;
+ }
+ }else if(header.content_type() == "command/reply") {
+ if (command_callback != null) {
+ command_callback(header.getHeader("Reply-Text"));
+ command_callback = null;
+ }
+ }else if(header.content_type().indexOf("text/event-") >= 0) {
+
+ var event_type:String = header.content_type() == "text/event-xml" ? "xml" : "plain";
+
+ var eslev:ESL_event = new ESL_event(event_type, body);
+
+ for (var key:Object in event_callback)
+ {
+ trace(key + ", " + event_callback[key]);
+
+ var event_name:String, event_subclass:String;
+ var a:Array = key.toString().split('|');
+ event_name = a[0];
+ event_subclass = a[1];
+
+ trace("event_name: " + eslev.event_name());
+ trace("event_subclass: " + eslev.event_subclass());
+
+ if ( eslev.event_name() == event_name &&
+ (event_subclass == '-' || eslev.event_subclass() == event_subclass)) {
+ event_callback[key](eslev);
+ }
+
+ }
+
+ }
+ }
+
+ }
+
+
+ public function esl_send(str:String, callback:Function=null):void {
+ var ba:ByteArray = new ByteArray();
+ ba.writeMultiByte(str + "\n\n", "UTF-8");
+
+ command_callback = callback;
+ writeBytes(ba);
+ flush();
+ }
+
+ public function auth(pass:String, callback:Function=null):void {
+ esl_send("Auth " + pass, callback);
+ }
+
+ public function esl_event(events:String, type:String="plain"):void {
+ esl_send("event " + type + " " + events);
+ }
+
+ public function esl_filter(header:String, value:String, del:String=""):void {
+ esl_send("filter " + del + " header " + "value");
+ }
+
+ public function api(str:String, callback:Function=null):void {
+ api_callback = callback;
+ esl_send("api " + str);
+ }
+
+ public function bgapi(str:String, callback:Function=null):void{
+ api_callback = callback;
+ esl_send("bgapi " + str);
+ }
+
+ public function execute(app:String, app_arg:String, uuid:String):void{
+ var str:String = "sendmsg " + uuid + "\n\n";
+ str += "call-command: execute";
+ str += "execute-app-name: " + app;
+ str += "execute-app-arg: " + app_arg;
+
+ esl_send(str);
+ }
+
+ }
+}
Added: freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/socket/ESL_header.as (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/socket/ESL_header.as (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/src/com/FreeSWITCH/socket/ESL_header.as 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,37 @@
+// ActionScript file
+
+package com.FreeSWITCH.socket {
+ import flash.utils.Dictionary;
+
+ public class ESL_header
+ {
+
+ private var header:Dictionary = new Dictionary;
+
+ public function ESL_header(str:String):void {
+
+ for each( var line:String in str.split("\n") ) {
+ var a:Array = line.split(": ");
+ if(a.length != 2) {
+ continue;
+ }
+ header[a[0]] = a[1];
+ }
+
+ }
+
+ public function content_type():String {
+ return header["Content-Type"];
+ }
+
+ public function content_length():int {
+ return (int)(header["Content-Length"]) ;
+ }
+
+ public function getHeader(key:String):String {
+ return header[key];
+ }
+
+ }
+
+}
\ No newline at end of file
Added: freeswitch/trunk/contrib/seven/fsair/src/fsair-app.xml (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/src/fsair-app.xml (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/src/fsair-app.xml 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://ns.adobe.com/air/application/1.5">
+
+<!-- Adobe AIR Application Descriptor File Template.
+
+ Specifies parameters for identifying, installing, and launching AIR applications.
+
+ xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/1.5
+ The last segment of the namespace specifies the version
+ of the AIR runtime required for this application to run.
+
+ minimumPatchLevel - The minimum patch level of the AIR runtime required to run
+ the application. Optional.
+-->
+
+ <!-- The application identifier string, unique to this application. Required. -->
+ <id>fsair</id>
+
+ <!-- Used as the filename for the application. Required. -->
+ <filename>fsair</filename>
+
+ <!-- The name that is displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <name>
+ <text xml:lang="en">FreeSWITCH Air SoftPhone</text>
+ <text xml:lang="fr">FreeSWITCH Air SoftPhone</text>
+ <text xml:lang="zh">FreeSWITCH Air 软电话</text>
+ </name>
+
+ <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
+ <version>Ver 0.0.1</version>
+
+ <!-- Description, displayed in the AIR application installer.
+ May have multiple values for each language. See samples or xsd schema file. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- Copyright information. Optional -->
+ <!-- <copyright></copyright> -->
+
+ <!-- Settings for the application's initial window. Required. -->
+ <initialWindow>
+ <!-- The main SWF or HTML file of the application. Required. -->
+ <!-- Note: In Flex Builder, the SWF reference is set automatically. -->
+ <content>[This value will be overwritten by Flex Builder in the output app.xml]</content>
+
+ <!-- The title of the main window. Optional. -->
+ <!-- <title></title> -->
+
+ <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
+ <systemChrome>none</systemChrome>
+
+ <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
+ <transparent>true</transparent>
+
+ <!-- Whether the window is initially visible. Optional. Default false. -->
+ <!-- <visible></visible> -->
+
+ <!-- Whether the user can minimize the window. Optional. Default true. -->
+ <!-- <minimizable></minimizable> -->
+
+ <!-- Whether the user can maximize the window. Optional. Default true. -->
+ <!-- <maximizable></maximizable> -->
+
+ <!-- Whether the user can resize the window. Optional. Default true. -->
+ <resizable>false</resizable>
+
+ <!-- The window's initial width. Optional. -->
+ <width>400</width>
+
+ <!-- The window's initial height. Optional. -->
+ <height>460</height>
+
+ <!-- The window's initial x position. Optional. -->
+ <!-- <x></x> -->
+
+ <!-- The window's initial y position. Optional. -->
+ <!-- <y></y> -->
+
+ <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
+ <!-- <minSize></minSize> -->
+
+ <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
+ <!-- <maxSize></maxSize> -->
+ </initialWindow>
+
+ <!-- The subpath of the standard default installation location to use. Optional. -->
+ <!-- <installFolder></installFolder> -->
+
+ <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
+ <!-- <programMenuFolder></programMenuFolder> -->
+
+ <!-- The icon the system uses for the application. For at least one resolution,
+ specify the path to a PNG file included in the AIR package. Optional. -->
+ <icon>
+ <image16x16>icons/fsair_16.png</image16x16>
+ <image32x32>icons/fsair_32.png</image32x32>
+ <!--<image48x48></image48x48>
+ <image128x128></image128x128>-->
+ </icon>
+
+ <!-- Whether the application handles the update when a user double-clicks an update version
+ of the AIR file (true), or the default AIR application installer handles the update (false).
+ Optional. Default false. -->
+ <!-- <customUpdateUI></customUpdateUI> -->
+
+ <!-- Whether the application can be launched when the user clicks a link in a web browser.
+ Optional. Default false. -->
+ <!-- <allowBrowserInvocation></allowBrowserInvocation> -->
+
+ <!-- Listing of file types for which the application can register. Optional. -->
+ <!-- <fileTypes> -->
+
+ <!-- Defines one file type. Optional. -->
+ <!-- <fileType> -->
+
+ <!-- The name that the system displays for the registered file type. Required. -->
+ <!-- <name></name> -->
+
+ <!-- The extension to register. Required. -->
+ <!-- <extension></extension> -->
+
+ <!-- The description of the file type. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- The MIME content type. -->
+ <!-- <contentType></contentType> -->
+
+ <!-- The icon to display for the file type. Optional. -->
+ <!-- <icon>
+ <image16x16></image16x16>
+ <image32x32></image32x32>
+ <image48x48></image48x48>
+ <image128x128></image128x128>
+ </icon> -->
+
+ <!-- </fileType> -->
+ <!-- </fileTypes> -->
+
+</application>
Added: freeswitch/trunk/contrib/seven/fsair/src/fsair.as (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/src/fsair.as (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/src/fsair.as 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,306 @@
+
+ import com.FreeSWITCH.XML.ESL_event;
+ import com.FreeSWITCH.socket.ESL;
+
+ import flash.events.*;
+ import flash.utils.Dictionary;
+ import flash.utils.Timer;
+
+ var uuids:Dictionary = new Dictionary();
+
+ var esl:ESL;
+
+ var ring_win:MessageWindow = new MessageWindow();
+
+ function initApp():void {
+ trace(NativeApplication.nativeApplication.runtimeVersion);
+ ringBox.visible = false;
+ getSettings();
+ esl = new ESL(esl_pass.text);
+ connect();
+
+ }
+
+ function connect():void {
+ try
+ {
+ if (esl.connected ) {
+ msg("Already Connected");
+ return;
+ }
+
+ esl.connect(esl_addr.text, (int)(esl_port.text));
+ esl.addEventListener(Event.CONNECT, connectHandler);
+ esl.addEventListener(Event.CLOSE, closeHandler);
+ esl.addEventListener(ErrorEvent.ERROR, errorHandler);
+ esl.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
+// esl.addListener(ProgressEvent.SOCKET_DATA, dataHandler);
+ esl.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
+
+ esl.addEventCallback("CUSTOM|portaudio::ringing", onRing);
+ esl.addEventCallback("CHANNEL_HANGUP|-", onHangup);
+
+ var timer:Timer = new Timer(2000);
+ timer.addEventListener(TimerEvent.TIMER, post_connect);
+ timer.start();
+ msg("timer started");
+ }
+
+ catch (error:Error)
+ {
+ msg(error.message + "\n");
+ esl.close();
+ }
+
+ }
+
+ function post_connect(event:TimerEvent):void {
+ event.target.stop();
+ msg("timer stoped");
+ initDevList();
+// esl.esl_event("ALL");
+ esl.esl_event("CHANNEL_HANGUP CUSTOM portaudio::ringing");
+
+ }
+
+ function setTitle(title:String):void {
+ this.title = "FreeSWITCH Air - [" + title + ']';
+ }
+
+ function msg(message:String):void
+ {
+ logBox.text += message + "\n";
+ logBox.verticalScrollPosition = logBox.maxVerticalScrollPosition;
+ }
+
+ function clearLogs():void {
+ logBox.text = logBox.text.substr(-1, 40);
+ }
+
+ function connectHandler(event:Event):void {
+ setTitle('Connected');
+ msg("Connected: " + esl_addr.text + ":" + esl_port.text);
+ }
+ function closeHandler(event:Event):void {
+ //msg(event.type + ' ' + event.toString());
+ setTitle('Disconnected');
+ }
+ function errorHandler(event:Event):void {
+ msg(event.type + ' ' + event.toString());
+ setTitle('Error');
+ }
+ function ioErrorHandler(event:IOErrorEvent):void {
+ msg(event.type + ' ' + event.toString());
+ setTitle('IOError');
+ }
+ function securityErrorHandler(event:SecurityErrorEvent):void {
+ msg(event.type + ' ' + event.toString());
+ setTitle('SecurityError');
+ }
+
+ function onRing(eslev:ESL_event):void {
+
+ var uuid:String = eslev.get_value("Unique-ID");
+ var caller_id_name:String = eslev.get_value("Caller-Caller-ID-Name");
+ var caller_id_number:String = eslev.get_value("Caller-Caller-ID-Number");
+ var call_id:String = eslev.get_value("call_id");
+
+ uuids[uuid] = call_id;
+
+ callerID.text = caller_id_name + ' <' + caller_id_number + '>';
+ ringBox.visible = true;
+
+
+ msg('Incoming call: ' + caller_id_name + '<' + caller_id_number + '>');
+ msg(uuid);
+
+ //how to make this work?
+ //this.stage.nativeWindow.icon.bounce();
+
+// NativeApplication.nativeApplication.icon.bounce(NotificationType.CRITICAL)
+ stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
+
+ //show a ring window?
+// ring_win.MessageLabel.text = "Incoming Call";
+// ring_win.open();
+
+ }
+
+ function onHangup(eslev:ESL_event):void {
+
+ var uuid:String = eslev.get_value("Unique-ID");
+
+ if (uuids[uuid] != null) {
+ msg("hangup");
+ callerID.text = "Hangup";
+ delete uuids[uuid];
+ }
+
+ }
+
+ function sendDtmf(dtmf:String):void {
+ esl.api("pa dtmf " + dtmf);
+ }
+
+ function switchPA():void {
+ esl.api("pa switch");
+ }
+
+ function sendCommand():void
+ {
+
+ msg('>>> ' + command.text);
+
+ if (command.text.substr(0,1) == '/') {
+ esl.esl_send(command.text.substr(1), commandCallback);
+ } else {
+ esl.api(command.text, commandCallback)
+ }
+
+ }
+
+ function commandCallback(data:String):void {
+ msg(data);
+ }
+
+ function answer():void{
+ esl.api("pa answer");
+ ringBox.visible = false;
+ }
+
+ function hangup():void{
+ esl.api("pa hangup");
+ ringBox.visible = false;
+ }
+
+ function call():void{
+ esl.api("pa call " + number.text, updateUUID);
+ msg("Calling " + number.text);
+
+ if( number.dataProvider.length < 1) {
+ number.dataProvider.addItemAt(number.text, 0);
+ } else if (number.dataProvider.getItemAt(0) != number.text ){
+ number.dataProvider.addItemAt(number.text, 0);
+ }
+
+ }
+
+ function updateUUID(data:String):void {
+
+ var a:Array = new Array();
+ a = data.split(":");
+
+ trace(data);
+
+ if (a.length == 3 && a[0] == "SUCCESS") {
+ uuids[a[2].substr(0, a[2].length - 1) ] = a[1];
+ }
+
+ }
+
+ function initDevList():void {
+ esl.api("pa devlist xml", devlistCallback);
+ }
+
+ function reloadDevList():void {
+// esl.api("pa rescan");
+ esl.api("pa devlist xml", devlistCallback);
+ }
+
+ function devlistCallback(data:String):void {
+// msg(data);
+
+ var xml:XML = new XML(data);
+
+ inDev.dataProvider.removeAll();
+ outDev.dataProvider.removeAll();
+ ringDev.dataProvider.removeAll();
+
+ for each (var d:XML in xml.devices.device){
+
+ if (d.@inputs > 0) {
+ inDev.dataProvider.addItem({ label: d.@name, value:d.@id } );
+
+ }else if(d.@outputs > 0) {
+ outDev.dataProvider.addItem({ label: d.@name, value:d.@id } );
+ ringDev.dataProvider.addItem({ label: d.@name, value:d.@id } );
+
+ }
+
+ if (d.@id == xml.bindings.input.@device) {
+ inDev.selectedIndex = inDev.dataProvider.length - 1;
+ } else if (d.@id == xml.bindings.output.@device) {
+ outDev.selectedIndex = outDev.dataProvider.length - 1;
+ if (d.@id == xml.bindings.ring.@device) {
+ ringDev.selectedIndex = ringDev.dataProvider.length - 1;
+
+ }
+ }
+
+
+
+ }
+
+ }
+
+ function setPaDev():void{
+ esl.api("pa indev #" + inDev.selectedItem.value);
+ esl.api("pa outdev #" + outDev.selectedItem.value);
+ esl.api("pa ringdev #" + ringDev.selectedItem.value);
+ }
+
+ function unloadPA():void {
+ esl.api("unload mod_portaudio");
+ }
+
+ function loadPA():void {
+ esl.api("load mod_portaudio");
+ }
+
+ function loopPA():void {
+ esl.api("pa looptest");
+ }
+
+ function toggleAdvanced():void {
+ if (this.width == 260 ) {
+ this.width = 620;
+ advancedButton.label = "Advanced <<<";
+ } else {
+ this.width = 260;
+ advancedButton.label = "Advanced >>>";
+ }
+
+
+ }
+
+ function _save_settings(key:String, val:String):void {
+ var bytes:ByteArray = new ByteArray();
+ bytes.writeUTFBytes(val);
+ EncryptedLocalStore.setItem(key, bytes);
+ }
+ function _get_settings(key:String):String {
+ var storedValue:ByteArray = EncryptedLocalStore.getItem(key);
+
+ if (storedValue == null) {
+ return null;
+ }
+
+ return storedValue.readUTFBytes(storedValue.length);
+ }
+
+ function saveSettings():void {
+
+ _save_settings("freeswitch_install_path", freeswitch_install_path.text);
+ _save_settings("esl_addr", esl_addr.text);
+ _save_settings("esl_port", esl_port.text);
+ _save_settings("esl_pass", esl_pass.text);
+
+ }
+
+ function getSettings():void {
+ freeswitch_install_path.text = _get_settings("freeswitch_install_path") || "/usr/local/freeswitch";
+ esl_addr.text = _get_settings("esl_addr") || "127.0.0.1";
+ esl_port.text = _get_settings("esl_port") || "8021";
+ esl_pass.text = _get_settings("esl_pass") || "ClueCon";
+ }
+
\ No newline at end of file
Added: freeswitch/trunk/contrib/seven/fsair/src/fsair.mxml (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/src/fsair.mxml (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/src/fsair.mxml 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
+ layout="absolute" title="FreeSWITCH Air" height="408" width="622"
+ creationComplete = "initApp()">
+
+ <mx:Script source="fsair.as"/>
+
+ <mx:Style>
+ WindowedApplication
+ {
+ background-color:"0x999999";
+ background-alpha:"0.5";
+ }
+ </mx:Style>
+ <mx:Label text="Hello World" enabled="true" horizontalCenter="-232" verticalCenter="14" id="label1"/>
+ <mx:Button x="137" y="10" label="Advanced <<<" click="toggleAdvanced()" width="114" id="advancedButton"/>
+ <mx:Panel x="0" y="40" width="251" height="219" layout="absolute" color="#3232C0" barColor="#3FB92B" headerHeight="10" headerColors="2">
+ <mx:Button x="176" y="135" label="Call" click="call()" width="51" color="#00FF00"/>
+ <mx:Button x="176" y="105" label="Hup" click="hangup()" id="btnHangup" width="50" color="#FF0000"/>
+ <mx:Button x="11.5" y="8" label="1" width="30" height="24" click="sendDtmf('1')"/>
+ <mx:Button x="49.5" y="8" label="2" width="30" height="24" click="sendDtmf('2')"/>
+ <mx:Button x="87.5" y="8" label="3" width="30" height="24" click="sendDtmf('3')"/>
+ <mx:Button x="11.5" y="40" label="4" width="30" height="24" click="sendDtmf('4')"/>
+ <mx:Button x="49.5" y="40" label="5" width="30" height="24" click="sendDtmf('5')"/>
+ <mx:Button x="87.5" y="72" label="9" width="30" height="24" click="sendDtmf('9')"/>
+ <mx:Button x="49.5" y="72" label="8" width="30" height="24" click="sendDtmf('8')"/>
+ <mx:Button x="11.5" y="72" label="7" width="30" height="24" click="sendDtmf('7')"/>
+ <mx:Button x="87.5" y="40" label="6" width="30" height="24" click="sendDtmf('6')"/>
+ <mx:Button x="87.5" y="104" label="#" width="30" height="24" click="sendDtmf('#')"/>
+ <mx:Button x="125.5" y="9" label="A" width="30" height="24" click="sendDtmf('A')"/>
+ <mx:Button x="125.5" y="73" label="C" width="30" height="24" click="sendDtmf('C')"/>
+ <mx:Button x="125.5" y="41" label="B" width="30" height="24" click="sendDtmf('B')"/>
+ <mx:Button x="125.5" y="104" label="D" width="30" height="24" click="sendDtmf('D')"/>
+ <mx:Button x="49.5" y="104" label="0" width="30" height="24" click="sendDtmf('0')"/>
+ <mx:Button x="11.5" y="104" label="*" width="30" height="24" click="sendDtmf('*')"/>
+ <mx:Button x="176" y="74" label="sw" click="switchPA()" width="51"/>
+ <mx:ComboBox x="10" y="135" editable="true" width="145.5" id="number"></mx:ComboBox>
+ <mx:Label x="10" y="169" text="_" id="callerID"/>
+ </mx:Panel>
+ <mx:TabNavigator x="259" y="10" width="352" height="311" id="tn1" creationPolicy="all">
+ <mx:Canvas label="Devices" width="100%" height="100%">
+ <mx:Button x="23" y="128" label="Get" click="reloadDevList()"/>
+ <mx:Button x="68" y="128" label="Set" click="setPaDev()"/>
+ <mx:Button x="182" y="128" label="UnLoad" click="unloadPA()"/>
+ <mx:Button x="248" y="128" label="Load" click="loadPA()"/>
+ <mx:Button x="112" y="127" label="Loop" click="loopPA()" width="53" height="23"/>
+ <mx:ComboBox x="95" y="28" id="inDev" width="206"></mx:ComboBox>
+ <mx:ComboBox x="95" y="54" id="outDev" width="206"></mx:ComboBox>
+ <mx:ComboBox x="95" y="84" id="ringDev" width="206"></mx:ComboBox>
+ <mx:Label x="23" y="30" text="Sound In"/>
+ <mx:Label x="23" y="56" text="Sound Out"/>
+ <mx:Label x="23" y="86" text="Ring Dev"/>
+ </mx:Canvas>
+ <mx:Canvas label="Settings" width="100%" height="100%">
+ <mx:Label x="10" y="24" text="FreeSWITCH Install Path" width="169"/>
+ <mx:TextInput x="10" y="50" width="315" text="/usr/local/freeswitch" id="freeswitch_install_path"/>
+ <mx:TextInput x="10" y="106" width="107" text="127.0.0.1" id="esl_addr"/>
+ <mx:TextInput x="125" y="106" width="42" text="8021" id="esl_port"/>
+ <mx:Label x="10" y="80" text="Event Socket Addr" width="120"/>
+ <mx:Label x="125" y="80" text="Port" width="32"/>
+ <mx:Button x="254" y="106" label="connect" click="connect()"/>
+ <mx:Button x="271" y="182" label="Save" click="saveSettings()"/>
+ <mx:Label x="175" y="80" text="Password" width="58"/>
+ <mx:TextInput x="175" y="106" width="71" text="ClueCon" id="esl_pass"/>
+
+ </mx:Canvas>
+ <mx:Panel label="Logs" width="100%" height="100%" layout="absolute">
+ <mx:TextArea width="326" height="196" id="logBox" x="0" y="2"/>
+ <mx:TextInput width="246" id="command" y="206"/>
+ <mx:Button label="Send" click="sendCommand()" x="254" y="206"/>
+ <mx:Button label="Clear" click="clearLogs" x="254" y="-28"/>
+ </mx:Panel>
+
+ </mx:TabNavigator>
+ <mx:Panel x="0" y="258" width="251" height="63" layout="absolute" headerHeight="5" id="ringBox">
+ <mx:Button x="10" y="11" label="Answer" click="answer()" id="btnAnswer" color="#FFFFFF" fillColors="#00FF00"/>
+ <mx:Button x="138" y="10" label="Reject" click="hangup()" color="#FFFFFF" fillColors="#FF0000"/>
+ </mx:Panel>
+
+</mx:WindowedApplication>
Added: freeswitch/trunk/contrib/seven/fsair/tools/Makefile (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/tools/Makefile (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/tools/Makefile 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,10 @@
+all:
+ gcc -o tee2 tee2.c
+
+install: tee2
+ install tee2 /usr/local/bin
+ #install tee2 /usr/bin
+ #cp tee2 /usr/local/bin/
+
+clean:
+ rm -f tee2
Added: freeswitch/trunk/contrib/seven/fsair/tools/mm.sh (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/tools/mm.sh (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/tools/mm.sh 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+echo > /tmp/a
+echo > /tmp/b
+#tail -f /tmp/b &
+tail -f /tmp/a | nc localhost 8021 | tee2 /tmp/b | nc -l -k 8022 | tee /tmp/a
+
Property changes on: freeswitch/trunk/contrib/seven/fsair/tools/mm.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: freeswitch/trunk/contrib/seven/fsair/tools/tee2
(Binary files differ)
Property changes on: freeswitch/trunk/contrib/seven/fsair/tools/tee2
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: freeswitch/trunk/contrib/seven/fsair/tools/tee2.c (0 => 14301)
--- freeswitch/trunk/contrib/seven/fsair/tools/tee2.c (rev 0)
+++ freeswitch/trunk/contrib/seven/fsair/tools/tee2.c 2009-07-20 16:36:18 UTC (rev 14301)
@@ -0,0 +1,50 @@
+/* tee2 - read from standard input and write to standard output,
+ standard error and a file.
+ Useful when you redirect the stdout but still want to keep an eye on
+ the output. Like a B2BSocket:
+
+ $ echo > /tmp/a
+ $ echo > /tmp/b
+ $ tail -f /tmp/a | nc localhost 8021 | tee2 /tmp/b | nc -l -k 8022 | tee /tmp/a
+
+ Want to write to more than one file? Just using the UNIX art
+ $ echo blah | tee2 /tmp/1 | tee /tmp/{2,3,4,5,6}
+
+/* Author: Seven Du */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (int argc, char **argv)
+{
+ char c;
+ char *file_name;
+ FILE *file;
+ if (argc < 2) {
+ fprintf(stderr, "Usage: tee2 <file_name>\n");
+ exit(1);
+ }
+
+ file_name = argv[1];
+
+ if(! (file = fopen(file_name, "w")) ){
+ fprintf(stderr, "Error write file %s !\n", file_name);
+ exit(2);
+ }
+
+ while((c = fgetc(stdin)) != EOF) {
+ putc(c, file);
+ putc(c, stdout);
+ putc(c, stderr);
+
+ if(c == '\n') {
+ fflush(file);
+ fflush(stdout);
+ fflush(stderr);
+ }
+
+ }
+
+ fclose(file);
+ exit(0);
+}