2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
27 #include "ug-module.h"
28 #include "ug-manager.h"
32 #define UG_API __attribute__ ((visibility("default")))
35 struct ui_gadget *ug_root_create(void)
39 ug = calloc(1, sizeof(struct ui_gadget));
41 _ERR("ug root create failed: Memory allocation failed\n");
45 ug->mode = UG_MODE_FULLVIEW;
46 ug->state = UG_STATE_RUNNING;
52 int ug_free(struct ui_gadget *ug)
55 _ERR("ug free failed: Invalid ug\n");
61 ug_module_unload(ug->module);
63 free((void *)ug->name);
65 bundle_free(ug->data);
70 UG_API struct ui_gadget *ug_create(struct ui_gadget *parent,
73 bundle *data, struct ug_cbs *cbs)
76 _ERR("ug_create() failed: Invalid name\n");
81 if (mode < UG_MODE_FULLVIEW || mode >= UG_MODE_INVALID) {
82 _ERR("ug_create() failed: Invalid mode\n");
87 return ugman_ug_load(parent, name, mode, data, cbs);
90 UG_API int ug_init(Display *disp, Window xid, void *win, enum ug_option opt)
92 if (!win || !xid || !disp) {
93 _ERR("ug_init() failed: Invalid arguments\n");
97 if (opt < UG_OPT_INDICATOR_ENABLE || opt >= UG_OPT_MAX) {
98 _ERR("ug_init() failed: Invalid option\n");
102 return ugman_init(disp, xid, win, opt);
105 UG_API int ug_pause(void)
107 return ugman_pause();
110 UG_API int ug_resume(void)
112 return ugman_resume();
115 UG_API int ug_destroy(struct ui_gadget *ug)
117 return ugman_ug_del(ug);
120 UG_API int ug_destroy_all(void)
122 return ugman_ug_del_all();
125 UG_API int ug_destroy_me(struct ui_gadget *ug)
127 if (!ug || !ugman_ug_exist(ug)) {
128 _ERR("ug_destroy_me() failed: Invalid ug\n");
133 if (ug->state == UG_STATE_DESTROYING) {
134 _ERR("ug_destory_me() failed:ug is alreay on destroying");
138 if (!ug->cbs.destroy_cb) {
139 _ERR("ug_destroy_me() failed: destroy callback does not "
144 ug->cbs.destroy_cb(ug, ug->cbs.priv);
148 UG_API void *ug_get_layout(struct ui_gadget *ug)
150 if (!ug || !ugman_ug_exist(ug)) {
151 _ERR("ug_get_layout() failed: Invalid ug\n");
158 UG_API void *ug_get_parent_layout(struct ui_gadget *ug)
160 struct ui_gadget *parent;
161 if (!ug || !ugman_ug_exist(ug)) {
162 _ERR("ug_get_parent_layout() failed: Invalid ug\n");
170 return parent->layout;
174 UG_API enum ug_mode ug_get_mode(struct ui_gadget *ug)
176 if (!ug || !ugman_ug_exist(ug)) {
177 _ERR("ug_get_mode() failed: Invalid ug\n");
179 return UG_MODE_INVALID;
185 UG_API void *ug_get_window(void)
187 return ugman_get_window();
190 UG_API int ug_send_event(enum ug_event event)
192 if (event <= UG_EVENT_NONE || event >= UG_EVENT_MAX) {
193 _ERR("ug_send_event() failed: Invalid event\n");
197 return ugman_send_event(event);
200 UG_API int ug_send_key_event(enum ug_key_event event)
202 if (event <= UG_KEY_EVENT_NONE || event >= UG_KEY_EVENT_MAX) {
203 _ERR("ug_send_key_event() failed: Invalid event\n");
207 return ugman_send_key_event(event);
210 UG_API int ug_send_result(struct ui_gadget *ug, bundle *result)
212 bundle *result_dup = NULL;
214 if (!ug || !ugman_ug_exist(ug)) {
215 _ERR("ug_send_result() failed: Invalid ug\n");
220 if (!ug->cbs.result_cb) {
221 _ERR("ug_send_result() failed: result callback does not exist\n");
226 result_dup = bundle_dup(result);
228 _ERR("ug_send_result() failed: bundle_dup failed\n");
233 ug->cbs.result_cb(ug, result_dup, ug->cbs.priv);
236 bundle_free(result_dup);
241 UG_API int ug_send_message(struct ui_gadget *ug, bundle *msg)
245 bundle *msg_dup = NULL;
247 msg_dup = bundle_dup(msg);
249 _ERR("ug_send_message() failed: bundle_dup failed\n");
254 r = ugman_send_message(ug, msg_dup);
257 bundle_free(msg_dup);
262 UG_API int ug_disable_effect(struct ui_gadget *ug)
264 if (ug->layout_state != UG_LAYOUT_INIT) {
265 _ERR("ug_disable_effect() failed: ug has already been shown\n");
268 ug->layout_state = UG_LAYOUT_NOEFFECT;