2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 #include <Commons/FunctionDefinition.h>
20 #include <Commons/FunctionDeclaration.h>
22 #include <Commons/Exception.h>
23 #include <dpl/exception.h>
26 #include "plugin_config.h"
28 #define CONTACT_FEATURE_API_READ "http://tizen.org/privilege/contact.read"
29 #define CONTACT_FEATURE_API_WRITE "http://tizen.org/privilege/contact.write"
31 #define CONTACT_DEVICE_CAP_READ "contact.read"
32 #define CONTACT_DEVICE_CAP_WRITE "contact.write"
34 using namespace WrtDeviceApis::Commons;
39 static FunctionMapping createContactFunctions();
41 static FunctionMapping ContactFunctions =
42 createContactFunctions();
44 DEFINE_FUNCTION_GETTER(Contact, ContactFunctions);
46 static FunctionMapping createContactFunctions()
51 ACE_CREATE_DEVICE_CAP(DEVICE_CAP_CONTACT_READ, CONTACT_DEVICE_CAP_READ);
52 ACE_CREATE_DEVICE_CAP(DEVICE_CAP_CONTACT_WRITE, CONTACT_DEVICE_CAP_WRITE);
54 ACE_CREATE_DEVICE_CAPS_LIST(EMPTY_DEVICE_LIST);
56 ACE_CREATE_DEVICE_CAPS_LIST(DEVICE_LIST_CONTACT_READ);
57 ACE_ADD_DEVICE_CAP(DEVICE_LIST_CONTACT_READ, DEVICE_CAP_CONTACT_READ);
59 ACE_CREATE_DEVICE_CAPS_LIST(DEVICE_LIST_CONTACT_WRITE);
60 ACE_ADD_DEVICE_CAP(DEVICE_LIST_CONTACT_WRITE, DEVICE_CAP_CONTACT_WRITE);
65 ACE_CREATE_FEATURE(FEATURE_CONTACT_READ, CONTACT_FEATURE_API_READ);
66 ACE_CREATE_FEATURE(FEATURE_CONTACT_WRITE, CONTACT_FEATURE_API_WRITE);
68 ACE_CREATE_FEATURE_LIST(CONTACT_FEATURES_CONTACT_READ);
69 ACE_ADD_API_FEATURE(CONTACT_FEATURES_CONTACT_READ, FEATURE_CONTACT_READ);
71 ACE_CREATE_FEATURE_LIST(CONTACT_FEATURES_CONTACT_WRITE);
72 ACE_ADD_API_FEATURE(CONTACT_FEATURES_CONTACT_WRITE, FEATURE_CONTACT_WRITE);
78 FunctionMapping contactMapping;
80 //ContactManager.getAddressBooks
81 AceFunction contactManagerGetAddressBooksFunc = ACE_CREATE_FUNCTION(
82 FUNCTION_CONTACT_MANAGER_GET_ADDRESS_BOOKS,
83 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_ADDRESS_BOOKS,
84 CONTACT_FEATURES_CONTACT_READ,
85 DEVICE_LIST_CONTACT_READ);
87 contactMapping.insert(std::make_pair(
88 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_ADDRESS_BOOKS,
89 contactManagerGetAddressBooksFunc));
91 //ContactManager.getDefaultAddressBook
92 AceFunction contactManagerGetDefaultAddressBookFunc = ACE_CREATE_FUNCTION(
93 FUNCTION_CONTACT_MANAGER_GET_DEFAULT_ADDRESS_BOOK,
94 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_DEFAULT_ADDRESS_BOOK,
95 CONTACT_FEATURES_CONTACT_READ,
96 DEVICE_LIST_CONTACT_READ);
98 contactMapping.insert(std::make_pair(
99 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_DEFAULT_ADDRESS_BOOK,
100 contactManagerGetDefaultAddressBookFunc));
102 //ContactManager.getUnifiedAddressBook
103 AceFunction contactManagerGetUnifiedAddressBookFunc = ACE_CREATE_FUNCTION(
104 FUNCTION_CONTACT_MANAGER_GET_UNIFIED_ADDRESS_BOOK,
105 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_UNIFIED_ADDRESS_BOOK,
106 CONTACT_FEATURES_CONTACT_READ,
107 DEVICE_LIST_CONTACT_READ);
109 contactMapping.insert(std::make_pair(
110 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_UNIFIED_ADDRESS_BOOK,
111 contactManagerGetUnifiedAddressBookFunc));
113 //ContactManager.getAddressBook
114 AceFunction contactManagerGetAddressBookFunc = ACE_CREATE_FUNCTION(
115 FUNCTION_CONTACT_MANAGER_GET_ADDRESS_BOOK,
116 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_ADDRESS_BOOK,
117 CONTACT_FEATURES_CONTACT_READ,
118 DEVICE_LIST_CONTACT_READ);
120 contactMapping.insert(std::make_pair(
121 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_ADDRESS_BOOK,
122 contactManagerGetAddressBookFunc));
126 AceFunction contactManagerGetFunc = ACE_CREATE_FUNCTION(
127 FUNCTION_CONTACT_MANAGER_GET,
128 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET,
129 CONTACT_FEATURES_CONTACT_READ,
130 DEVICE_LIST_CONTACT_READ);
132 contactMapping.insert(std::make_pair(
133 CONTACT_FUNCTION_API_CONTACT_MANAGER_GET,
134 contactManagerGetFunc));
136 //ContactManager.update
137 AceFunction contactManagerUpdateFunc = ACE_CREATE_FUNCTION(
138 FUNCTION_CONTACT_MANAGER_UPDATE,
139 CONTACT_FUNCTION_API_CONTACT_MANAGER_UPDATE,
140 CONTACT_FEATURES_CONTACT_WRITE,
141 DEVICE_LIST_CONTACT_WRITE);
143 contactMapping.insert(std::make_pair(
144 CONTACT_FUNCTION_API_CONTACT_MANAGER_UPDATE,
145 contactManagerUpdateFunc));
147 //ContactManager.updateBatch
148 AceFunction contactManagerUpdateBatchFunc = ACE_CREATE_FUNCTION(
149 FUNCTION_CONTACT_MANAGER_UPDATE_BATCH,
150 CONTACT_FUNCTION_API_CONTACT_MANAGER_UPDATE_BATCH,
151 CONTACT_FEATURES_CONTACT_WRITE,
152 DEVICE_LIST_CONTACT_WRITE);
154 contactMapping.insert(std::make_pair(
155 CONTACT_FUNCTION_API_CONTACT_MANAGER_UPDATE_BATCH,
156 contactManagerUpdateBatchFunc));
158 //ContactManager.remove
159 AceFunction contactManagerRemoveFunc = ACE_CREATE_FUNCTION(
160 FUNCTION_CONTACT_MANAGER_REMOVE,
161 CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE,
162 CONTACT_FEATURES_CONTACT_WRITE,
163 DEVICE_LIST_CONTACT_WRITE);
165 contactMapping.insert(std::make_pair(
166 CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE,
167 contactManagerRemoveFunc));
169 //ContactManager.removeBatch
170 AceFunction contactManagerRemoveBatchFunc = ACE_CREATE_FUNCTION(
171 FUNCTION_CONTACT_MANAGER_REMOVE_BATCH,
172 CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE_BATCH,
173 CONTACT_FEATURES_CONTACT_WRITE,
174 DEVICE_LIST_CONTACT_WRITE);
176 contactMapping.insert(std::make_pair(
177 CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE_BATCH,
178 contactManagerRemoveBatchFunc));
180 //ContactManager.find
181 AceFunction contactManagerFindFunc = ACE_CREATE_FUNCTION(
182 FUNCTION_CONTACT_MANAGER_FIND,
183 CONTACT_FUNCTION_API_CONTACT_MANAGER_FIND,
184 CONTACT_FEATURES_CONTACT_READ,
185 DEVICE_LIST_CONTACT_READ);
187 contactMapping.insert(std::make_pair(
188 CONTACT_FUNCTION_API_CONTACT_MANAGER_FIND,
189 contactManagerFindFunc));
191 //ContactManager.addChangeListener
192 AceFunction contactManagerAddChangeListenerFunc = ACE_CREATE_FUNCTION(
193 FUNCTION_CONTACT_MANAGER_ADD_CHANGE_LISTENER,
194 CONTACT_FUNCTION_API_CONTACT_MANAGER_ADD_CHANGE_LISTENER,
195 CONTACT_FEATURES_CONTACT_READ,
196 DEVICE_LIST_CONTACT_READ);
198 contactMapping.insert(std::make_pair(
199 CONTACT_FUNCTION_API_CONTACT_MANAGER_ADD_CHANGE_LISTENER,
200 contactManagerAddChangeListenerFunc));
202 //ContactManager.removeChangeListener
203 AceFunction contactManagerRemoveChangeListenerFunc = ACE_CREATE_FUNCTION(
204 FUNCTION_CONTACT_MANAGER_REMOVE_CHANGE_LISTENER,
205 CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE_CHANGE_LISTENER,
206 CONTACT_FEATURES_CONTACT_READ,
207 DEVICE_LIST_CONTACT_READ);
209 contactMapping.insert(std::make_pair(
210 CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE_CHANGE_LISTENER,
211 contactManagerRemoveChangeListenerFunc));
214 AceFunction addressBookGetFunc = ACE_CREATE_FUNCTION(
215 FUNCTION_ADDRESS_BOOK_GET,
216 CONTACT_FUNCTION_API_ADDRESS_BOOK_GET,
217 CONTACT_FEATURES_CONTACT_READ,
218 DEVICE_LIST_CONTACT_READ);
220 contactMapping.insert(std::make_pair(
221 CONTACT_FUNCTION_API_ADDRESS_BOOK_GET,
222 addressBookGetFunc));
225 AceFunction addressBookAddFunc = ACE_CREATE_FUNCTION(
226 FUNCTION_ADDRESS_BOOK_ADD,
227 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD,
228 CONTACT_FEATURES_CONTACT_WRITE,
229 DEVICE_LIST_CONTACT_WRITE);
231 contactMapping.insert(std::make_pair(
232 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD,
233 addressBookAddFunc));
235 //AddressBook.addBatch
236 AceFunction addressBookAddBatchFunc = ACE_CREATE_FUNCTION(
237 FUNCTION_ADDRESS_BOOK_ADD_BATCH,
238 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD_BATCH,
239 CONTACT_FEATURES_CONTACT_WRITE,
240 DEVICE_LIST_CONTACT_WRITE);
242 contactMapping.insert(std::make_pair(
243 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD_BATCH,
244 addressBookAddBatchFunc));
247 AceFunction addressBookUpdateFunc = ACE_CREATE_FUNCTION(
248 FUNCTION_ADDRESS_BOOK_UPDATE,
249 CONTACT_FUNCTION_API_ADDRESS_BOOK_UPDATE,
250 CONTACT_FEATURES_CONTACT_WRITE,
251 DEVICE_LIST_CONTACT_WRITE);
253 contactMapping.insert(std::make_pair(
254 CONTACT_FUNCTION_API_ADDRESS_BOOK_UPDATE,
255 addressBookUpdateFunc));
257 //AddressBook.updateBatch
258 AceFunction addressBookUpdateBatchFunc = ACE_CREATE_FUNCTION(
259 FUNCTION_ADDRESS_BOOK_UPDATE_BATCH,
260 CONTACT_FUNCTION_API_ADDRESS_BOOK_UPDATE_BATCH,
261 CONTACT_FEATURES_CONTACT_WRITE,
262 DEVICE_LIST_CONTACT_WRITE);
264 contactMapping.insert(std::make_pair(
265 CONTACT_FUNCTION_API_ADDRESS_BOOK_UPDATE_BATCH,
266 addressBookUpdateBatchFunc));
269 AceFunction addressBookRemoveFunc = ACE_CREATE_FUNCTION(
270 FUNCTION_ADDRESS_BOOK_REMOVE,
271 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE,
272 CONTACT_FEATURES_CONTACT_WRITE,
273 DEVICE_LIST_CONTACT_WRITE);
275 contactMapping.insert(std::make_pair(
276 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE,
277 addressBookRemoveFunc));
279 //AddressBook.removeBatch
280 AceFunction addressBookRemoveBatchFunc = ACE_CREATE_FUNCTION(
281 FUNCTION_ADDRESS_BOOK_REMOVE_BATCH,
282 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE_BATCH,
283 CONTACT_FEATURES_CONTACT_WRITE,
284 DEVICE_LIST_CONTACT_WRITE);
286 contactMapping.insert(std::make_pair(
287 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE_BATCH,
288 addressBookRemoveBatchFunc));
291 AceFunction addressBookFindFunc = ACE_CREATE_FUNCTION(
292 FUNCTION_ADDRESS_BOOK_FIND,
293 CONTACT_FUNCTION_API_ADDRESS_BOOK_FIND,
294 CONTACT_FEATURES_CONTACT_READ,
295 DEVICE_LIST_CONTACT_READ);
297 contactMapping.insert(std::make_pair(
298 CONTACT_FUNCTION_API_ADDRESS_BOOK_FIND,
299 addressBookFindFunc));
301 //AddressBook.addChangeListener
302 AceFunction addressBookAddChangeListenerFunc = ACE_CREATE_FUNCTION(
303 FUNCTION_ADDRESS_BOOK_ADD_CHANGE_LISTENER,
304 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD_CHANGE_LISTENER,
305 CONTACT_FEATURES_CONTACT_READ,
306 DEVICE_LIST_CONTACT_READ);
308 contactMapping.insert(std::make_pair(
309 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD_CHANGE_LISTENER,
310 addressBookAddChangeListenerFunc));
312 //AddressBook.removeChangeListener
313 AceFunction addressBookRemoveChangeListenerFunc = ACE_CREATE_FUNCTION(
314 FUNCTION_ADDRESS_BOOK_REMOVE_CHANGE_LISTENER,
315 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE_CHANGE_LISTENER,
316 CONTACT_FEATURES_CONTACT_READ,
317 DEVICE_LIST_CONTACT_READ);
319 contactMapping.insert(std::make_pair(
320 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE_CHANGE_LISTENER,
321 addressBookRemoveChangeListenerFunc));
322 //AddressBook.getGroup
323 AceFunction addressBookGetGroupFunc = ACE_CREATE_FUNCTION(
324 FUNCTION_ADDRESS_BOOK_GET_GROUP,
325 CONTACT_FUNCTION_API_ADDRESS_BOOK_GET_GROUP,
326 CONTACT_FEATURES_CONTACT_READ,
327 DEVICE_LIST_CONTACT_READ);
329 contactMapping.insert(std::make_pair(
330 CONTACT_FUNCTION_API_ADDRESS_BOOK_GET_GROUP,
331 addressBookGetGroupFunc));
333 //AddressBook.addGroup
334 AceFunction addressBookAddGroupFunc = ACE_CREATE_FUNCTION(
335 FUNCTION_ADDRESS_BOOK_ADD_GROUP,
336 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD_GROUP,
337 CONTACT_FEATURES_CONTACT_WRITE,
338 DEVICE_LIST_CONTACT_WRITE);
340 contactMapping.insert(std::make_pair(
341 CONTACT_FUNCTION_API_ADDRESS_BOOK_ADD_GROUP,
342 addressBookAddGroupFunc));
344 //AddressBook.updateGroup
345 AceFunction addressBookUpdateGroupFunc = ACE_CREATE_FUNCTION(
346 FUNCTION_ADDRESS_BOOK_UPDATE_GROUP,
347 CONTACT_FUNCTION_API_ADDRESS_BOOK_UPDATE_GROUP,
348 CONTACT_FEATURES_CONTACT_WRITE,
349 DEVICE_LIST_CONTACT_WRITE);
351 contactMapping.insert(std::make_pair(
352 CONTACT_FUNCTION_API_ADDRESS_BOOK_UPDATE_GROUP,
353 addressBookUpdateGroupFunc));
355 //AddressBook.removeGroup
356 AceFunction addressBookRemoveGroupFunc = ACE_CREATE_FUNCTION(
357 FUNCTION_ADDRESS_BOOK_REMOVE_GROUP,
358 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE_GROUP,
359 CONTACT_FEATURES_CONTACT_WRITE,
360 DEVICE_LIST_CONTACT_WRITE);
362 contactMapping.insert(std::make_pair(
363 CONTACT_FUNCTION_API_ADDRESS_BOOK_REMOVE_GROUP,
364 addressBookRemoveGroupFunc));
366 //AddressBook.getGroups
367 AceFunction addressBookGetGroupsFunc = ACE_CREATE_FUNCTION(
368 FUNCTION_ADDRESS_BOOK_GET_GROUPS,
369 CONTACT_FUNCTION_API_ADDRESS_BOOK_GET_GROUPS,
370 CONTACT_FEATURES_CONTACT_READ,
371 DEVICE_LIST_CONTACT_READ);
373 contactMapping.insert(std::make_pair(
374 CONTACT_FUNCTION_API_ADDRESS_BOOK_GET_GROUPS,
375 addressBookGetGroupsFunc));
378 AceFunction personLinkFunc = ACE_CREATE_FUNCTION(
379 FUNCTION_PERSON_LINK,
380 CONTACT_FUNCTION_API_PERSON_LINK,
381 CONTACT_FEATURES_CONTACT_WRITE,
382 DEVICE_LIST_CONTACT_WRITE);
384 contactMapping.insert(std::make_pair(
385 CONTACT_FUNCTION_API_PERSON_LINK,
389 AceFunction personUnlinkFunc = ACE_CREATE_FUNCTION(
390 FUNCTION_PERSON_UNLINK,
391 CONTACT_FUNCTION_API_PERSON_UNLINK,
392 CONTACT_FEATURES_CONTACT_WRITE,
393 DEVICE_LIST_CONTACT_WRITE);
395 contactMapping.insert(std::make_pair(
396 CONTACT_FUNCTION_API_PERSON_UNLINK,
399 return contactMapping;