blob: 9a3b559382c43931af90e0b97338f5e932c325d5 [file] [log] [blame]
/*
*
* 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.
*
*/
/*
* This class provides access to notifications on the device.
*/
function Notification() {
};
/*
* adds a dashboard to the WebOS app
* @param {String} url
* @param {String} html
* Example:
* navigator.notification.newDashboard("dashboard.html");
*/
Notification.prototype.newDashboard = function(url, html) {
var win = window.open(url, "_blank", "attributes={\"window\":\"dashboard\"}");
html && win.document.write(html);
win.PalmSystem.stageReady();
};
/*
* Displays a banner notification. If specified, will send your 'response' object as data via the 'palmsystem' DOM event.
* If no 'icon' filename is specified, will use a small version of your application icon.
* @param {String} message
* @param {Object} response
* @param {String} icon
* @param {String} soundClass class of the sound; supported classes are: "ringtones", "alerts", "alarm", "calendar", "notification"
* @param {String} soundFile partial or full path to the sound file
* @param {String} soundDurationMs of sound in ms
* Example:
* navigator.notification.showBanner('test message');
*/
Notification.prototype.showBanner = function(message, response, icon, soundClass, soundFile, soundDurationMs) {
var response = response || {
banner: true
};
PalmSystem.addBannerMessage(message, JSON.stringify(response), icon, soundClass, soundFile, soundDurationMs);
};
/**
* Remove a banner from the banner area. The category parameter defaults to 'banner'. Will not remove
* messages that are already displayed.
* @param {String} category
Value defined by the application and usually same one used in {@link showBanner}.
It is used if you have more than one kind of banner message.
*/
Notification.prototype.removeBannerMessage = function(category) {
var bannerKey = category || 'banner';
var bannerId = this.banners.get(bannerKey);
if (bannerId) {
try {
PalmSystem.removeBannerMessage(bannerId);
} catch(removeBannerException) {
window.debug.error(removeBannerException.toString());
}
}
};
/*
* Remove all pending banner messages from the banner area. Will not remove messages that are already displayed.
*/
Notification.prototype.clearBannerMessage = function() {
PalmSystem.clearBannerMessage();
};
/*
* This function vibrates the device
* @param {number} duration The duration in ms to vibrate for.
* @param {number} intensity The intensity of the vibration
*/
Notification.prototype.vibrate = function(duration, intensity) {
//the intensity for palm is inverted; 0=high intensity, 100=low intensity
//this is opposite from our api, so we invert
if (isNaN(intensity) || intensity > 100 || intensity <= 0)
intensity = 0;
else
intensity = 100 - intensity;
// if the app id does not have the namespace "com.palm.", an error will be thrown here
//this.vibhandle = new Mojo.Service.Request("palm://com.palm.vibrate", {
this.vibhandle = navigator.service.Request("palm://com.palm.vibrate", {
method: 'vibrate',
parameters: {
'period': intensity,
'duration': duration
}
},
false);
};
/*
* Plays the specified sound
* @param {String} soundClass class of the sound; supported classes are: "ringtones", "alerts", "alarm", "calendar", "notification"
* @param {String} soundFile partial or full path to the sound file
* @param {String} soundDurationMs of sound in ms
*/
Notification.prototype.beep = function(soundClass, soundFile, soundDurationMs) {
PalmSystem.playSoundNotification(soundClass, soundFile, soundDurationMs);
};
/*
* displays a notification
* @param {String} message
* @param {Object} response
* @param {String} icon
*/
Notification.prototype.alert = function(message, response, icon) {
var response = response || {
banner: true
};
navigator.notification.showBanner(message, response, icon);
};
if (typeof navigator.notification == 'undefined') {
navigator.notification = new Notification();
alert = navigator.notification.alert;
}