You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by to...@apache.org on 2016/05/23 13:42:14 UTC

[16/50] cordova-plugin-screen-orientation git commit: Added WP8 support

Added WP8 support


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-screen-orientation/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-screen-orientation/commit/865c81a0
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-screen-orientation/tree/865c81a0
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-screen-orientation/diff/865c81a0

Branch: refs/heads/master
Commit: 865c81a09effa5a4176de8882bcbfbb1b7f11d25
Parents: b3aadac
Author: EddyVerbruggen <ed...@gmail.com>
Authored: Wed May 13 20:30:41 2015 +0200
Committer: EddyVerbruggen <ed...@gmail.com>
Committed: Wed May 13 20:30:41 2015 +0200

----------------------------------------------------------------------
 plugin.xml                      |  14 +++-
 src/wp/YoikScreenOrientation.cs | 133 +++++++++++++++++++++++++++++++++++
 www/screenorientation.wp8.js    |   8 +++
 3 files changed, 154 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-screen-orientation/blob/865c81a0/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 07a9b5d..874d7da 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -2,7 +2,7 @@
 <plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
     xmlns:android="http://schemas.android.com/apk/res/android"
     id="net.yoik.cordova.plugins.screenorientation"
-    version="1.3.2">
+    version="1.3.3">
 
     <name>Screen Orientation</name>
     <description>Adds Screen Orientation API lock and unlock functions to the global screen object in android, iOS and BB10.</description>
@@ -52,4 +52,16 @@
         </js-module>
     </platform>
 
+    <platform name="wp8">
+        <config-file target="config.xml" parent="/*">
+            <feature name="YoikScreenOrientation">
+                <param name="wp-package" value="YoikScreenOrientation"/>
+            </feature>
+        </config-file>
+        <js-module src="www/screenorientation.wp8.js" name="screenorientation.wp8">
+            <merges target="cordova.plugins.screenorientation" />
+        </js-module>
+        <source-file src="src/wp/YoikScreenOrientation.cs" />
+    </platform>
+
 </plugin>

http://git-wip-us.apache.org/repos/asf/cordova-plugin-screen-orientation/blob/865c81a0/src/wp/YoikScreenOrientation.cs
----------------------------------------------------------------------
diff --git a/src/wp/YoikScreenOrientation.cs b/src/wp/YoikScreenOrientation.cs
new file mode 100644
index 0000000..00545e3
--- /dev/null
+++ b/src/wp/YoikScreenOrientation.cs
@@ -0,0 +1,133 @@
+/*
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
+*/
+
+using System;
+using System.Net;
+using System.IO;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Notification;
+using Microsoft.Phone.Shell;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+using System.Runtime.Serialization;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.Threading;
+
+using WPCordovaClassLib.Cordova;
+using WPCordovaClassLib.Cordova.Commands;
+using WPCordovaClassLib.Cordova.JSON;
+
+
+namespace WPCordovaClassLib.Cordova.Commands
+{
+    public class YoikScreenOrientation : BaseCommand
+    {
+        #region Static members
+        private const string UNLOCKED = "unlocked";
+
+        private const string PORTRAIT = "portrait";
+        private const string PORTRAIT_PRIMARY = "portrait-primary";
+        private const string PORTRAIT_SECONDARY = "portrait-secondary";
+
+        private const string LANDSCAPE = "landscape";
+        private const string LANDSCAPE_PRIMARY = "landscape-primary";
+        private const string LANDSCAPE_SECONDARY = "landscape-secondary";
+
+        #endregion
+
+        /// <summary>
+        /// Current orientation
+        /// </summary>
+        private string currentOrientation;
+
+        public YoikScreenOrientation()
+        {
+
+        }
+
+        /// <summary>
+        /// Changes the orientation
+        /// </summary>
+
+        public void screenOrientation(string options)
+        {
+            string orientation = null;
+            try
+            {
+                orientation = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+            }
+            catch (Exception ex)
+            {
+                this.DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, ex.Message));
+                return;
+            }
+
+            if (string.IsNullOrEmpty(orientation))
+            {
+                this.DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+                return;
+            }
+
+            if (this.currentOrientation != orientation) // Might prevent flickering
+            {
+
+                Deployment.Current.Dispatcher.BeginInvoke(() =>
+                {
+                    PhoneApplicationFrame frame;
+                    PhoneApplicationPage page;
+                    if (TryCast(Application.Current.RootVisual, out frame) &&
+                      TryCast(frame.Content, out page))
+                    {
+                        if (orientation == PORTRAIT || orientation == PORTRAIT_PRIMARY || orientation == PORTRAIT_SECONDARY)
+                        {
+                            page.SupportedOrientations = SupportedPageOrientation.Portrait;
+                        }
+
+                        else if (orientation == LANDSCAPE || orientation == LANDSCAPE_PRIMARY || orientation == LANDSCAPE_SECONDARY)
+                        {
+                            page.SupportedOrientations = SupportedPageOrientation.Landscape;
+                        }
+                        else if (orientation == UNLOCKED)
+                        {
+                            page.SupportedOrientations = SupportedPageOrientation.PortraitOrLandscape;
+                        }
+                        else
+                        {
+                            this.DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Screen orientation not detected."));
+                            return;
+                        }
+                        this.currentOrientation = orientation;
+                    }
+                });
+
+                this.DispatchCommandResult();
+            }
+        }
+
+        static bool TryCast<T>(object obj, out T result) where T : class
+        {
+            result = obj as T;
+            return result != null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cordova-plugin-screen-orientation/blob/865c81a0/www/screenorientation.wp8.js
----------------------------------------------------------------------
diff --git a/www/screenorientation.wp8.js b/www/screenorientation.wp8.js
new file mode 100644
index 0000000..9dd64ae
--- /dev/null
+++ b/www/screenorientation.wp8.js
@@ -0,0 +1,8 @@
+var exec = require('cordova/exec'),
+    screenOrientation = {};
+
+screenOrientation.setOrientation = function(orientation) {
+    exec(null, null, "YoikScreenOrientation", "screenOrientation", [orientation]);
+};
+
+module.exports = screenOrientation;
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org