4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>, Jaeho Lee <jaeho81.lee@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
30 * @brief This file contains APIs of the appsvc library
34 * @addtogroup APPLICATION_FRAMEWORK
37 * @defgroup appsvc Application Service
39 * @brief Application Service library
56 /** APP_SVC OPERATION TYPE*/
57 #define APPSVC_OPERATION_DEFAULT "http://tizen.org/appsvc/operation/default"
58 /** APP_SVC OPERATION TYPE*/
59 #define APPSVC_OPERATION_EDIT "http://tizen.org/appsvc/operation/edit"
60 /** APP_SVC OPERATION TYPE*/
61 #define APPSVC_OPERATION_VIEW "http://tizen.org/appsvc/operation/view"
62 /** APP_SVC OPERATION TYPE*/
63 #define APPSVC_OPERATION_PICK "http://tizen.org/appsvc/operation/pick"
64 /** APP_SVC OPERATION TYPE*/
65 #define APPSVC_OPERATION_CREATE_CONTENT "http://tizen.org/appsvc/operation/create_content"
66 /** APP_SVC OPERATION TYPE*/
67 #define APPSVC_OPERATION_CALL "http://tizen.org/appsvc/operation/call"
68 /** APP_SVC OPERATION TYPE*/
69 #define APPSVC_OPERATION_SEND "http://tizen.org/appsvc/operation/send"
70 /** APP_SVC OPERATION TYPE*/
71 #define APPSVC_OPERATION_SEND_TEXT "http://tizen.org/appsvc/operation/send_text"
72 /** APP_SVC OPERATION TYPE*/
73 #define APPSVC_OPERATION_DIAL "http://tizen.org/appsvc/operation/dial"
74 /** APP_SVC OPERATION TYPE*/
75 #define APPSVC_OPERATION_SEARCH "http://tizen.org/appsvc/operation/search"
76 /** APP_SVC OPERATION TYPE*/
77 #define APPSVC_OPERATION_DOWNLOAD "http://tizen.org/appsvc/operation/download"
80 /** APP_SVC DATA SUBJECT*/
81 #define APPSVC_DATA_SUBJECT "http://tizen.org/appsvc/data/subject"
82 /** APP_SVC DATA TYPE*/
83 #define APPSVC_DATA_TO "http://tizen.org/appsvc/data/to"
84 /** APP_SVC DATA TYPE*/
85 #define APPSVC_DATA_CC "http://tizen.org/appsvc/data/cc"
86 /** APP_SVC DATA TYPE*/
87 #define APPSVC_DATA_BCC "http://tizen.org/appsvc/data/bcc"
88 /** APP_SVC DATA TYPE*/
89 #define APPSVC_DATA_TEXT "http://tizen.org/appsvc/data/text"
90 /** APP_SVC DATA TYPE*/
91 #define APPSVC_DATA_TITLE "http://tizen.org/appsvc/data/title"
92 /** APP_SVC DATA TYPE*/
93 #define APPSVC_DATA_SELECTED "http://tizen.org/appsvc/data/selected"
94 /** APP_SVC DATA TYPE*/
95 #define APPSVC_DATA_KEYWORD "http://tizen.org/appsvc/data/keyword"
99 * @brief Return values in appsvc.
101 typedef enum _appsvc_return_val {
102 APPSVC_RET_ELAUNCH = -4, /**< Failure on launching the app */
103 APPSVC_RET_ENOMATCH = -3, /**< No matching result Error */
104 APPSVC_RET_EINVAL = -2, /**< Invalid argument */
105 APPSVC_RET_ERROR = -1, /**< General error */
106 APPSVC_RET_OK = 0 /**< General success */
111 * @brief result values in appsvc.
113 typedef enum _appsvc_result_val {
114 APPSVC_RES_CANCEL = -2, /**< Cancel by system */
115 APPSVC_RES_NOT_OK = -1, /**< Fail by user */
116 APPSVC_RES_OK = 0 /**< Success by user */
121 * @brief appsvc_res_fn is appsvc result function
122 * @param[out] b result bundle
123 * @param[out] request_code request code
124 * @param[out] result result value
125 * @param[out] data user-supplied data
127 typedef void (*appsvc_res_fn)(bundle *b, int request_code, appsvc_result_val result, void *data);
131 * @brief iterator function running with appsvc_get_list
132 * @param[out] pkg_name package name retreived by appsvc_get_list
133 * @param[out] data user-supplied data
135 typedef int (*appsvc_info_iter_fn)(const char *pkg_name, void *data);
140 * This function sets an operation to launch application based on appsvc.
142 * @param[in] b bundle object
143 * @param[in] operation operation
145 * @return 0 if success, negative value(<0) if fail
146 * @retval APPSVC_RET_OK - success
147 * @retval APPSVC_RET_ERROR - general error
148 * @retval APPSVC_RET_EINVAL - invalid argument(content)
153 * @remarks An application must call this function before using appsvc_run_service API.
165 appsvc_set_operation(b, APPSVC_OPERATION_VIEW);
170 int appsvc_set_operation(bundle *b, const char *operation);
174 * This function sets an uri to launch application based on appsvc.
176 * @param[in] b bundle object
179 * @return 0 if success, negative value(<0) if fail
180 * @retval APPSVC_RET_OK - success
181 * @retval APPSVC_RET_ERROR - general error
182 * @retval APPSVC_RET_EINVAL - invalid argument(content)
199 appsvc_set_operation(b, APPSVC_OPERATION_VIEW);
200 appsvc_set_uri(b,"http://www.samsung.com");
205 int appsvc_set_uri(bundle *b, const char *uri);
209 * This function sets a mime-type to launch application based on appsvc.
211 * @param[in] b bundle object
212 * @param[in] mime mime-type
214 * @return 0 if success, negative value(<0) if fail
215 * @retval APPSVC_RET_OK - success
216 * @retval APPSVC_RET_ERROR - general error
217 * @retval APPSVC_RET_EINVAL - invalid argument(content)
234 appsvc_set_operation(b, APPSVC_OPERATION_PICK);
235 appsvc_set_mime(b,"image/jpg");
240 int appsvc_set_mime(bundle *b, const char *mime);
244 * This function sets an extra data to launch application based on appsvc.
246 * @param[in] b bundle object
247 * @param[in] key key of extra data
248 * @param[in] val data
250 * @return 0 if success, negative value(<0) if fail
267 appsvc_set_operation(b, APPSVC_OPERATION_SEND);
268 appsvc_set_uri(b,"mailto:xxx1@xxx");
269 appsvc_add_data(b,APPSVC_DATA_CC,"xxx2@xxx");
274 int appsvc_add_data(bundle *b, const char *key, const char *val);
278 * This function sets an extra array data to launch application based on appsvc.
280 * @param[in] b bundle object
281 * @param[in] key key of extra data
282 * @param[in] val_array data
283 * @param[in] len Length of array
285 * @return 0 if success, negative value(<0) if fail
299 char *images[] = {"/opt/media/a.jpg", "/opt/media/b.jpg", "/opt/media/c.jpg"};
303 appsvc_add_data_array(b, APPSVC_DATA_SELECTED, images, 3);
308 int appsvc_add_data_array(bundle *b, const char *key, const char **val_array, int len);
313 * This function sets a package name to launch application based on appsvc.
315 * @param[in] b bundle object
316 * @param[in] pkg_name package name for explict launch
318 * @return 0 if success, negative value(<0) if fail
319 * @retval APPSVC_RET_OK - success
320 * @retval APPSVC_RET_ERROR - general error
321 * @retval APPSVC_RET_EINVAL - invalid argument(content)
338 appsvc_set_operation(b, APPSVC_OPERATION_PICK);
339 appsvc_set_mime(b,"image/jpg");
340 appsvc_set_pkgname(b, "org.tizen.mygallery");
345 int appsvc_set_pkgname(bundle *b, const char *pkg_name);
349 * This API launch application based on appsvc.
351 * @param[in] b bundle to be passed to callee
352 * @param[in] request_code request code
353 * @param[in] cbfunc result callback function
354 * @param[in] data user-supplied data passed to callback function
356 * @return callee's pid if success, negative value(<0) if fail
357 * @retval callee's pid - success
358 * @retval APPSVC_RET_ERROR - general error
359 * @retval APPSVC_RET_EINVAL - invalid argument(content)
360 * @retval APPSVC_RET_ENOMATCH - no matching result Error
361 * @retval APPSVC_RET_ELAUNCH - failure on launching the app
379 appsvc_set_operation(b, APPSVC_OPERATION_PICK);
380 appsvc_set_mime(b,"image/jpg");
382 return appsvc_run_service(b, 0, cb_func, (void*)NULL);
387 int appsvc_run_service(bundle *b, int request_code, appsvc_res_fn cbfunc, void *data);
391 * This API use to get application list that is matched with given bundle.
393 * @param[in] b bundle to resolve application
394 * @param[in] iter_fn iterator function
395 * @param[in] data user-supplied data for iter_fn
397 * @return 0 if success, negative value(<0) if fail
398 * @retval APPSVC_RET_OK - success
399 * @retval APPSVC_RET_EINVAL - invalid argument(content)
400 * @retval APPSVC_RET_ENOMATCH - no matching result Error
411 static int iter_fn(const char* pkg_name, void *data)
413 printf("\t==========================\n");
414 printf("\t pkg_name: %s\n", pkg_name);
415 printf("\t==========================\n");
426 appsvc_set_operation(b, APPSVC_OPERATION_PICK);
427 appsvc_set_mime(b,"image/jpg");
429 return appsvc_get_list(b, iter_fn, (void*)NULL);
434 int appsvc_get_list(bundle *b, appsvc_info_iter_fn iter_fn, void *data);
438 * This function gets a operation from bundle.
440 * @param[in] b bundle object
442 * @return Pointer for operation string if success, NULL if fail
456 val = appsvc_get_operation(b);
461 const char *appsvc_get_operation(bundle *b);
465 * This function gets a uri from bundle.
467 * @param[in] b bundle object
469 * @return Pointer for uri string if success, NULL if fail
483 val = appsvc_get_uri(b);
488 const char *appsvc_get_uri(bundle *b);
492 * This function gets a mime-type from bundle.
494 * @param[in] b bundle object
496 * @return Pointer for mime-type string if success, NULL if fail
510 val = appsvc_get_mime(b);
515 const char *appsvc_get_mime(bundle *b);
519 * This function gets a package name from bundle.
521 * @param[in] b bundle object
523 * @return Pointer for package name string if success, NULL if fail
537 val = appsvc_get_pkgname(b);
542 const char *appsvc_get_pkgname(bundle *b);
546 * This function gets value from key.
548 * @param[in] b bundle object
551 * @return Pointer for value string if success, NULL if fail
565 val = appsvc_get_data(b, APPSVC_DATA_CC);
570 const char *appsvc_get_data(bundle *b, const char *key);
574 * This function gets value from key.
576 * @param[in] b bundle object
578 * @param[out] len length of array
580 * @return Pointer for value string array if success, NULL if fail
597 if(appsvc_data_is_array(b, APPSVC_DATA_SELECTED))
598 val_array = appsvc_get_data_array(b, APPSVC_DATA_SELECTED, &len);
600 val = appsvc_get_data(b, APPSVC_DATA_SELECTED);
605 const char **appsvc_get_data_array(bundle *b, const char *key, int *len);
609 * This API create appsvc result bundle based on bundle received in reset event.
611 * @param[in] inb bundle received in reset event
612 * @param[in] outb bundle to use for returning result
614 * @retval APPSVC_RET_OK - success
615 * @retval APPSVC_RET_ERROR - general error
616 * @retval APPSVC_RET_EINVAL - invalid argument(content)
620 * @see appsvc_send_result.
629 struct appdata *ad = data;
632 appsvc_create_result_bundle(ad->b,&res_bundle);
633 bundle_add(res_bundle, "result", "1");
634 appsvc_send_result(res_bundle, 0);
639 int appsvc_create_result_bundle(bundle *inb, bundle **outb);
643 * This API send appsvc result to caller with bundle.
645 * @param[in] b Result data in bundle format
646 * @param[in] result result value
648 * @retval APPSVC_RET_OK - success
649 * @retval APPSVC_RET_ERROR - general error
650 * @retval APPSVC_RET_EINVAL - invalid argument(content)
652 * @pre appsvc_create_result_bundle.
654 * @see appsvc_send_result.
663 struct appdata *ad = data;
666 appsvc_create_result_bundle(ad->b,&res_bundle);
667 bundle_add(res_bundle, "result", "1");
668 appsvc_send_result(res_bundle, 0);
673 int appsvc_send_result(bundle *b, appsvc_result_val result);
677 * This API set the default application(package name) associated with op, uri and mime-type.
679 * @param[in] op operation
680 * @param[in] mime_type mime-type
681 * @param[in] scheme scheme of uri
682 * @param[in] defapp default application
684 * @retval APPSVC_RET_OK - success
685 * @retval APPSVC_RET_ERROR - general error
686 * @retval APPSVC_RET_EINVAL - invalid argument(content)
699 appsvc_set_defapp(APPSVC_OPERATION_VIEW, NULL,"http", "org.tizen.mybrowser");
704 int appsvc_set_defapp(const char *op,const char *mime_type,const char *scheme,const char *defapp);
708 * This API unset the default application(package name) associated with op, uri and mime-type.
710 * @param[in] defapp default application
712 * @retval APPSVC_RET_OK - success
713 * @retval APPSVC_RET_ERROR - general error
726 appsvc_unset_defapp("org.tizen.test");
731 int appsvc_unset_defapp(const char *defapp);
735 * This API ask a application is default application or not.
737 * @param[in] pkg_name application package name
738 * @return true / false
739 * @retval 1 app_name is default application in appsvc.
740 * @retval 0 app_name is NOT default application in appsvc.
753 * int is_defapp_browser_app()
755 * return appsvc_is_defapp("org.tizen.browser");
763 int appsvc_is_defapp(const char *pkg_name);
768 * This API ask a extra data is array or not.
770 * @param[in] b bundle object
771 * @param[in] key key of extra data
772 * @return true / false
773 * @retval 1 a extra data is array.
774 * @retval 0 a extra data is not array.
787 * int is_defapp_browser_app(bundle *b, char *key)
789 * return appsvc_data_is_array(b, key);
797 int appsvc_data_is_array(bundle *b, const char *key);
812 #endif /* __APP_SVC_H__ */
814 /* vi: set ts=8 sts=8 sw=8: */