|
|
@@ -19,365 +19,374 @@
|
|
|
under the License.
|
|
|
*/
|
|
|
|
|
|
-var LocalNotification = function () {
|
|
|
- this._defaults = {
|
|
|
- message: '',
|
|
|
- title: '',
|
|
|
- autoCancel: false,
|
|
|
- badge: 0,
|
|
|
- id: '0',
|
|
|
- json: '',
|
|
|
- repeat: ''
|
|
|
- };
|
|
|
-};
|
|
|
-
|
|
|
-LocalNotification.prototype = {
|
|
|
- /**
|
|
|
- * Returns the default settings
|
|
|
- *
|
|
|
- * @return {Object}
|
|
|
- */
|
|
|
- getDefaults: function () {
|
|
|
- return this._defaults;
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Overwrite default settings
|
|
|
- *
|
|
|
- * @param {Object} defaults
|
|
|
- */
|
|
|
- setDefaults: function (newDefaults) {
|
|
|
- var defaults = this.getDefaults();
|
|
|
-
|
|
|
- for (var key in defaults) {
|
|
|
- if (newDefaults[key] !== undefined) {
|
|
|
- defaults[key] = newDefaults[key];
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * @private
|
|
|
- *
|
|
|
- * Merges custom properties with the default values.
|
|
|
- *
|
|
|
- * @param {Object} options
|
|
|
- * Set of custom values
|
|
|
- *
|
|
|
- * @retrun {Object}
|
|
|
- * The merged property list
|
|
|
- */
|
|
|
- mergeWithDefaults: function (options) {
|
|
|
- var defaults = this.getDefaults();
|
|
|
-
|
|
|
- for (var key in defaults) {
|
|
|
- if (options[key] === undefined) {
|
|
|
- options[key] = defaults[key];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return options;
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * @private
|
|
|
- *
|
|
|
- * Merges the platform specific properties into the default properties.
|
|
|
- *
|
|
|
- * @return {Object}
|
|
|
- * The default properties for the platform
|
|
|
- */
|
|
|
- applyPlatformSpecificOptions: function () {
|
|
|
- var defaults = this._defaults;
|
|
|
-
|
|
|
- switch (device.platform) {
|
|
|
- case 'Android':
|
|
|
- defaults.icon = 'icon';
|
|
|
- defaults.smallIcon = null;
|
|
|
- defaults.ongoing = false;
|
|
|
- defaults.led = 'FFFFFF'; /*RRGGBB*/
|
|
|
- defaults.sound = 'TYPE_NOTIFICATION'; break;
|
|
|
- case 'iOS':
|
|
|
- defaults.sound = ''; break;
|
|
|
- case 'WinCE': case 'Win32NT':
|
|
|
- defaults.smallImage = null;
|
|
|
- defaults.image = null;
|
|
|
- defaults.wideImage = null;
|
|
|
- }
|
|
|
-
|
|
|
- return defaults;
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * @private
|
|
|
- *
|
|
|
- * Creates a callback, which will be executed within a specific scope.
|
|
|
- *
|
|
|
- * @param {Function} callbackFn
|
|
|
- * The callback function
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the function
|
|
|
- *
|
|
|
- * @return {Function}
|
|
|
- * The new callback function
|
|
|
- */
|
|
|
- createCallbackFn: function (callbackFn, scope) {
|
|
|
- if (typeof callbackFn != 'function')
|
|
|
- return;
|
|
|
-
|
|
|
- return function () {
|
|
|
- callbackFn.apply(scope || this, arguments);
|
|
|
- };
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Add a new entry to the registry
|
|
|
- *
|
|
|
- * @param {Object} options
|
|
|
- * The notification properties
|
|
|
- * @param {Function} callback
|
|
|
- * A function to be called after the notification has been canceled
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the callback function
|
|
|
- *
|
|
|
- * @return {Number}
|
|
|
- * The notification's ID
|
|
|
- */
|
|
|
- add: function (options, callback, scope) {
|
|
|
- var options = this.mergeWithDefaults(options),
|
|
|
- fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- if (options.id) {
|
|
|
- options.id = options.id.toString();
|
|
|
- }
|
|
|
-
|
|
|
- if (options.date === undefined) {
|
|
|
- options.date = new Date();
|
|
|
- }
|
|
|
-
|
|
|
- if (options.title) {
|
|
|
- options.title = options.title.toString();
|
|
|
- }
|
|
|
-
|
|
|
- if (options.message) {
|
|
|
- options.message = options.message.toString();
|
|
|
- }
|
|
|
-
|
|
|
- if (typeof options.date == 'object') {
|
|
|
- options.date = Math.round(options.date.getTime()/1000);
|
|
|
- }
|
|
|
-
|
|
|
- if (['WinCE', 'Win32NT'].indexOf(device.platform) > -1) {
|
|
|
- fn = function (cmd) {
|
|
|
- eval(cmd);
|
|
|
- };
|
|
|
- }
|
|
|
-
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'add', [options]);
|
|
|
-
|
|
|
- return options.id;
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Cancels the specified notification.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * The ID of the notification
|
|
|
- * @param {Function} callback
|
|
|
- * A function to be called after the notification has been canceled
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the callback function
|
|
|
- */
|
|
|
- cancel: function (id, callback, scope) {
|
|
|
- var id = id.toString(),
|
|
|
- fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'cancel', [id]);
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Removes all previously registered notifications.
|
|
|
- *
|
|
|
- * @param {Function} callback
|
|
|
- * A function to be called after all notifications have been canceled
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the callback function
|
|
|
- */
|
|
|
- cancelAll: function (callback, scope) {
|
|
|
- var fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'cancelAll', []);
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Retrieves a list with all currently pending notifications.
|
|
|
- *
|
|
|
- * @param {Function} callback
|
|
|
- * A callback function to be called with the list
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the callback function
|
|
|
- */
|
|
|
- getScheduledIds: function (callback, scope) {
|
|
|
- var fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'getScheduledIds', []);
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Checks wether a notification with an ID is scheduled.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * The ID of the notification
|
|
|
- * @param {Function} callback
|
|
|
- * A callback function to be called with the list
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the callback function
|
|
|
- */
|
|
|
- isScheduled: function (id, callback, scope) {
|
|
|
- var id = id.toString(),
|
|
|
- fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'isScheduled', [id]);
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Retrieves a list with all triggered notifications.
|
|
|
- *
|
|
|
- * @param {Function} callback
|
|
|
- * A callback function to be called with the list
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the callback function
|
|
|
- */
|
|
|
- getTriggeredIds: function (callback, scope) {
|
|
|
- var fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'getTriggeredIds', []);
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Checks wether a notification with an ID was triggered.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * The ID of the notification
|
|
|
- * @param {Function} callback
|
|
|
- * A callback function to be called with the list
|
|
|
- * @param {Object} scope
|
|
|
- * The scope for the callback function
|
|
|
- */
|
|
|
- isTriggered: function (id, callback, scope) {
|
|
|
- var id = id.toString(),
|
|
|
- fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'isTriggered', [id]);
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Informs if the app has the permission to show badges.
|
|
|
- *
|
|
|
- * @param {Function} callback
|
|
|
- * The function to be exec as the callback
|
|
|
- * @param {Object?} scope
|
|
|
- * The callback function's scope
|
|
|
- */
|
|
|
- hasPermission: function (callback, scope) {
|
|
|
- var fn = this.createCallbackFn(callback, scope);
|
|
|
-
|
|
|
- if (device.platform == 'iOS') {
|
|
|
- cordova.exec(fn, null, 'LocalNotification', 'hasPermission', []);
|
|
|
- } else if (fn) {
|
|
|
- fn(true);
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Ask for permission to show badges if not already granted.
|
|
|
- */
|
|
|
- promptForPermission: function () {
|
|
|
- if (device.platform == 'iOS') {
|
|
|
- cordova.exec(null, null, 'LocalNotification', 'promptForPermission', []);
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- /**
|
|
|
- * Occurs when a notification was added.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * The ID of the notification
|
|
|
- * @param {String} state
|
|
|
- * Either "foreground" or "background"
|
|
|
- * @param {String} json
|
|
|
- * A custom (JSON) string
|
|
|
- */
|
|
|
- onadd: function (id, state, json) {},
|
|
|
-
|
|
|
- /**
|
|
|
- * Occurs when the notification is triggered.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * The ID of the notification
|
|
|
- * @param {String} state
|
|
|
- * Either "foreground" or "background"
|
|
|
- * @param {String} json
|
|
|
- * A custom (JSON) string
|
|
|
- */
|
|
|
- ontrigger: function (id, state, json) {},
|
|
|
-
|
|
|
- /**
|
|
|
- * Fires after the notification was clicked.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * The ID of the notification
|
|
|
- * @param {String} state
|
|
|
- * Either "foreground" or "background"
|
|
|
- * @param {String} json
|
|
|
- * A custom (JSON) string
|
|
|
- */
|
|
|
- onclick: function (id, state, json) {},
|
|
|
-
|
|
|
- /**
|
|
|
- * Fires if the notification was canceled.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * The ID of the notification
|
|
|
- * @param {String} state
|
|
|
- * Either "foreground" or "background"
|
|
|
- * @param {String} json
|
|
|
- * A custom (JSON) string
|
|
|
- */
|
|
|
- oncancel: function (id, state, json) {}
|
|
|
-};
|
|
|
-
|
|
|
-var plugin = new LocalNotification(),
|
|
|
+var exec = require('cordova/exec'),
|
|
|
channel = require('cordova/channel');
|
|
|
|
|
|
-// Called after all 'deviceready' listener are called
|
|
|
+
|
|
|
+// Called after 'deviceready' event
|
|
|
channel.deviceready.subscribe( function () {
|
|
|
- // Device is ready now, the listeners are registered and all queued events
|
|
|
- // can be executed now.
|
|
|
- cordova.exec(null, null, 'LocalNotification', 'deviceready', []);
|
|
|
+ // Device is ready now, the listeners are registered
|
|
|
+ // and all queued events can be executed.
|
|
|
+ exec(null, null, 'LocalNotification', 'deviceready', []);
|
|
|
});
|
|
|
|
|
|
+// Called before 'deviceready' event
|
|
|
channel.onCordovaReady.subscribe( function () {
|
|
|
// The cordova device plugin is ready now
|
|
|
channel.onCordovaInfoReady.subscribe( function () {
|
|
|
if (device.platform == 'Android') {
|
|
|
channel.onPause.subscribe( function () {
|
|
|
// Necessary to set the state to `background`
|
|
|
- cordova.exec(null, null, 'LocalNotification', 'pause', []);
|
|
|
+ exec(null, null, 'LocalNotification', 'pause', []);
|
|
|
});
|
|
|
|
|
|
channel.onResume.subscribe( function () {
|
|
|
// Necessary to set the state to `foreground`
|
|
|
- cordova.exec(null, null, 'LocalNotification', 'resume', []);
|
|
|
+ exec(null, null, 'LocalNotification', 'resume', []);
|
|
|
});
|
|
|
|
|
|
// Necessary to set the state to `foreground`
|
|
|
- cordova.exec(null, null, 'LocalNotification', 'resume', []);
|
|
|
+ exec(null, null, 'LocalNotification', 'resume', []);
|
|
|
}
|
|
|
|
|
|
// Merges the platform specific properties into the default properties
|
|
|
- plugin.applyPlatformSpecificOptions();
|
|
|
+ exports.applyPlatformSpecificOptions();
|
|
|
});
|
|
|
});
|
|
|
|
|
|
-module.exports = plugin;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @private
|
|
|
+ *
|
|
|
+ * Default values.
|
|
|
+ */
|
|
|
+exports._defaults = {
|
|
|
+ message: '',
|
|
|
+ title: '',
|
|
|
+ autoCancel: false,
|
|
|
+ badge: 0,
|
|
|
+ id: '0',
|
|
|
+ json: '',
|
|
|
+ repeat: ''
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Returns the default settings
|
|
|
+ *
|
|
|
+ * @return {Object}
|
|
|
+ */
|
|
|
+exports.getDefaults = function () {
|
|
|
+ return this._defaults;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Overwrite default settings
|
|
|
+ *
|
|
|
+ * @param {Object} defaults
|
|
|
+ */
|
|
|
+exports.setDefaults = function (newDefaults) {
|
|
|
+ var defaults = this.getDefaults();
|
|
|
+
|
|
|
+ for (var key in defaults) {
|
|
|
+ if (newDefaults[key] !== undefined) {
|
|
|
+ defaults[key] = newDefaults[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Add a new entry to the registry
|
|
|
+ *
|
|
|
+ * @param {Object} props
|
|
|
+ * The notification properties
|
|
|
+ * @param {Function} callback
|
|
|
+ * A function to be called after the notification has been canceled
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the callback function
|
|
|
+ *
|
|
|
+ * @return {Number}
|
|
|
+ * The notification's ID
|
|
|
+ */
|
|
|
+exports.add = function (props, callback, scope) {
|
|
|
+ var options = this.mergeWithDefaults(options),
|
|
|
+ fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ if (options.id) {
|
|
|
+ options.id = options.id.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (options.date === undefined) {
|
|
|
+ options.date = new Date();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (options.title) {
|
|
|
+ options.title = options.title.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (options.message) {
|
|
|
+ options.message = options.message.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (typeof options.date == 'object') {
|
|
|
+ options.date = Math.round(options.date.getTime()/1000);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (['WinCE', 'Win32NT'].indexOf(device.platform) > -1) {
|
|
|
+ fn = function (cmd) {
|
|
|
+ eval(cmd);
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'add', [options]);
|
|
|
+
|
|
|
+ return options.id;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Cancels the specified notification.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * The ID of the notification
|
|
|
+ * @param {Function} callback
|
|
|
+ * A function to be called after the notification has been canceled
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the callback function
|
|
|
+ */
|
|
|
+exports.cancel = function (id, callback, scope) {
|
|
|
+ var fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'cancel', [id.toString()]);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Removes all previously registered notifications.
|
|
|
+ *
|
|
|
+ * @param {Function} callback
|
|
|
+ * A function to be called after all notifications have been canceled
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the callback function
|
|
|
+ */
|
|
|
+exports.cancelAll = function (callback, scope) {
|
|
|
+ var fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'cancelAll', []);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Retrieves a list with all currently pending notifications.
|
|
|
+ *
|
|
|
+ * @param {Function} callback
|
|
|
+ * A callback function to be called with the list
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the callback function
|
|
|
+ */
|
|
|
+exports.getScheduledIds = function (callback, scope) {
|
|
|
+ var fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'getScheduledIds', []);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Checks wether a notification with an ID is scheduled.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * The ID of the notification
|
|
|
+ * @param {Function} callback
|
|
|
+ * A callback function to be called with the list
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the callback function
|
|
|
+ */
|
|
|
+exports.isScheduled = function (id, callback, scope) {
|
|
|
+ var fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'isScheduled', [id.toString()]);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Retrieves a list with all triggered notifications.
|
|
|
+ *
|
|
|
+ * @param {Function} callback
|
|
|
+ * A callback function to be called with the list
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the callback function
|
|
|
+ */
|
|
|
+exports.getTriggeredIds = function (callback, scope) {
|
|
|
+ var fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'getTriggeredIds', []);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Checks wether a notification with an ID was triggered.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * The ID of the notification
|
|
|
+ * @param {Function} callback
|
|
|
+ * A callback function to be called with the list
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the callback function
|
|
|
+ */
|
|
|
+exports.isTriggered = function (id, callback, scope) {
|
|
|
+ var fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'isTriggered', [id.toString()]);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Informs if the app has the permission to show notifications.
|
|
|
+ *
|
|
|
+ * @param {Function} callback
|
|
|
+ * The function to be exec as the callback
|
|
|
+ * @param {Object?} scope
|
|
|
+ * The callback function's scope
|
|
|
+ */
|
|
|
+exports.hasPermission = function (callback, scope) {
|
|
|
+ var fn = this.createCallbackFn(callback, scope);
|
|
|
+
|
|
|
+ if (device.platform != 'iOS') {
|
|
|
+ fn(true);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ exec(fn, null, 'LocalNotification', 'hasPermission', []);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Ask for permission to show notifications if not already granted.
|
|
|
+ *
|
|
|
+ * @param {Function} callback
|
|
|
+ * The function to be exec as the callback
|
|
|
+ * @param {Object?} scope
|
|
|
+ * The callback function's scope
|
|
|
+ */
|
|
|
+exports.promptForPermission = function (callback, scope) {
|
|
|
+ if (device.platform != 'iOS')
|
|
|
+ return;
|
|
|
+
|
|
|
+ exec(null, null, 'LocalNotification', 'promptForPermission', []);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Occurs when a notification was added.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * The ID of the notification
|
|
|
+ * @param {String} state
|
|
|
+ * Either "foreground" or "background"
|
|
|
+ * @param {String} json
|
|
|
+ * A custom (JSON) string
|
|
|
+ */
|
|
|
+exports.onadd = function (id, state, json) {};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Occurs when the notification is triggered.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * The ID of the notification
|
|
|
+ * @param {String} state
|
|
|
+ * Either "foreground" or "background"
|
|
|
+ * @param {String} json
|
|
|
+ * A custom (JSON) string
|
|
|
+ */
|
|
|
+exports.ontrigger = function (id, state, json) {};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Fires after the notification was clicked.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * The ID of the notification
|
|
|
+ * @param {String} state
|
|
|
+ * Either "foreground" or "background"
|
|
|
+ * @param {String} json
|
|
|
+ * A custom (JSON) string
|
|
|
+ */
|
|
|
+exports.onclick = function (id, state, json) {};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Fires if the notification was canceled.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * The ID of the notification
|
|
|
+ * @param {String} state
|
|
|
+ * Either "foreground" or "background"
|
|
|
+ * @param {String} json
|
|
|
+ * A custom (JSON) string
|
|
|
+ */
|
|
|
+exports.oncancel = function (id, state, json) {};
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @private
|
|
|
+ *
|
|
|
+ * Merges custom properties with the default values.
|
|
|
+ *
|
|
|
+ * @param {Object} options
|
|
|
+ * Set of custom values
|
|
|
+ *
|
|
|
+ * @retrun {Object}
|
|
|
+ * The merged property list
|
|
|
+ */
|
|
|
+exports.mergeWithDefaults = function (options) {
|
|
|
+ var defaults = this.getDefaults();
|
|
|
+
|
|
|
+ for (var key in defaults) {
|
|
|
+ if (options[key] === undefined) {
|
|
|
+ options[key] = defaults[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return options;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * @private
|
|
|
+ *
|
|
|
+ * Merges the platform specific properties into the default properties.
|
|
|
+ *
|
|
|
+ * @return {Object}
|
|
|
+ * The default properties for the platform
|
|
|
+ */
|
|
|
+exports.applyPlatformSpecificOptions = function () {
|
|
|
+ var defaults = this._defaults;
|
|
|
+
|
|
|
+ switch (device.platform) {
|
|
|
+ case 'Android':
|
|
|
+ defaults.icon = 'icon';
|
|
|
+ defaults.smallIcon = null;
|
|
|
+ defaults.ongoing = false;
|
|
|
+ defaults.led = 'FFFFFF'; /*RRGGBB*/
|
|
|
+ defaults.sound = 'TYPE_NOTIFICATION'; break;
|
|
|
+ case 'iOS':
|
|
|
+ defaults.sound = ''; break;
|
|
|
+ case 'WinCE': case 'Win32NT':
|
|
|
+ defaults.smallImage = null;
|
|
|
+ defaults.image = null;
|
|
|
+ defaults.wideImage = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ return defaults;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * @private
|
|
|
+ *
|
|
|
+ * Creates a callback, which will be executed within a specific scope.
|
|
|
+ *
|
|
|
+ * @param {Function} callbackFn
|
|
|
+ * The callback function
|
|
|
+ * @param {Object} scope
|
|
|
+ * The scope for the function
|
|
|
+ *
|
|
|
+ * @return {Function}
|
|
|
+ * The new callback function
|
|
|
+ */
|
|
|
+exports.createCallbackFn = function (callbackFn, scope) {
|
|
|
+ if (typeof callbackFn != 'function')
|
|
|
+ return;
|
|
|
+
|
|
|
+ return function () {
|
|
|
+ callbackFn.apply(scope || this, arguments);
|
|
|
+ };
|
|
|
+};
|
|
|
+
|