diff options
Diffstat (limited to 'packages/notificationbox/lib')
-rw-r--r-- | packages/notificationbox/lib/main.js | 16 | ||||
-rw-r--r-- | packages/notificationbox/lib/notification-box.js | 129 |
2 files changed, 0 insertions, 145 deletions
diff --git a/packages/notificationbox/lib/main.js b/packages/notificationbox/lib/main.js deleted file mode 100644 index 0d17404..0000000 --- a/packages/notificationbox/lib/main.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyrights Loic J. Duros 2012 - * lduros@member.fsf.org - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -var self = require("sdk/self"); -var notification = require("notification-box").NotificationBox({ - 'value': 'important-message', - 'label': 'You have been warned...', - 'priority': 'WARNING_HIGH', - 'image': self.data.url("gnu-icon.png"), - 'buttons': [{'label': "Gotcha", - 'onClick': function () { console.log("You clicked the important button!"); }}] -}); diff --git a/packages/notificationbox/lib/notification-box.js b/packages/notificationbox/lib/notification-box.js deleted file mode 100644 index 94b26cd..0000000 --- a/packages/notificationbox/lib/notification-box.js +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyrights Loic J. Duros 2012 - * lduros@member.fsf.org - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -const { Cc, Ci } = require("chrome"); -const { getMostRecentBrowserWindow } = require('sdk/window/utils'); -/* I haven't found this sort of validation functions in the SDK, -except for the deprecated api-utils module. */ -let isString = function (str) { - return typeof(str) == 'string' || str instanceof String; -}; - -let isArray = function (obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; -}; - -exports.NotificationBox = function (options) { - options = options || {}; - let mainWindow = getWindow(); - let nb = mainWindow.gBrowser.getNotificationBox(); - let notification, priority, label, image, value, buttons = []; - - if (options.value && isString(options.value)) { - notification = nb.getNotificationWithValue(options.value); - value = options.value; - } - else { - notification = nb.getNotificationWithValue(''); - value = ''; - } - - // Add label or create empty notification. - if (options.label && isString(options.label)) - label = options.label; - else - label = ""; - - // Set priority of the notification (from info low, to critical - // block. - if (options.priority && options.priority in PRIORITY) - priority = nb[PRIORITY[options.priority]]; - else - priority = nb[PRIORITY.INFO_LOW]; - - // Set a custom icon for the notification or use the regular info - // icon. - if (options.image && isString(options.image)) - image = options.image; - else - image = 'chrome://browser/skin/Info.png'; - - // Add buttons. - if (isArray(options.buttons)) { - for (let i = 0, length = options.buttons.length; i < length; i++) { - buttons.push(NotificationButton(options.buttons[i])); - } - } - else if (typeof(options.buttons) === 'object') { - // If it's not an array of buttons, then it should be a single button. - buttons.push(NotificationButton(options.buttons)); - } - else { - buttons = null; - } - - // add new notification to notificationbox. - nb.appendNotification(label, value, - image, - priority, buttons); - - return {'notificationbox': nb, 'notification': notification}; -}; - - - -var NotificationButton = function (options) { - - options = options || {}; - let accessKey, onClick, label, popup; - - if (options.accessKey) - accessKey = options.accessKey; - else - accessKey = ''; - - if (options.onClick) - onClick = options.onClick; - else - onClick = function () {}; - - if (options.label) - label = options.label; - else - label = ""; - - // no popup for now... maybe we can use a panel later. - popup = null; - - return {label: label, - accessKey: accessKey, - callback: onClick, - popup: popup}; - -}; - -const PRIORITY = { - 'INFO_LOW': 'PRIORITY_INFO_LOW', - 'INFO_MEDIUM': 'PRIORITY_INFO_MEDIUM', - 'INFO_HIGH': 'PRIORITY_INFO_HIGH', - 'WARNING_LOW': 'PRIORITY_WARNING_LOW', - 'WARNING_MEDIUM': 'PRIORITY_WARNING_MEDIUM', - 'WARNING_HIGH': 'PRIORITY_WARNING_HIGH', - 'CRITICAL_LOW': 'PRIORITY_CRITICAL_LOW', - 'CRITICAL_MEDIUM': 'PRIORITY_CRITICAL_MEDIUM', - 'CRITICAL_HIGH': 'PRIORITY_CRITICAL_HIGH', - 'CRITICAL_BLOCK': 'PRIORITY_CRITICAL_BLOCK' -}; - -let getWindow = function () { - return getMostRecentBrowserWindow(); -}; - -exports.PRIORITY = PRIORITY; - |