mypackage_wrt/preview/script/lib/sapi/Landmarks.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
 * Landmarks.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.Landmarks',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    14
		Interface = 'IDataSource';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    15
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    16
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    17
	 * Landmark service
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    18
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    19
	var LandmarkService = function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    20
		this.New 		= __New;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    21
		this.GetList 	= __GetList;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    22
		this.Add		= __Add;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    23
		this.Delete		= __Delete;		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    24
		this.Import 	= __Import;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    25
		this.Export		= __Export;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    26
		this.Organise	= __Organise;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    27
		this.Cancel		= __Cancel;				
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    28
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    29
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    30
	device.implementation.extend(provider, Interface, new LandmarkService() );
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    31
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    32
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    33
	/******************************************************/	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    34
	/******************************************************/	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    35
	/******************************************************/	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    36
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    37
	var	context = device.implementation.context,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    38
		_t = context._t,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    39
		method = '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    40
		result = false,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    41
		DBase = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    43
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    44
	 * Landmarks: New
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    45
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    46
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    47
	function __New(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    48
		if ((result = validator.apply('New', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    49
			return result; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    50
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    51
		if (typeof criteria.Type == 'undefined') 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    52
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    53
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    54
		if (!/^(Landmark|Category)$/i.test(criteria.Type)) 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    55
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.badType);		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    56
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    57
		var returnValue;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    58
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    59
		if(criteria.Type == 'Landmark')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    60
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    61
			returnValue = {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    62
				'LandmarkName'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    63
				'id' 				: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    64
				'CategoryInfo'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    65
				'LandmarkDesc'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    66
				'LandmarkPosition'	: {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    67
										'Latitude'	: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    68
										'Longitude' : '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    69
										'Altitude' 	: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    70
										'HAccuracy' : '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    71
										'VAccuracy' : '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    72
										'VAccuracy' : ''
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    73
									  },
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    74
				'CoverageRadius'	: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    75
				'IconFile'			: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    76
				'IconIndex'			: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    77
				'IconMaskIndex'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    78
				'LandmarkFields'	: {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    79
										'Street'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    80
										'BuildingName'	: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    81
										'District'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    82
										'City'			: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    83
										'AreaCode'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    84
										'Telephone'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    85
										'Country'		: ''
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    86
									  }
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    87
			};
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    88
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    89
		else //Category
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    90
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    91
			returnValue = {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    92
				'CategoryName'	: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    93
				'id' 			: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    94
				'GlobalId'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    95
				'IconFile'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    96
				'IconIndex'		: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    97
				'IconMaskIndex'	: ''
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    98
			};
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    99
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   100
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   101
		return context.Result(returnValue);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   102
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   103
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   104
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   105
	 * Landmarks: GetList
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   106
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   107
	 * @param {Function} [callback] function for async call (optional)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   108
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   109
	function __GetList(criteria, callback){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   110
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   111
		if ((result = validator.apply('GetList', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   112
			return result; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   113
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   114
		if (typeof criteria.Type == 'undefined') 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   115
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   116
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   117
		if (!/^(Landmark|Category|Database)$/i.test(criteria.Type)) 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   118
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   119
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   120
		if (criteria.Filter)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   121
			context.notify(_t('%s:: GetList : filter not implemented in preview').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   122
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   123
 		if(criteria.Sort)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   124
			context.notify(_t('%s:: GetList : Sort is not implemented in preview').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   125
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   126
		if (typeof callback == 'function') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   127
			return context.callAsync(this, arguments.callee, criteria, callback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   128
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   129
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   130
		var returnValue = [], 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   131
			match = null,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   132
			filter = criteria.Filter || null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   133
 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   134
		DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   135
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   136
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   137
		if (/Database/i.test(criteria.Type)) {				// Type = Database
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   138
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   139
			returnValue = context.Iterator( DBase.Database || [] );
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   140
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   141
		} else if (/Landmark/i.test(criteria.Type)){ 		// Type = Landmark
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   142
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   143
			returnValue = context.Iterator( DBase[criteria.Type] || [] );
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   144
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   145
		} else {											// Type = Category
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   146
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   147
			// @todo: apply filter criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   148
			returnValue = context.Iterator( DBase[criteria.Type] || [] );
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   149
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   150
		return context.Result(returnValue);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   151
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   152
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   153
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   154
	 * Landmarks: Add
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   155
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   156
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   157
	function __Add(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   158
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   159
		if ((result = validator.apply('Add', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   160
			return result; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   161
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   162
		if (!/^(Landmark|Category)$/i.test(criteria.Type))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   163
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   164
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   165
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   166
		var Data = criteria.Data || false; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   167
		if(!Data){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   168
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingData);
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
		DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   172
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   173
		// unsupported!			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   174
		if (Data.DatabaseURI) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   175
			context.notify(_t('%s:: Add : Data.DatabaseURI not implemented in preview').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   176
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   177
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   178
		var item;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   179
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   180
		// Type = Landmark
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   181
		if (/Landmark/i.test(criteria.Type)){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   182
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   183
			 if (!Data.LandmarkName)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   184
				Data.LandmarkName="";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   185
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   186
			var landmarkPos = Data.LandmarkPosition;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   187
			if (typeof landmarkPos != 'undefined') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   188
				if ((typeof landmarkPos.Latitude == 'undefined' || typeof landmarkPos.Latitude != 'number') &&
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   189
					(typeof landmarkPos.Longitude == 'undefined' || typeof landmarkPos.Longitude != 'number') &&
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   190
					(typeof landmarkPos.Altitude == 'undefined' || typeof landmarkPos.Altitude != 'number') &&
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   191
					(typeof landmarkPos.HAccuracy == 'undefined' || typeof landmarkPos.HAccuracy != 'number') &&
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   192
					(typeof landmarkPos.VAccuracy == 'undefined' || typeof landmarkPos.VAccuracy != 'number')) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   193
						
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   194
						return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   195
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   196
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   197
			// update
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   198
			if (typeof Data.id != 'undefined') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   199
				if(typeof Data.id != 'string')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   200
						return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   201
				
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   202
				var retIndex = findById(DBase.Landmark, Data.id); 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   203
				if (retIndex == -1)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   204
					return error(device.implementation.ERR_NOT_FOUND);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   205
				DBase.Landmark[retIndex] = Data;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   206
				item = Data;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   207
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   208
			// new
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   209
			else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   210
				item = context.extend({}, Data); 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   211
				item.id = String(context.getUniqueID());
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   212
				DBase.Landmark.push(item);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   213
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   214
		} else { // Type = Category
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   215
//			alert(typeof Data.CategoryName);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   216
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   217
			//alert("Data.id : "+Data.id);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   218
			// update
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   219
			if (typeof Data.id != 'undefined') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   220
				if(typeof Data.id != 'string')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   221
						return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   222
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   223
				var retIndex = findById(DBase.Category, Data.id); 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   224
				if (retIndex == -1)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   225
					return error(device.implementation.ERR_NOT_FOUND);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   226
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   227
				DBase.Category[retIndex] = Data;					
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   228
				item = Data;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   229
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   230
			// new
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   231
			else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   232
				if (typeof Data.CategoryName == 'undefined')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   233
					return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingCategoryName);	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   234
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   235
				if(typeof Data.CategoryName != 'string' || Data.CategoryName.length <= 0)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   236
					return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   237
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   238
				var retIndex = findByName(DBase.Category, Data.CategoryName); 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   239
				if (retIndex !=  -1)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   240
					return error(device.implementation.ERR_ENTRY_EXISTS);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   241
					
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   242
				item = context.extend({}, Data); 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   243
				item.id = String(context.getUniqueID());
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   244
				DBase.Category.push(item);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   245
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   246
		} 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   247
		// return success
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   248
		return context.Result(item.id, device.implementation.ERR_SUCCESS);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   249
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   250
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   251
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   252
	 * Landmarks: Delete
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   253
	 * @param {Object} criteria
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 __Delete(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   256
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   257
		if ((result = validator.apply('Delete', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   258
			return result; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   259
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   260
		if (!/^(Landmark|Category)$/i.test(criteria.Type))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   261
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   262
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   263
		var Data = criteria.Data || false; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   264
		if(!Data){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   265
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.missingData);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   266
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   267
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   268
		if (typeof Data.id == 'undefined') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   269
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   270
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   271
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   272
		if (typeof Data.id != 'undefined' && typeof Data.id != 'string') {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   273
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   274
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   275
		if(Data.id.length <= 0 )
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   276
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   277
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   278
		DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   279
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   280
		var type = criteria.Type;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   281
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   282
		// unsupported!			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   283
		if (Data.DBUri) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   284
			context.notify(_t('%s:: Delete : Data.DBUri not implemented in preview').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   285
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   286
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   287
		// for both Landmark & Category:
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   288
		var i,item;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   289
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   290
		for (i in DBase[type]) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   291
			item = DBase[type][i];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   292
			if (Data.id == item.id) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   293
				DBase[type].splice(i, 1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   294
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   295
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   296
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   297
		// return success
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   298
		return error(device.implementation.ERR_SUCCESS);				
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
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   302
	 * Landmarks: Import
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   303
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   304
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   305
	function __Import(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   306
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   307
		if ((result = validator.apply('Import', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   308
			return result; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   309
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   310
		if (!/^(Landmark)$/i.test(criteria.Type))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   311
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   312
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   313
		context.notify(_t('%s:: Import : not implemented in preview.').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   314
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   315
		var Data = criteria.Data || false; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   316
		if(!Data)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   317
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.missingData);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   318
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   319
		if (!Data.SourceFile)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   320
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingSourceFile);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   321
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   322
		if (!Data.MimeType)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   323
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingMimeType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   324
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   325
		if (!/^(application\/vnd.nokia.landmarkcollection\+xml|application\/vnd.nokia.landmark\+wbxml)$/i.test(Data.MimeType))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   326
			return error(device.implementation.ERR_SERVICE_NOT_SUPPORTED, msg.invalidMime);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   327
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   328
		return error(device.implementation.ERR_SUCCESS);		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   329
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   330
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   331
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   332
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   333
	 * Landmarks: Export
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   334
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   335
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   336
	function __Export(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   337
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   338
		if ((result = validator.apply('Export', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   339
			return result; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   340
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   341
		context.notify(_t('%s:: Export : not implemented in preview.').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   342
		if (!/^(Landmark)$/i.test(criteria.Type))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   343
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   344
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   345
		var Data = criteria.Data || false; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   346
		if(!Data){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   347
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.missingData);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   348
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   349
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   350
		if (!Data.DestinationFile)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   351
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingDestFile);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   352
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   353
		if (!Data.MimeType)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   354
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingMimeType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   355
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   356
		if (!Data.IdList)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   357
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingIdList);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   358
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   359
		return error(device.implementation.ERR_SUCCESS);		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   360
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   361
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   362
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   363
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   364
	 * Landmarks: Organise
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   365
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   366
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   367
	function __Organise(criteria){
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 ((result = validator.apply('Organise', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   370
			return result; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   371
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   372
		if (!/^(Landmark)$/i.test(criteria.Type))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   373
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.badType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   374
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   375
		var Data = criteria.Data || false; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   376
		if(!Data){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   377
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.missingData);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   378
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   379
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   380
		if (!Data.id || Data.id == "")
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   381
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   382
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   383
		DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   384
		var categories = DBase['Category'];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   385
		var landmarks  = DBase['Landmark'];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   386
		var found = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   387
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   388
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   389
		for(var i=0;i<categories.length;i++)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   390
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   391
			var category = categories[i];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   392
			if (category.id == Data.id) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   393
				found = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   394
				break;
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
		if(!found)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   398
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   399
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   400
		try{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   401
			if(!Data.IdList || Data.IdList.length <=0)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   402
			{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   403
				return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   404
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   405
		}catch(e){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   406
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.invalidId);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   407
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   408
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   409
		if (!/^(Associate|Disassociate)$/i.test(criteria.OperationType))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   410
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.invalidOpType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   411
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   412
		context.notify(_t('%s:: Organise : not implemented in preview.').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   413
		if(/^Associate$/i.test(criteria.OperationType))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   414
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   415
			for(var i=0;i<landmarks.length;i++)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   416
			{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   417
				for(var j=0;j<Data.IdList.length;j++)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   418
				{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   419
					if(landmarks[i] == Data.IdList[j])
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   420
					{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   421
						if(!landmarks[i].CategoryInfo)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   422
						{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   423
							landmarks[i].CategoryInfo = new Array();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   424
							landmarks[i].CategoryInfo.push(Data.id);					
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   425
						}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   426
						else{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   427
							var landmark = landmarks[i];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   428
							var found = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   429
							for(var k=0;k<landmark.CategoryInfo.length;k++)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   430
							{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   431
								if(landmark.CategoryInfo[k] == Data.id)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   432
									found = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   433
							}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   434
							if(!found)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   435
								landmark.CategoryInfo.push(Data.id);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   436
						}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   437
						
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   438
					}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   439
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   440
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   441
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   442
		else
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   443
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   444
			for(var i=0;i<landmarks.length;i++)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   445
			{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   446
				for(var j=0;j<Data.IdList.length;j++)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   447
				{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   448
					if(landmarks[i] == Data.IdList[j] && landmarks[i].CategoryInfo != undefined)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   449
					{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   450
						var landmark = landmarks[i];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   451
						for(var k=0;k<landmark.CategoryInfo.length;k++)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   452
						{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   453
							if(landmark.CategoryInfo[k] == Data.id)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   454
								landmark.CategoryInfo.splice(k,1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   455
						}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   456
					}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   457
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   458
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   459
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   460
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   461
		return error(device.implementation.ERR_SUCCESS);		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   462
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   463
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   464
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   465
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   466
	 * Landmarks: Cancel
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   467
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   468
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   469
	function __Cancel(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   470
		method = 'Cancel';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   471
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   472
		if ((result = validator.apply('Cancel', arguments)) !== false)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   473
			return result;		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   474
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   475
		if (!criteria.TransactionID)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   476
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingTID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   477
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   478
		clearTimeout(criteria.TransactionID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   479
		return context.ErrorResult(device.implementation.ERR_SUCCESS);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   480
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   481
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   482
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   483
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   484
	/*******************************
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   485
	 * helper functions
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   486
	 *******************************/
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   487
	function error(code, msg /*, args...*/){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   488
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   489
		var args = ['Landmarks',method].concat([].slice.call(arguments,2));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   490
		msg = msg ? _t().arg.apply(msg,args) : undefined;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   491
		return context.ErrorResult(code, msg);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   492
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   493
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   494
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   495
	 * validate common input arguments
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   496
	 * 'this' is string (object) name of calling function
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   497
	 * 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   498
	 * @param {arguments} arguments of calling function
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   499
	 * @return {Result} Result object if error, false if no error.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   500
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   501
	function validator() {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   502
		method = ''+this;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   503
		var	failed = false,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   504
			criteria = arguments[0] || false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   505
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   506
		if (!criteria || typeof criteria != 'object')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   507
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingType);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   508
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   509
		return failed;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   510
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   511
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   512
	function findById(dbase, id){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   513
		for (var i in dbase) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   514
			if (id == dbase[i]['id']) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   515
				return i;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   516
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   517
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   518
		return -1;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   519
	}	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   520
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   521
	function findByName(dbase, name){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   522
		for (var i in dbase) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   523
			if (name == dbase[i]['CategoryName']) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   524
				return i;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   525
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   526
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   527
		return -1;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   528
	}	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   529
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   530
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   531
	/** 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   532
	 * error messages
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   533
	 * order of %s args: Service name, method name, parameter name 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   534
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   535
	var msg = {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   536
		missingType			: '%s%s : Type is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   537
		badType				: '%s%s : Type is invalid',		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   538
		missingData			: '%s%s : Type or Data is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   539
		missingId			: '%s%s : Id is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   540
		invalidId			: '%s%s : id is invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   541
		missingLandmarkName	: '%s%s : Landmrak name Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   542
		missingCategoryName	: '%s%s : CategoryName is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   543
		missingSourceFile	: '%s%s : Import Source Filename is Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   544
		missingMimeType		: '%s%s : MIME type for source file is Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   545
		missingDestFile		: '%s%s : DestinationFile is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   546
		invalidOpType		: '%s%s : OperationType is invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   547
		missingIdList		: '%s%s : Id list is Missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   548
		missingTID 			: '%s%s : TransactionID is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   549
		invalidMime			: '%s%s : MimeType is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   550
		msgNoMsg			: '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   551
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   552
	};
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   553
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   554
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   555
}) ()
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   556