@qooxdoo/framework
Version:
The JS Framework for Coders
115 lines (94 loc) • 2.98 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2012 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Daniel Wagner (danielwagner)
************************************************************************ */
/**
* Normalization for orientationchange events
*
* @require(qx.module.Event)
*
* @group (Event_Normalization)
*/
qx.Bootstrap.define("qx.module.event.Orientation", {
statics :
{
/**
* List of event types to be normalized
*/
TYPES : ["orientationchange"],
/**
* List of qx.module.event.Orientation methods to be attached to native
* event objects
* @internal
*/
BIND_METHODS : ["getOrientation", "isLandscape", "isPortrait"],
/**
* Returns the current orientation of the viewport in degrees.
*
* All possible values and their meaning:
*
* * <code>0</code>: "Portrait"
* * <code>-90</code>: "Landscape (right, screen turned clockwise)"
* * <code>90</code>: "Landscape (left, screen turned counterclockwise)"
* * <code>180</code>: "Portrait (upside-down portrait)"
*
* @return {Number} The current orientation in degrees
*/
getOrientation: function() {
return this._orientation;
},
/**
* Whether the viewport orientation is currently in landscape mode.
*
* @return {Boolean} <code>true</code> when the viewport orientation
* is currently in landscape mode.
*/
isLandscape : function() {
return this._mode == "landscape";
},
/**
* Whether the viewport orientation is currently in portrait mode.
*
* @return {Boolean} <code>true</code> when the viewport orientation
* is currently in portrait mode.
*/
isPortrait : function()
{
return this._mode == "portrait";
},
/**
* Manipulates the native event object, adding methods if they're not
* already present
*
* @param event {Event} Native event object
* @param element {Element} DOM element the listener was attached to
* @param type {String} Event type
* @return {Event} Normalized event object
* @internal
*/
normalize : function(event, element, type)
{
if (!event) {
return event;
}
event._type = type;
var bindMethods = qx.module.event.Orientation.BIND_METHODS;
for (var i=0, l=bindMethods.length; i<l; i++) {
if (typeof event[bindMethods[i]] != "function") {
event[bindMethods[i]] = qx.module.event.Orientation[bindMethods[i]].bind(event);
}
}
return event;
}
},
defer : function(statics) {
qxWeb.$registerEventNormalization(statics.TYPES, statics.normalize);
}
});