One js file for ios, android and windows

This commit is contained in:
maverickmishra 2016-08-29 14:33:03 -07:00
parent 4b7a573f53
commit 2d8500f6a5
20 changed files with 294 additions and 659 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@ -1,65 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
id="cordova-plugin-screen-orientation"
version="1.4.2">
<name>Screen Orientation</name>
<description>Adds Screen Orientation API lock and unlock functions to the global screen object in android, iOS, WP8, W8.1, and BB10.</description>
<license>MIT</license>
<engines>
<engine name="cordova" version=">=3.0.0" />
</engines>
<js-module src="www/screenorientation.js" name="screenorientation">
<clobbers target="cordova.plugins.screenorientation" />
</js-module>
<platform name="ios">
<config-file target="config.xml" parent="/*">
<feature name="YoikScreenOrientation">
<param name="ios-package" value="YoikScreenOrientation" />
<feature name="CDVOrientation">
<param name="ios-package" value="CDVOrientation" />
</feature>
</config-file>
<js-module src="www/screenorientation.ios.js" name="screenorientation.ios">
<merges target="cordova.plugins.screenorientation" />
</js-module>
<header-file src="src/ios/YoikScreenOrientation.h" />
<source-file src="src/ios/YoikScreenOrientation.m" />
<header-file src="src/ios/CDVViewController+UpdateSupportedOrientations.h" />
<source-file src="src/ios/CDVViewController+UpdateSupportedOrientations.m" />
<header-file src="src/ios/CDVOrientation.h" />
<source-file src="src/ios/CDVOrientation.m" />
</platform>
<platform name="android">
<source-file src="src/android/YoikScreenOrientation.java" target-dir="src/net/yoik/cordova/plugins/screenorientation/" />
<source-file src="src/android/CDVOrientation.java" target-dir="src/cordova/plugins/screenorientation/" />
<config-file target="res/xml/config.xml" parent="/*">
<feature name="YoikScreenOrientation">
<param name="android-package" value="net.yoik.cordova.plugins.screenorientation.YoikScreenOrientation" />
<feature name="CDVOrientation">
<param name="android-package" value="cordova.plugins.screenorientation.CDVOrientation" />
</feature>
</config-file>
<js-module src="www/screenorientation.android.js" name="screenorientation.android">
<merges target="cordova.plugins.screenorientation" />
</js-module>
</platform>
<platform name="blackberry10">
<dependency id="com.blackberry.app" />
<config-file target="www/config.xml" parent="/widget">
@ -69,23 +64,13 @@
<merges target="cordova.plugins.screenorientation" />
</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>
<platform name="windows">
<js-module src="www/screenorientation.windows.js" name="screenorientation.windows">
<merges target="cordova.plugins.screenorientation" />
<js-module src="src/windows/CDVOrientationProxy.js" name="CDVOrientationProxy">
<merges target="" />
</js-module>
</platform>
</plugin>

BIN
src/.DS_Store vendored Normal file

Binary file not shown.

BIN
src/android/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -17,9 +17,9 @@
* specific language governing permissions and limitations
* under the License.
*
*/
*/
package net.yoik.cordova.plugins.screenorientation;
package cordova.plugins.screenorientation;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
@ -31,14 +31,14 @@ import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.util.Log;
public class YoikScreenOrientation extends CordovaPlugin {
public class CDVOrientation extends CordovaPlugin {
private static final String TAG = "YoikScreenOrientation";
/**
* Screen Orientation Constants
*/
private static final String UNLOCKED = "unlocked";
private static final String PORTRAIT_PRIMARY = "portrait-primary";
private static final String PORTRAIT_SECONDARY = "portrait-secondary";
@ -46,56 +46,53 @@ public class YoikScreenOrientation extends CordovaPlugin {
private static final String LANDSCAPE_SECONDARY = "landscape-secondary";
private static final String PORTRAIT = "portrait";
private static final String LANDSCAPE = "landscape";
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
Log.d(TAG, "execute action: " + action);
// Route the Action
if (action.equals("screenOrientation")) {
return routeScreenOrientation(args, callbackContext);
}
// Action not found
callbackContext.error("action not recognised");
return false;
}
private boolean routeScreenOrientation(JSONArray args, CallbackContext callbackContext) {
String action = args.optString(0);
if (action.equals("set")) {
String orientation = args.optString(1);
Log.d(TAG, "Requested ScreenOrientation: " + orientation);
Activity activity = cordova.getActivity();
if (orientation.equals(UNLOCKED)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} else if (orientation.equals(LANDSCAPE_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation.equals(LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (orientation.equals(PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (orientation.equals(LANDSCAPE_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
callbackContext.success();
return true;
} else {
callbackContext.error("ScreenOrientation not recognised");
return false;
String orientation = args.optString(1);
Log.d(TAG, "Requested ScreenOrientation: " + orientation);
Activity activity = cordova.getActivity();
if (orientation.equals(UNLOCKED)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} else if (orientation.equals(LANDSCAPE_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation.equals(LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (orientation.equals(PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (orientation.equals(LANDSCAPE_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
callbackContext.success();
return true;
}
}

BIN
src/ios/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -17,12 +17,15 @@
* specific language governing permissions and limitations
* under the License.
*
*/
*/
#import <Cordova/CDVPlugin.h>
#import <UIKit/UIKit.h>
#import <Cordova/CDVViewController.h>
@interface CDVViewController (UpdateSupportedOrientations)
@interface CDVOrientation : CDVPlugin
{}
- (void)updateSupportedOrientations:(NSArray *)orientations;
- (void)screenOrientation:(CDVInvokedUrlCommand *)command;
@end
@end

65
src/ios/CDVOrientation.m Normal file
View File

@ -0,0 +1,65 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
#import "CDVOrientation.h"
#import <Cordova/CDVViewController.h>
#import <objc/message.h>
@interface CDVOrientation () {}
@end
@implementation CDVOrientation
-(void)screenOrientation:(CDVInvokedUrlCommand *)command
{
CDVPluginResult* pluginResult;
NSInteger orientationMask = [[command argumentAtIndex:0] integerValue];
CDVViewController* vc = (CDVViewController*)self.viewController;
NSMutableArray* result = [[NSMutableArray alloc] init];
if(orientationMask & 1) {
[result addObject:[NSNumber numberWithInt:UIInterfaceOrientationPortrait]];
}
if(orientationMask & 2) {
[result addObject:[NSNumber numberWithInt:UIInterfaceOrientationPortraitUpsideDown]];
}
if(orientationMask & 4) {
[result addObject:[NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]];
}
if(orientationMask & 8) {
[result addObject:[NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight]];
}
SEL selector = NSSelectorFromString(@"setSupportedOrientations:");
if([vc respondsToSelector:selector]) {
((void (*)(CDVViewController*, SEL, NSMutableArray*))objc_msgSend)(vc,selector,result);
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
}
else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_INVALID_ACTION messageAsString:@"Error calling to set supported orientations"];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@end

View File

@ -1,32 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
#import "CDVViewController+UpdateSupportedOrientations.h"
@implementation CDVViewController (UpdateSupportedOrientations)
- (void)updateSupportedOrientations:(NSArray *)orientations {
[self setValue:orientations forKey:@"supportedOrientations"];
}
@end

View File

@ -1,36 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
#import <Cordova/CDVPlugin.h>
#import <Cordova/CDVViewController.h>
@interface YoikScreenOrientation : CDVPlugin
- (void)screenOrientation:(CDVInvokedUrlCommand *)command;
@property (strong, nonatomic) NSArray *originalSupportedOrientations;
@end
@interface ForcedViewController : UIViewController
@property (strong, nonatomic) NSString *calledWith;
@end

View File

@ -1,120 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
#import "YoikScreenOrientation.h"
#import "CDVViewController+UpdateSupportedOrientations.h"
@implementation YoikScreenOrientation
-(void)screenOrientation:(CDVInvokedUrlCommand *)command
{
[self.commandDelegate runInBackground:^{
if(self.originalSupportedOrientations == nil) {
self.originalSupportedOrientations = [self.viewController valueForKey:@"supportedOrientations"];
}
NSArray* arguments = command.arguments;
NSString* orientationIn = [arguments objectAtIndex:1];
if ([orientationIn isEqual: @"unlocked"]) {
[(CDVViewController*)self.viewController updateSupportedOrientations:self.originalSupportedOrientations];
self.originalSupportedOrientations = nil;
return;
}
// grab the device orientation so we can pass it back to the js side.
NSString *orientation;
switch ([[UIDevice currentDevice] orientation]) {
case UIDeviceOrientationLandscapeLeft:
orientation = @"landscape-secondary";
break;
case UIDeviceOrientationLandscapeRight:
orientation = @"landscape-primary";
break;
case UIDeviceOrientationPortrait:
orientation = @"portrait-primary";
break;
case UIDeviceOrientationPortraitUpsideDown:
orientation = @"portrait-secondary";
break;
default:
orientation = @"portait";
break;
}
// we send the result prior to the view controller presentation so that the JS side
// is ready for the unlock call.
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsDictionary:@{@"device":orientation}];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
// SEE https://github.com/Adlotto/cordova-plugin-recheck-screen-orientation
// HACK: Force rotate by changing the view hierarchy.
ForcedViewController *vc = [[ForcedViewController alloc] init];
vc.calledWith = orientationIn;
// backgound should be transparent as it is briefly visible
// prior to closing.
vc.view.backgroundColor = [UIColor clearColor];
// vc.view.alpha = 0.0;
vc.view.opaque = YES;
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
// This stops us getting the black application background flash, iOS8
vc.modalPresentationStyle = UIModalPresentationOverFullScreen;
#endif
dispatch_async(dispatch_get_main_queue(), ^{
[self.viewController presentViewController:vc animated:NO completion:nil];
});
}];
}
@end
@implementation ForcedViewController
-(void) viewDidAppear:(BOOL)animated {
CDVViewController *presenter = (CDVViewController*)self.presentingViewController;
if ([self.calledWith rangeOfString:@"portrait"].location != NSNotFound) {
[presenter updateSupportedOrientations:@[[NSNumber numberWithInt:UIInterfaceOrientationPortrait]]];
} else if([self.calledWith rangeOfString:@"landscape"].location != NSNotFound) {
[presenter updateSupportedOrientations:@[[NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft], [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight]]];
} else {
[presenter updateSupportedOrientations:@[[NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft], [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight], [NSNumber numberWithInt:UIInterfaceOrientationPortrait]]];
}
[presenter dismissViewControllerAnimated:NO completion:nil];
}
- (UIInterfaceOrientationMask) supportedInterfaceOrientations
{
if ([self.calledWith rangeOfString:@"portrait"].location != NSNotFound) {
return UIInterfaceOrientationMaskPortrait;
} else if([self.calledWith rangeOfString:@"landscape"].location != NSNotFound) {
return UIInterfaceOrientationMaskLandscape;
}
return UIInterfaceOrientationMaskAll;
}
@end

BIN
src/windows/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,58 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
var DisplayInfo = Windows.Graphics.Display.DisplayInformation;
var Orientations = Windows.Graphics.Display.DisplayOrientations;
module.exports = {
setAllowedOrientations: function (win, fail, args) {
//console.log("setAllowedOrientations proxy called with " + args);
try {
var prefOrients = args[0];
var winPrefs = 0;
if (prefOrients & 1) { // UIInterfaceOrientationPortrait
winPrefs = winPrefs | Orientations.portrait;
}
if (prefOrients & 2) { // UIInterfaceOrientationPortraitUpsideDown
winPrefs = winPrefs | Orientations.portraitFlipped;
}
if(prefOrients & 4) { // UIInterfaceOrientationLandscapeLeft
winPrefs = winPrefs | Orientations.landscape;
}
if (prefOrients & 8) { // UIInterfaceOrientationLandscapeRight
winPrefs = winPrefs | Orientations.landscapeFlipped;
}
setTimeout(function () {
DisplayInfo.autoRotationPreferences = winPrefs;
win();
}, 0);
}
catch (err) {
console.log("error :: " + err);
fail();
}
}
}
require("cordova/exec/proxy").add("CDVOrientation", module.exports);

View File

@ -1,140 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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;
}
}
}

BIN
www/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -1,29 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
var exec = require('cordova/exec'),
screenOrientation = {};
screenOrientation.setOrientation = function(orientation) {
exec(null, null, "YoikScreenOrientation", "screenOrientation", ['set', orientation]);
};
module.exports = screenOrientation;

View File

@ -1,56 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
var exec = require('cordova/exec'),
screenOrientation = {},
iosOrientation = 'unlocked',
orientationMap = {
'portrait': [0,180],
'portrait-primary': [0],
'portrait-secondary': [180],
'landscape': [-90,90],
'landscape-primary': [-90],
'landscape-secondary': [90],
'default': [-90,90,0,180]
};
screenOrientation.setOrientation = function(orientation) {
iosOrientation = orientation;
var success = function(res) {
if (orientation === 'unlocked' && res.device) {
iosOrientation = res.device;
setTimeout(function() {
iosOrientation = 'unlocked';
},300);
}
};
exec(success, null, "YoikScreenOrientation", "screenOrientation", ['set', orientation]);
};
module.exports = screenOrientation;
// ios orientation callback/hook
window.shouldRotateToOrientation = function(orientation) {
var map = orientationMap[iosOrientation] || orientationMap['default'];
return map.indexOf(orientation) >= 0;
};

View File

@ -17,78 +17,101 @@
* specific language governing permissions and limitations
* under the License.
*
*/
*/
var screenOrientation = {},
Orientations = [
'portrait-primary',
// The orientation is in the primary portrait mode.
'portrait-secondary',
// The orientation is in the secondary portrait mode.
'landscape-primary',
// The orientation is in the primary landscape mode.
'landscape-secondary',
// The orientation is in the secondary landscape mode.
'portrait',
// The orientation is either portrait-primary or portrait-secondary.
'landscape'
// The orientation is either landscape-primary or landscape-secondary.
];
var screenOrientation = {},
Orientations = [
'portrait-primary',
// The orientation is in the primary portrait mode.
'portrait-secondary',
// The orientation is in the secondary portrait mode.
'landscape-primary',
// The orientation is in the primary landscape mode.
'landscape-secondary',
// The orientation is in the secondary landscape mode.
'portrait',
// The orientation is either portrait-primary or portrait-secondary.
'landscape'
// The orientation is either landscape-primary or landscape-secondary.
];
screenOrientation.Orientations = Orientations;
screenOrientation.currOrientation = 'unlocked';
screenOrientation.Orientations = Orientations;
screenOrientation.currOrientation = 'natural';
var orientationMask = 0;
screenOrientation.setOrientation = function(orientation) {
if(orientation == 'portrait-primary'){
orientationMask = 1;
}
else if(orientation == 'portrait-secondary'){
orientationMask = 2;
}
else if(orientation == 'landscape-primary'){
orientationMask = 4;
}
else if(orientation == 'landscape-secondary'){
orientationMask = 8;
}
else if(orientation == 'portrait'){
orientationMask = 3;
}
else if(orientation == 'landscape'){
orientationMask = 12;
}
else if(orientation == 'natural'){
orientationMask = 15;
}
screenOrientation.setOrientation = function(orientation) {
//platform specific files override this function
console.log('setOrientation not supported on device');
};
function addScreenOrientationApi(screenObject) {
if (screenObject.unlockOrientation || screenObject.lockOrientation) {
return;
}
cordova.exec(null, null, "CDVOrientation", "screenOrientation", [orientationMask, orientation]);
//console.log('setOrientation not supported on device');
};
screenObject.lockOrientation = function(orientation) {
if (Orientations.indexOf(orientation) == -1) {
console.log('INVALID ORIENTATION', orientation);
return;
}
screenOrientation.currOrientation = screenObject.orientation = orientation;
screenOrientation.setOrientation(orientation);
};
function addScreenOrientationApi(screenObject) {
if (screenObject.unlockOrientation || screenObject.lockOrientation) {
return;
}
screenObject.unlockOrientation = function() {
screenOrientation.currOrientation = screenObject.orientation = 'unlocked';
screenOrientation.setOrientation('unlocked');
};
}
screenObject.lockOrientation = function(orientation) {
if (Orientations.indexOf(orientation) == -1) {
console.log('INVALID ORIENTATION', orientation);
return;
}
screenOrientation.currOrientation = screenObject.orientation = orientation;
screenOrientation.setOrientation(orientation);
};
addScreenOrientationApi(screen);
orientationChange();
screenObject.unlockOrientation = function() {
screenOrientation.currOrientation = screenObject.orientation = 'natural';
screenOrientation.setOrientation('natural');
};
}
function orientationChange() {
var orientation;
addScreenOrientationApi(screen);
orientationChange();
switch (window.orientation) {
case 0:
orientation = 'portrait-primary';
break;
case 90:
orientation = 'landscape-primary';
break;
case 180:
orientation = 'portrait-secondary';
break;
case -90:
orientation = 'landscape-secondary';
break;
default:
orientation = 'unknown';
}
function orientationChange() {
var orientation;
screen.orientation = orientation;
}
switch (window.orientation) {
case 0:
orientation = 'portrait-primary';
break;
case 90:
orientation = 'landscape-primary';
break;
case 180:
orientation = 'portrait-secondary';
break;
case -90:
orientation = 'landscape-secondary';
break;
default:
orientation = 'unknown';
}
window.addEventListener("orientationchange", orientationChange, true);
screen.orientation = orientation;
}
module.exports = screenOrientation;
window.addEventListener("orientationchange", orientationChange, true);
module.exports = screenOrientation;

View File

@ -1,54 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
var screenOrientation = {};
screenOrientation.setOrientation = function (orientation) {
var orientationNumber;
switch (orientation) {
case 'landscape':
orientationNumber = 5;
break;
case 'portrait':
orientationNumber = 10;
break;
case 'landscape-primary':
orientationNumber = 1;
break;
case 'landscape-secondary':
orientationNumber = 4;
break;
case 'portrait-primary':
orientationNumber = 2;
break;
case 'portrait-secondary':
orientationNumber = 8;
break;
case 'unlocked':
orientationNumber = 0;
break;
default:
break;
}
Windows.Graphics.Display.DisplayInformation.autoRotationPreferences = orientationNumber;
};
module.exports = screenOrientation;

View File

@ -1,29 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/
var exec = require('cordova/exec'),
screenOrientation = {};
screenOrientation.setOrientation = function(orientation) {
exec(null, null, "YoikScreenOrientation", "screenOrientation", [orientation]);
};
module.exports = screenOrientation;