/* * Copyright 2013 Research In Motion Limited. * * Licensed 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. */ /* global qnx, PluginResult */ function showDialog(args, dialogType, result) { //Unpack and map the args var msg = JSON.parse(decodeURIComponent(args[0])), title = JSON.parse(decodeURIComponent(args[1])), btnLabel = JSON.parse(decodeURIComponent(args[2])); if (!Array.isArray(btnLabel)) { //Converts to array for (string) and (string,string, ...) cases btnLabel = btnLabel.split(","); } if (msg && typeof msg === "string") { msg = msg.replace(/^"|"$/g, "").replace(/\\"/g, '"'); } else { result.error("message is undefined"); return; } var messageObj = { title : title, htmlmessage : msg, dialogType : dialogType, optionalButtons : btnLabel }; //TODO replace with getOverlayWebview() when available in webplatform qnx.webplatform.getWebViews()[2].dialog.show(messageObj, function (data) { if (typeof data === "number") { //Confirm dialog call back needs to be called with one-based indexing [1,2,3 etc] result.callbackOk(++data, false); } else { //Prompt dialog callback expects object result.callbackOk({ buttonIndex: data.ok ? 1 : 0, input1: (data.oktext) ? decodeURIComponent(data.oktext) : "" }, false); } }); result.noResult(true); } module.exports = { alert: function (success, fail, args, env) { var result = new PluginResult(args, env); if (Object.keys(args).length < 3) { result.error("Notification action - alert arguments not found."); } else { showDialog(args, "CustomAsk", result); } }, confirm: function (success, fail, args, env) { var result = new PluginResult(args, env); if (Object.keys(args).length < 3) { result.error("Notification action - confirm arguments not found."); } else { showDialog(args, "CustomAsk", result); } }, prompt: function (success, fail, args, env) { var result = new PluginResult(args, env); if (Object.keys(args).length < 3) { result.error("Notification action - prompt arguments not found."); } else { showDialog(args, "JavaScriptPrompt", result); } } };