X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/docs/source/OS.html?ds=inline diff --git a/docs/source/OS.html b/docs/source/OS.html new file mode 100644 index 00000000..27914772 --- /dev/null +++ b/docs/source/OS.html @@ -0,0 +1,133 @@ +
/**
+ * @class Ext.env.OS
+ * Provide useful information about the current operating system environment. Access the global instance stored in Ext.os. Example:
+ * <pre><code>
+ * if (Ext.os.is.Windows) {
+ * // Windows specific code here
+ * }
+ *
+ * if (Ext.os.is.iOS) {
+ * // iPad, iPod, iPhone, etc.
+ * }
+ *
+ * console.log("Version " + Ext.os.version);
+ * </code></pre>
+ *
+ * For a full list of supported values, refer to: {@link Ext.env.OS#is Ext.env.OS.is}
+ */
+Ext.define('Ext.env.OS', {
+
+ statics: {
+ osNames: {
+ ios: 'iOS',
+ android: 'Android',
+ webos: 'WebOS',
+ blackberry: 'BlackBerry',
+ mac: 'MacOSX',
+ win: 'Windows',
+ linux: 'Linux',
+ other: 'Other'
+ },
+ osPrefixes: {
+ ios: 'iPhone OS ',
+ android: 'Android ',
+ blackberry: 'BlackBerry ',
+ webos: 'webOS/'
+ }
+ },
+
+ /*
+ * A "hybrid" property, can be either accessed as a method call, i.e:
+ * <pre><code>
+ * if (Ext.os.is('Android')) { ... }
+ * </code></pre>
+ *
+ * or as an object with boolean properties, i.e:
+ * <pre><code>
+ * if (Ext.os.is.Android) { ... }
+ * </code></pre>
+ *
+ * Versions can be conveniently checked as well. For example:
+ * <pre><code>
+ * if (Ext.os.is.Android2) { ... } // Equivalent to (Ext.os.is.Android && Ext.os.version.equals(2))
+ *
+ * if (Ext.os.is.iOS32) { ... } // Equivalent to (Ext.os.is.iOS && Ext.os.version.equals(3.2))
+ * </code></pre>
+ *
+ * Note that only {@link Ext.Version#getMajor major component} and {@link Ext.Version#getShortVersion shortVersion}
+ * value of the version are available via direct property checking.
+ *
+ * Supported values are: iOS, iPad, iPhone, iPod, Android, WebOS, BlackBerry, MacOSX, Windows, Linux and Other
+ *
+ * @param {String} value The OS name to check
+ * @return {Boolean}
+ */
+ is: Ext.emptyFn,
+
+ /*
+ * Read-only - the full name of the current operating system
+ * Possible values are: iOS, Android, WebOS, BlackBerry, MacOSX, Windows, Linux and Other
+ * @type String
+ */
+ name: null,
+
+ /*
+ * Read-only, refer to {@link Ext.Version}
+ * @type Ext.Version
+ */
+ version: null,
+
+ constructor: function() {
+ var userAgent = Ext.global.navigator.userAgent,
+ platform = Ext.global.navigator.platform,
+ selfClass = this.statics(),
+ osMatch = userAgent.match(new RegExp('((?:' + Ext.Object.getValues(selfClass.osPrefixes).join(')|(?:') + '))([^\\s;]+)')),
+ name = 'other',
+ version = '',
+ actualVersionMatch;
+
+ if (osMatch) {
+ name = selfClass.osNames[Ext.Object.getKey(selfClass.osPrefixes, osMatch[1])];
+ version = osMatch[2];
+
+ if (name === 'BlackBerry') {
+ actualVersionMatch = userAgent.match(/Version\/([\d\._]+)/);
+
+ if (actualVersionMatch) {
+ version = actualVersionMatch[1];
+ }
+ }
+ }
+ else {
+ name = selfClass.osNames[(userAgent.toLowerCase().match(/mac|win|linux/i) || ['other'])[0]];
+ }
+
+ Ext.apply(this, {
+ name: name,
+ version: new Ext.Version(version)
+ });
+
+ this.is = function(name) {
+ return this.is[name] === true;
+ };
+
+ if (name === 'iOS') {
+ this.is[platform] = true;
+ }
+
+ this.is[this.name] = true;
+ this.is[this.name + (this.version.getMajor() || '')] = true;
+ this.is[this.name + this.version.getShortVersion()] = true;
+
+ Ext.Object.each(selfClass.osNames, function(key, name) {
+ this.is[name] = (this.name === name);
+ }, this);
+
+ return this;
+ }
+}, function() {
+
+Ext.os = new Ext.env.OS();
+
+});
+
\ No newline at end of file