You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2012/07/18 23:10:15 UTC

[6/7] wp7 commit: updated Media and Contact methods

updated Media and Contact methods


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/commit/4885f4a5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/tree/4885f4a5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/diff/4885f4a5

Branch: refs/heads/master
Commit: 4885f4a5a5d7dccdf60da56c8d40dfc24e1279ea
Parents: 9d7b92a
Author: Jesse MacFadyen <pu...@gmail.com>
Authored: Tue Jul 17 15:09:17 2012 -0700
Committer: Jesse MacFadyen <pu...@gmail.com>
Committed: Tue Jul 17 15:09:17 2012 -0700

----------------------------------------------------------------------
 .../standalone/cordovalib/Commands/AudioPlayer.cs  |   12 +
 .../standalone/cordovalib/Commands/Contacts.cs     |   17 +-
 templates/standalone/cordovalib/Commands/Media.cs  |  225 ++++++++-------
 3 files changed, 147 insertions(+), 107 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/blob/4885f4a5/templates/standalone/cordovalib/Commands/AudioPlayer.cs
----------------------------------------------------------------------
diff --git a/templates/standalone/cordovalib/Commands/AudioPlayer.cs b/templates/standalone/cordovalib/Commands/AudioPlayer.cs
index b08bc58..35d805c 100644
--- a/templates/standalone/cordovalib/Commands/AudioPlayer.cs
+++ b/templates/standalone/cordovalib/Commands/AudioPlayer.cs
@@ -352,6 +352,18 @@ namespace WP7CordovaClassLib.Cordova.Commands
         }
 
         /// <summary>
+        /// Set the volume of the player
+        /// </summary>
+        /// <param name="vol">volume 0.0-1.0, default value is 0.5</param>
+        public void setVolume(double vol)
+        {
+            if (this.player != null)
+            {
+                this.player.Volume = vol;
+            }
+        }
+
+        /// <summary>
         /// Pauses playing
         /// </summary>
         public void pausePlaying()

http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/blob/4885f4a5/templates/standalone/cordovalib/Commands/Contacts.cs
----------------------------------------------------------------------
diff --git a/templates/standalone/cordovalib/Commands/Contacts.cs b/templates/standalone/cordovalib/Commands/Contacts.cs
index 6e5f627..ea1f2d6 100644
--- a/templates/standalone/cordovalib/Commands/Contacts.cs
+++ b/templates/standalone/cordovalib/Commands/Contacts.cs
@@ -196,9 +196,8 @@ namespace WP7CordovaClassLib.Cordova.Commands
         // refer here for contact properties we can access: http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.savecontacttask_members%28v=VS.92%29.aspx
         public void save(string jsonContact)
         {
-
-            JSONContact contact = JSON.JsonHelper.Deserialize<JSONContact>(jsonContact);
-
+            // jsonContact is actually an array of 1 {contact}
+            JSONContact contact = JSON.JsonHelper.Deserialize<JSONContact[]>(jsonContact)[0];
 
             SaveContactTask contactTask = new SaveContactTask();
 
@@ -367,12 +366,22 @@ namespace WP7CordovaClassLib.Cordova.Commands
 
         public void remove(string id)
         {
+            // note id is wrapped in [] and always has exactly one string ...
             DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "{\"code\":" + NOT_SUPPORTED_ERROR + "}"));
         }
 
         public void search(string searchCriteria)
         {
-            ContactSearchParams searchParams = JSON.JsonHelper.Deserialize<ContactSearchParams>(searchCriteria);
+            ContactSearchParams searchParams = null;
+            try
+            {
+                searchParams = JSON.JsonHelper.Deserialize<ContactSearchParams[]>(searchCriteria)[0];
+            }
+            catch (Exception)
+            {
+                DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, INVALID_ARGUMENT_ERROR));
+                return;
+            }
 
             if (searchParams.options == null)
             {

http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/blob/4885f4a5/templates/standalone/cordovalib/Commands/Media.cs
----------------------------------------------------------------------
diff --git a/templates/standalone/cordovalib/Commands/Media.cs b/templates/standalone/cordovalib/Commands/Media.cs
index 75bf321..3f1018b 100644
--- a/templates/standalone/cordovalib/Commands/Media.cs
+++ b/templates/standalone/cordovalib/Commands/Media.cs
@@ -66,7 +66,7 @@ namespace WP7CordovaClassLib.Cordova.Commands
 
                 try
                 {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
+                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions[]>(options)[0];
                 }
                 catch (Exception)
                 {
@@ -112,7 +112,10 @@ namespace WP7CordovaClassLib.Cordova.Commands
 
                 try
                 {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
+                    string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
+                    mediaOptions = new MediaOptions();
+                    mediaOptions.Id = optionsString[0];
+                    mediaOptions.Src = optionsString[1];
                 }
                 catch (Exception)
                 {
@@ -120,24 +123,32 @@ namespace WP7CordovaClassLib.Cordova.Commands
                     return;
                 }
 
-                Deployment.Current.Dispatcher.BeginInvoke(() =>
+                if (mediaOptions != null)
                 {
-                    try
+
+                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                     {
-                        if (!Media.players.ContainsKey(mediaOptions.Id))
+                        try
                         {
-                            AudioPlayer audio = new AudioPlayer(this, mediaOptions.Id);
-                            Media.players.Add(mediaOptions.Id, audio);
-                            audio.startRecording(mediaOptions.Src);
+                            if (!Media.players.ContainsKey(mediaOptions.Id))
+                            {
+                                AudioPlayer audio = new AudioPlayer(this, mediaOptions.Id);
+                                Media.players.Add(mediaOptions.Id, audio);
+                                audio.startRecording(mediaOptions.Src);
+                            }
+                            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+                        }
+                        catch (Exception e)
+                        {
+                            DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
                         }
-                        DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
-                    }
-                    catch (Exception e)
-                    {
-                        DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
-                    }
 
-                });
+                    });
+                }
+                else
+                {
+                    DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+                }
             }
             catch (Exception e)
             {
@@ -152,27 +163,16 @@ namespace WP7CordovaClassLib.Cordova.Commands
         {
             try
             {
-                MediaOptions mediaOptions;
-
-                try
-                {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
-                }
-                catch (Exception)
-                {
-                    DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
-                    return;
-                }
-
+                string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
                 Deployment.Current.Dispatcher.BeginInvoke(() =>
                 {
                     try
                     {
-                        if (Media.players.ContainsKey(mediaOptions.Id))
+                        if (Media.players.ContainsKey(mediaId))
                         {
-                            AudioPlayer audio = Media.players[mediaOptions.Id];
+                            AudioPlayer audio = Media.players[mediaId];
                             audio.stopRecording();
-                            Media.players.Remove(mediaOptions.Id);
+                            Media.players.Remove(mediaId);
                         }
                         DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
                     }
@@ -182,9 +182,30 @@ namespace WP7CordovaClassLib.Cordova.Commands
                     }
                 });
             }
-            catch (Exception e)
+            catch (Exception)
             {
-                DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+            }
+        }
+
+        public void setVolume(string options) // id,volume
+        {
+            try
+            {
+                string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
+                string id = optionsString[0];
+                double volume = double.Parse(optionsString[1]);
+
+                if (Media.players.ContainsKey(id))
+                {
+                    AudioPlayer player = Media.players[id];
+                    player.setVolume(volume);
+                }
+            }
+            catch (Exception)
+            {
+                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, "Error parsing options into setVolume method"));
+                return;
             }
         }
 
@@ -197,7 +218,10 @@ namespace WP7CordovaClassLib.Cordova.Commands
 
                 try
                 {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
+                    string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
+                    mediaOptions = new MediaOptions();
+                    mediaOptions.Id = optionsString[0];
+                    mediaOptions.Src = optionsString[1];
                 }
                 catch (Exception)
                 {
@@ -228,7 +252,12 @@ namespace WP7CordovaClassLib.Cordova.Commands
 
                 try
                 {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
+                    string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
+                    mediaOptions = new MediaOptions();
+                    mediaOptions.Id = optionsString[0];
+                    mediaOptions.Src = optionsString[1];
+                    mediaOptions.Milliseconds = int.Parse(optionsString[2]);
+
                 }
                 catch (Exception)
                 {
@@ -281,7 +310,10 @@ namespace WP7CordovaClassLib.Cordova.Commands
 
                 try
                 {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
+                    string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
+                    mediaOptions = new MediaOptions();
+                    mediaOptions.Id = optionsString[0];
+                    mediaOptions.Milliseconds = int.Parse(optionsString[1]);
                 }
                 catch (Exception)
                 {
@@ -323,39 +355,40 @@ namespace WP7CordovaClassLib.Cordova.Commands
         public void pausePlayingAudio(string options)
         {
 
-            MediaOptions mediaOptions;
-
             try
             {
-                mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
-            }
-            catch (Exception)
-            {
-                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
-                return;
-            }
+                string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
 
-            Deployment.Current.Dispatcher.BeginInvoke(() =>
-            {
-                try
+                Deployment.Current.Dispatcher.BeginInvoke(() =>
                 {
-                    if (Media.players.ContainsKey(mediaOptions.Id))
+                    try
                     {
-                        AudioPlayer audio = Media.players[mediaOptions.Id];
-                        audio.pausePlaying();
+                        if (Media.players.ContainsKey(mediaId))
+                        {
+                            AudioPlayer audio = Media.players[mediaId];
+                            audio.pausePlaying();
+                        }
+                        else
+                        {
+                            Debug.WriteLine("ERROR: pausePlayingAudio could not find mediaPlayer for " + mediaId);
+                        }
+
+                        DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
                     }
-                    else
+                    catch (Exception e)
                     {
-                        Debug.WriteLine("ERROR: pausePlayingAudio could not find mediaPlayer for " + mediaOptions.Id);
+                        DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
                     }
+                });
+
+
+            }
+            catch (Exception)
+            {
+                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+            }
+
 
-                    DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
-                }
-                catch (Exception e)
-                {
-                    DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
-                }
-            });
         }
 
 
@@ -366,30 +399,19 @@ namespace WP7CordovaClassLib.Cordova.Commands
         {
             try
             {
-                MediaOptions mediaOptions;
-
-                try
-                {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
-                }
-                catch (Exception)
-                {
-                    DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
-                    return;
-                }
-
+                string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
                 Deployment.Current.Dispatcher.BeginInvoke(() =>
                 {
                     try
                     {
-                        if (Media.players.ContainsKey(mediaOptions.Id))
+                        if (Media.players.ContainsKey(mediaId))
                         {
-                            AudioPlayer audio = Media.players[mediaOptions.Id];
+                            AudioPlayer audio = Media.players[mediaId];
                             audio.stopPlaying();
                         }
                         else
                         {
-                            Debug.WriteLine("stopPlaying could not find mediaPlayer for " + mediaOptions.Id);
+                            Debug.WriteLine("stopPlaying could not find mediaPlayer for " + mediaId);
                         }
 
                         DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
@@ -399,12 +421,12 @@ namespace WP7CordovaClassLib.Cordova.Commands
                         DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
                     }
                 });
+
             }
-            catch (Exception e)
+            catch (Exception)
             {
-                DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
             }
-
         }
 
         /// <summary>
@@ -414,35 +436,31 @@ namespace WP7CordovaClassLib.Cordova.Commands
         {
             try
             {
-                MediaOptions mediaOptions;
-
-                try
-                {
-                    mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
-                }
-                catch (Exception)
-                {
-                    DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
-                    return;
-                }
-
-                if (Media.players.ContainsKey(mediaOptions.Id))
+                string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+                Deployment.Current.Dispatcher.BeginInvoke(() =>
                 {
-                    AudioPlayer audio = Media.players[mediaOptions.Id];
-                    Deployment.Current.Dispatcher.BeginInvoke(() =>
+                    try
                     {
-                        DispatchCommandResult(new PluginResult(PluginResult.Status.OK, audio.getCurrentPosition()));
-                    });
-                    return;
-                }
-                else
-                {
-                    DispatchCommandResult(new PluginResult(PluginResult.Status.OK, -1));
-                }
+                        if (Media.players.ContainsKey(mediaId))
+                        {
+                            AudioPlayer audio = Media.players[mediaId];
+                            DispatchCommandResult(new PluginResult(PluginResult.Status.OK, audio.getCurrentPosition()));
+                        }
+                        else
+                        {
+                            DispatchCommandResult(new PluginResult(PluginResult.Status.OK, -1));
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+                    }
+                });
             }
-            catch (Exception e)
+            catch (Exception)
             {
-                DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+                return;
             }
         }
 
@@ -450,6 +468,8 @@ namespace WP7CordovaClassLib.Cordova.Commands
         /// <summary>
         /// Gets the duration of the audio file
         /// </summary>
+        
+        [Obsolete("This method will be removed shortly")]
         public void getDurationAudio(string options)
         {
             try
@@ -488,6 +508,5 @@ namespace WP7CordovaClassLib.Cordova.Commands
                 DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
             }
         }
-
     }
 }