mypackage_wrt/preview/script/lib/sapi/SysInfo.js
author victorp@symbian.org
Fri, 30 Apr 2010 15:01:03 +0100
changeset 42 20be4dd42b12
permissions -rwxr-xr-x
My package widget code
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     1
/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     2
 * SysInfo.js
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     3
 * 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     4
 * Nokia Web Runtime Service API emulation 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     5
 * WRT v1.1
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     6
 * 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     7
 * Copyright 2009 Nokia Corporation. All rights reserved.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     8
*/
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     9
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    10
 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    11
(function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    12
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    13
	var provider = 'Service.SysInfo' ,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    14
		Interface = 'ISysInfo';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    15
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    16
	var supportedEntitiesAndKeys = {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    17
		"battery":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    18
			"batterystrength":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    19
			"chargingstatus":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    20
		},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    21
		"connectivity":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    22
			"bluetooth":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    23
			"infrared":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    24
			"activeconnections":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    25
			"connectionstatus":{"GetInfo":false,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    26
			"wlanmacaddress":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    27
		},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    28
      	"device":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    29
			"firmwareversion":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    30
			"platformversion":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    31
			"producttype":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    32
			"manufacturer":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    33
			"machineid":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    34
			"phonemodel":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    35
			"imei":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    36
		},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    37
      	"display":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    38
			"brightness":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    39
			"screensavertimeout":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    40
			"userinactivity":{"GetInfo":false,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    41
			"keyguardtime":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    42
			"autolocktime":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    43
			"autolockstatus":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    44
			"wallpaper":{"GetInfo":false,"SetInfo":true,"GetNotification":false,"GetInfoModeSync":false,"InputDataType":"string"},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    45
			"lighttimeout":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    46
			"displayresolution":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    47
			"displayorientation":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    48
		},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    49
      	"features":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    50
			"bluetooth":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    51
			"infrared":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    52
			"camera":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    53
			"memorycard":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    54
			"fmradio":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    55
			"qwerty":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    56
			"wlan":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    57
			"usb":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    58
			"pen":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    59
			"led":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    60
			"coverui":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    61
			"sidevolumekeys":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    62
			"vibra":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    63
		},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    64
      	"general":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    65
			"accessorystatus":{"GetInfo":false,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    66
			"connectedaccessories":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    67
			"inputlanguage":{"GetInfo":true,"SetInfo":true,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    68
			"supportedlanguages":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    69
			"predictivetext":{"GetInfo":true,"SetInfo":true,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    70
			"vibraactive":{"GetInfo":true,"SetInfo":true,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    71
			"availableusbmodes":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    72
			"activeusbmode":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    73
			"flipstatus":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    74
			"gripstatus":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    75
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    76
		},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    77
      	"memory":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    78
			"driveinfo":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    79
			"listdrives":{"GetInfo":true,"SetInfo":false,"GetNotification":false,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    80
			"criticalmemory":{"GetInfo":false,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    81
			"memorycard":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    82
		},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    83
      	"network":{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    84
			"signalstrength":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    85
			"registrationstatus":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    86
			"networkmode":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":true},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    87
			"currentnetwork":{"GetInfo":true,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    88
			"locationarea":{"GetInfo":false,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    89
			"cellid":{"GetInfo":false,"SetInfo":false,"GetNotification":true,"GetInfoModeSync":false}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    90
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    91
	  };
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    92
	  
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    93
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    94
	 * SysInfo service
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    95
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    96
	var SysInfoService = function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    97
		this.GetInfo 			= __GetInfo;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    98
		this.SetInfo 			= __SetInfo;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    99
		this.GetNotification 	= __GetNotification;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   100
		this.Cancel 			= __Cancel;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   101
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   102
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   103
	device.implementation.extend(provider, Interface, new SysInfoService() );
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   104
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   105
	var	context = device.implementation.context,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   106
		_t = context._t,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   107
		method = '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   108
		result = false,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   109
		DBase = null,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   110
		default_device = 'default';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   111
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   112
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   113
	 * SysInfo: GetInfo
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   114
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   115
	 * @param {function} callback function for async call (optional)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   116
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   117
	function __GetInfo(criteria, callback){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   118
		var retVal = ValidateArguments("GetInfo",criteria,callback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   119
		if(retVal.ErrorCode != 0)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   120
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   121
			return retVal;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   122
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   123
		//	Async call
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   124
		if (typeof callback == 'function') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   125
			return context.callAsync(this, arguments.callee, criteria, callback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   126
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   127
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   128
		DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   129
		var returnValue = DBase;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   130
		returnValue = returnValue[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   131
		returnValue.Key = criteria.Key;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   132
		returnValue.Entity = criteria.Entity;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   133
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   134
		if(/^Connectivity$/i.test(criteria.Entity)&& /^ActiveConnections$/i.test(criteria.Key))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   135
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   136
			var temp = returnValue.ConnectionList;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   137
			returnValue.ConnectionList = context.Iterator(temp);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   138
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   139
		else if(/^General$/i.test(criteria.Entity)&& /^ConnectedAccessories$/i.test(criteria.Key))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   140
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   141
			var temp = returnValue.AccessoryList;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   142
			returnValue.AccessoryList = context.Iterator(temp);			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   143
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   144
		else if(/^Memory$/i.test(criteria.Entity)&& /^DriveInfo$/i.test(criteria.Key))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   145
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   146
			try {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   147
				var temp = criteria.SystemData.Drive;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   148
				if(temp.length > 3)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   149
				{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   150
					temp = temp.substring(0,3);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   151
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   152
				temp= returnValue.Drive[temp.toUpperCase()];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   153
				if (!temp) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   154
					return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.no_msg);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   155
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   156
				var driveInfo = new Object();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   157
				driveInfo.Key = returnValue.Key;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   158
				driveInfo.Entity = returnValue.Entity;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   159
				driveInfo.DriveInfo = temp;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   160
				return context.Result(driveInfo);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   161
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   162
			catch(err)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   163
			{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   164
				return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.no_msg);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   165
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   166
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   167
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   168
		return context.Result(returnValue);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   169
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   170
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   171
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   172
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   173
	 * SysInfo: SetInfo
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   174
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   175
	 * @param {function} callback function for async call (optional)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   176
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   177
	function __SetInfo(criteria, callback){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   178
		var retVal = ValidateArguments("SetInfo",criteria,callback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   179
		if(retVal.ErrorCode != 0)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   180
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   181
			return retVal;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   182
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   183
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   184
		//	Current implementation support only for 'General' -> 'InputLanguage' || 'PredictiveText'
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   185
		if (/^General$/i.test(criteria.Entity) && ( /^InputLanguage$/i.test(criteria.Key) || /^PredictiveText/i.test(criteria.Key) || /^VibraActive/i.test(criteria.Key))) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   186
			//	get the DBase data
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   187
			DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   188
			var returnValue = DBase;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   189
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   190
			//	Check the 'SupportedLanguages' entries for Setting the new Status
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   191
			if (/^InputLanguage$/i.test(criteria.Key)) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   192
				var found = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   193
				var languageList = returnValue['general']['supportedlanguages']['LanguageList'];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   194
				for (var key in languageList) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   195
					if (languageList[key] == criteria.SystemData.Status) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   196
						found = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   197
					}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   198
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   199
				//	Update the 'InputLanguage' if the value value found in the ['SupportedLanguages']
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   200
				if (found) 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   201
					returnValue[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()]['Status'] = criteria.SystemData.Status;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   202
				else 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   203
					return error(device.implementation.ERR_SERVICE_NOT_SUPPORTED, msg.not_supported);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   204
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   205
			else if (/^PredictiveText$/i.test(criteria.Key)) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   206
				if (criteria.SystemData.Status == 0 || criteria.SystemData.Status == 1) 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   207
					returnValue[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()]['Status'] = criteria.SystemData.Status;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   208
				else 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   209
					return error(device.implementation.ERR_NOT_FOUND, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   210
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   211
			else if (/^VibraActive$/i.test(criteria.Key)) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   212
				if (criteria.SystemData.Status == 0 || criteria.SystemData.Status == 1) 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   213
					returnValue[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()]['Status'] = criteria.SystemData.Status;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   214
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   215
			else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   216
				return error(device.implementation.ERR_SERVICE_NOT_SUPPORTED, msg.not_supported);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   217
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   218
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   219
		else if(/^Display/i.test(criteria.Entity) && /^Wallpaper/i.test(criteria.Key)) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   220
			if(typeof criteria.SystemData.StringData == 'undefined')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   221
				return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingArgs);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   222
			returnValue[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()]['StringData'] = criteria.SystemData.StringData;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   223
			return context.ErrorResult(device.implementation.ERR_SUCCESS);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   224
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   225
		return context.Result(result);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   226
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   227
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   228
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   229
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   230
	 * SysInfo: GetNotification
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   231
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   232
	 * @param {function} callback function for async call
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   233
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   234
	function __GetNotification(criteria, callback){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   235
		var retVal = ValidateArguments("GetNotification",criteria,callback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   236
		if(retVal.ErrorCode != 0)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   237
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   238
			return retVal;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   239
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   240
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   241
		// unsupported
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   242
		if (!/^(Battery|Memory)$/i.test(criteria.Entity) ||
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   243
			!/^(BatteryStrength|ChargingStatus|MemoryCard)$/i.test(criteria.Key)) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   244
			context.notify(_t('%s:: GetNotification : entity %s, key %s not implemented in preview.').arg(provider, criteria.Entity, criteria.Key));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   245
			// register callback anyway so Cancel works. 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   246
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   247
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   248
		// evenType = 'entity.key'
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   249
		var eventType = criteria.Entity+'.'+criteria.Key;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   250
						
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   251
		// process notify
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   252
		return context.addListener(provider, eventType, criteria, callback, notifyHandler);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   253
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   254
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   255
	function notifyHandler(transactionID, criteria, callback, data){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   256
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   257
		var result,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   258
			eventCode = {completed:2, error:4, progress:9},
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   259
			code = eventCode.progress;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   260
		try{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   261
			DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   262
			var entity = criteria.Entity.toLowerCase(),
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   263
				key = criteria.Key.toLowerCase();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   264
						
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   265
			// make a copy of return value
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   266
			var returnValue = context.extend({},DBase[entity][key]);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   267
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   268
			// augment with data
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   269
			context.extend(returnValue, data);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   270
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   271
			result = context.Result(returnValue);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   272
		} 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   273
		catch(e){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   274
			code = eventCode.error;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   275
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   276
		callback(transactionID, code, result);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   277
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   278
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   279
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   280
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   281
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   282
	 * SysInfo: Cancel
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   283
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   284
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   285
	function __Cancel(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   286
		method = 'Cancel';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   287
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   288
		if (!criteria || !criteria.TransactionID)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   289
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingTID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   290
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   291
		var found = context.removeListener(provider, null, criteria.TransactionID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   292
		if (!found)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   293
			return error(device.implementation.ERR_NOT_FOUND);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   294
		else
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   295
			return context.ErrorResult(device.implementation.ERR_SUCCESS);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   296
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   297
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   298
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   299
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   300
	/*******************************
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   301
	 * helper functions
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   302
	 *******************************/
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   303
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   304
	function error(code, msg /*, args...*/){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   305
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   306
		var args = ['SysInfo',method].concat([].slice.call(arguments,2));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   307
		msg = msg ? _t().arg.apply(msg,args) : undefined;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   308
		return context.ErrorResult(code, msg);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   309
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   310
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   311
	function cancelRegisteredNotify(result)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   312
	{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   313
		__Cancel({'TransactionID':result.TransactionID});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   314
		method = 'GetNotification';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   315
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   316
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   317
	/** 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   318
	 * error messages
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   319
	 * order of %s args: Service name, method name, parameter name 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   320
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   321
	var msg = {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   322
		badType				: '%s: %s: Type is invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   323
		badSysInfo			: '%s: %s: SysInfoName is invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   324
		missingSysInfo		: '%s: %s: SysInfoName is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   325
		missingTID 			: '%s: %s: Transaction ID missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   326
		not_supported 		: '%s: %s: Not Supported',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   327
		is_invalid			: '%s: %s: Is invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   328
		missingArgs			: '%s: %s: SystemData Argument Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   329
		inSufficientArgs	: '%s: %s: Insufficient Arguments to process',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   330
		missingInputParam	: '%s: %s: Input Parameter Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   331
		not_supportedSyncVer: '%s: %s: Sync Version Not Supported',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   332
		noEntity			: '%s: %s: Entity: Input Parameter Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   333
		noKey				: '%s: %s: Key: Input Parameter Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   334
		IncorrectSytemData	: '%s: %s: Incorrect SystemData Type, SystemData Must be a Map',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   335
		callbackNotFound	: '%s: %s: Callback object not found',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   336
		commandNotFound		: '%s: %s: Command Not Supported',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   337
		unsupInterface		: 'SysInfo:Requested interface not supported by the provider',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   338
		no_msg				: '%s: %s: '
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   339
	};
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   340
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   341
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   342
	 * Common validator for all functions
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   343
	 * 	 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   344
	 *  
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   345
	 * @param {arguments} function name and arguments of calling function
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   346
	 * @return {Result} Error object
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   347
	 */		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   348
	  function ValidateArguments(funName,criteria,callback)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   349
	  {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   350
	  	method = funName;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   351
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   352
		try {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   353
			if (/^GetNotification$/i.test(funName) && typeof callback != "function") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   354
				return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.not_supportedSyncVer);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   355
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   356
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   357
			if (typeof criteria == "undefined" || typeof criteria.Entity == "undefined" || typeof criteria.Key == "undefined") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   358
				return error(device.implementation.ERR_MISSING_ARGUMENT, msg.inSufficientArgs);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   359
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   360
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   361
			if (criteria.Entity == "") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   362
				return error(device.implementation.ERR_MISSING_ARGUMENT, msg.noEntity);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   363
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   364
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   365
			if (criteria.Key == "") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   366
				return error(device.implementation.ERR_MISSING_ARGUMENT, msg.noKey);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   367
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   368
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   369
			if (/^SetInfo$/i.test(funName)) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   370
				if (typeof criteria.SystemData == "undefined" || criteria.SystemData == '') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   371
					return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingArgs);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   372
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   373
				if (typeof criteria.SystemData.StringData == "undefined" && typeof criteria.SystemData.Status == "undefined") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   374
					return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingArgs);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   375
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   376
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   377
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   378
			if (typeof supportedEntitiesAndKeys[criteria.Entity.toLowerCase()] == 'undefined' || typeof supportedEntitiesAndKeys[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()] == 'undefined') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   379
				return error(device.implementation.ERR_NOT_FOUND, msg.no_msg);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   380
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   381
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   382
			if (!supportedEntitiesAndKeys[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()][funName]) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   383
				return error(device.implementation.ERR_NOT_FOUND, msg.no_msg);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   384
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   385
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   386
			if (funName == "GetInfo" && !supportedEntitiesAndKeys[criteria.Entity.toLowerCase()][criteria.Key.toLowerCase()]["GetInfoModeSync"] && typeof callback != "function") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   387
				return error(device.implementation.ERR_MISSING_ARGUMENT, msg.not_supportedSyncVer);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   388
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   389
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   390
			return context.ErrorResult(device.implementation.ERR_SUCCESS, "");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   391
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   392
		catch(err){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   393
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   394
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   395
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   396
	  }
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   397
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   398
}) ()