diff --git a/plugin.xml b/plugin.xml
index 07a9b5d..dafa2f9 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -2,7 +2,7 @@
+ version="1.3.3">
Screen Orientation
Adds Screen Orientation API lock and unlock functions to the global screen object in android, iOS and BB10.
@@ -52,4 +52,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/wp/YoikScreenOrientation.cs b/src/wp/YoikScreenOrientation.cs
new file mode 100644
index 0000000..4663998
--- /dev/null
+++ b/src/wp/YoikScreenOrientation.cs
@@ -0,0 +1,127 @@
+/*
+ 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 LANDSCAPE = "landscape";
+
+ #endregion
+
+ ///
+ /// Current orientation
+ ///
+ private string currentOrientation;
+
+ public YoikScreenOrientation()
+ {
+
+ }
+
+ ///
+ /// Changes the orientation
+ ///
+
+ public void screenOrientation(string options)
+ {
+ string orientation = null;
+ try
+ {
+ orientation = JSON.JsonHelper.Deserialize(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)
+ {
+ page.SupportedOrientations = SupportedPageOrientation.Portrait;
+ }
+ else if (orientation == LANDSCAPE)
+ {
+ 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(object obj, out T result) where T : class
+ {
+ result = obj as T;
+ return result != null;
+ }
+ }
+}
diff --git a/www/screenorientation.wp8.js b/www/screenorientation.wp8.js
new file mode 100644
index 0000000..4900408
--- /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