1 /*
  2  * This is utility cordova_plugin (TV specific API).
  3  * Apache License (2004). See http://www.apache.org/licenses/LICENSE-2.0
  4  *
  5  * Copyright (c) 2014, LG Electronics, Inc.
  6  */
  7 
  8 /**
  9  * This represents the utility API itself, and provides a global namespace for operating utility service.
 10  * @class
 11  */
 12 cordova.define('cordova/plugin/utility', function (require, exports, module) { // jshint ignore:line
 13     
 14     function log(msg) {
 15     //    //console.log//will be removed // jshint ignore:line
 16     }
 17     
 18     var service;
 19     if (window.PalmSystem) { // jshint ignore:line
 20         log("Window.PalmSystem Available");
 21         service = require('cordova/plugin/webos/service');
 22     } else {
 23         service = {
 24             Request : function(uri, params) {
 25                 log(uri + " invoked. But I am a dummy because PalmSystem is not available");
 26                         
 27                 if (typeof params.onFailure === 'function') {
 28                     params.onFailure({
 29                         returnValue:false,
 30                         errorText:"PalmSystem Not Available. Cordova is not installed?"
 31                     });
 32                }
 33         }};
 34     }
 35 
 36     /**
 37      * utility interface
 38      */
 39     var Utility = function () {
 40     };
 41     
 42     function checkErrorCodeNText(result, errorCode, errorText) {
 43         
 44         if (result.errorCode === undefined || result.errorCode === null ) {
 45             result.errorCode = errorCode;
 46         }
 47         if (result.errorText ===undefined || result.errorText === null) {
 48             result.errorText = errorText;
 49         }
 50     }
 51 
 52     var version = null;
 53     var platformInfoObj = {}; 
 54     function checkPlatformVersion(cb) {
 55 
 56         if (version === null) {
 57 
 58             service.Request('luna://com.webos.service.tv.systemproperty', {
 59                 method: 'getSystemInfo',
 60                 parameters: {
 61                     keys: ["sdkVersion", "boardType"]
 62                 },
 63                 onSuccess: function(result) {
 64                     log("getPlatformInfo: onSuccess");
 65                     log("version : " + result.sdkVersion);
 66 
 67                     var temp = result.sdkVersion.split('.');
 68                     if (temp.length >= 1 && temp[0] === '1') {
 69                         platformInfoObj = {
 70                             webOSVer: 1,
 71                             chipset: result.boardType.split("_")[0]
 72                         };
 73                     } else if (temp.length >= 1 && temp[0] === '2') {
 74                         platformInfoObj = {
 75                             webOSVer: 2,
 76                             chipset: result.boardType.split("_")[0]
 77                         };
 78                     } else if (temp.length >= 1 && temp[0] === '3') {
 79                         platformInfoObj = {
 80                             webOSVer: 3,
 81                             chipset: result.boardType.split("_")[0]
 82                         };
 83                     } else {
 84                         platformInfoObj = {
 85                             webOSVer: 0,
 86                             chipset: ""
 87                         };
 88                     }
 89                     version = platformInfoObj.webOSVer;
 90                     cb(platformInfoObj);
 91                 },
 92                 onFailure: function(error) {
 93                     log("getPlatformInfo: onFailure");
 94                     platformInfoObj = {
 95                         webOSVer: 0,
 96                         chipset: ""
 97                     }
 98                     cb(platformInfoObj);
 99                 }
100             });
101 
102         } else {
103             cb(platformInfoObj);
104         }
105     }
106 
107 		/**
108      * create ToastMessage
109      * @class Utility
110      * @param {Function} successCallback success callback function.
111      * @param {Function} errorCallback failure callback function.     
112      * @param {Object}
113      * <div align=left>
114      * <table class="hcap_spec" width=400>
115      *   <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead>
116      *   <tbody>
117      *       <tr><th>msg</th><th>String</th><th>output string to toast message</th><th>required</th></tr>
118      *   </tbody>
119      * </table>
120      * </div>
121      * @return <p>If the method is successfully executed, call the success callback function without a parameter.</br>
122      * If an error occurs, failure callback function is called with failure callback object as a parameter.</p>
123      * @example
124      * // Javascript code
125      * 
126      * function createToast () {
127      *   var options = {
128      *      msg : "test message"
129      *   };   
130      *     
131      *   function successCb() {
132      *      // Do something
133      *   }
134      *
135      *   function failureCb(cbObject) {
136      *      var errorCode = cbObject.errorCode;
137      *      var errorText = cbObject.errorText;
138      *      console.log ("Error Code [" + errorCode + "]: " + errorText);
139      *   }
140      *
141      *   var utility = new Utility();
142      *   utility.createToast(successCb, failureCb, options);
143      * }
144      * @since 1.4
145      */
146     Utility.prototype.createToast = function (successCallback, errorCallback, options) {
147             log("createToast: " + options.msg);
148 
149             if (options.msg === null && typeof errorCallback === 'function') {
150                 var result = {};
151                 checkErrorCodeNText(result, "UTCT", "Utility.createToast returns failure. command was not defined.");
152                 errorCallback(result);
153                 log("Utility.createToast invalid ");
154                 return;
155             }
156 
157             service.Request("luna://com.webos.service.commercial.signage.storageservice/", {
158                 method: "createToast",
159                 parameters: {
160                     text : options.msg
161                 },
162                 onSuccess: function(result) {
163                     log("createToast: On Success");
164 
165                     if (result.returnValue === true) {
166                         if (typeof successCallback === 'function') {
167                             successCallback();
168                         }
169                     }
170                 },
171                 onFailure: function(result) {
172                     log("createToast: On Failure");
173                     delete result.returnValue;
174                     if (typeof errorCallback === 'function') {
175                         checkErrorCodeNText(result, "UTCT", "Utility.createToast returns failure.");
176                         errorCallback(result);
177                     }
178                 }
179             });
180 
181             log("Utility.createToast Done");                    
182     };
183 
184     module.exports = Utility;
185 });
186 
187 Utility = cordova.require('cordova/plugin/utility'); // jshint ignore:line
188 
189