4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@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.
28 #include "ug-module.h"
29 #include "ug-manager.h"
33 #define UG_API __attribute__ ((visibility("default")))
36 ui_gadget_h ug_root_create(void)
40 ug = calloc(1, sizeof(struct ui_gadget_s));
42 _ERR("ug root create failed: Memory allocation failed\n");
46 ug->mode = UG_MODE_FULLVIEW;
47 ug->state = UG_STATE_RUNNING;
53 int ug_free(ui_gadget_h ug)
56 _ERR("ug free failed: Invalid ug\n");
62 ug_module_unload(ug->module);
64 free((void *)ug->name);
66 service_destroy(ug->service);
71 UG_API ui_gadget_h ug_create(ui_gadget_h parent,
74 service_h service, struct ug_cbs *cbs)
77 _ERR("ug_create() failed: Invalid name\n");
82 if (mode < UG_MODE_FULLVIEW || mode >= UG_MODE_INVALID) {
83 _ERR("ug_create() failed: Invalid mode\n");
88 return ugman_ug_load(parent, name, mode, service, cbs);
91 UG_API int ug_init(Display *disp, Window xid, void *win, enum ug_option opt)
93 if (!win || !xid || !disp) {
94 _ERR("ug_init() failed: Invalid arguments\n");
98 if (opt < UG_OPT_INDICATOR_ENABLE || opt >= UG_OPT_MAX) {
99 _ERR("ug_init() failed: Invalid option\n");
103 return ugman_init(disp, xid, win, opt);
106 UG_API int ug_pause(void)
108 return ugman_pause();
111 UG_API int ug_resume(void)
113 return ugman_resume();
116 UG_API int ug_destroy(ui_gadget_h ug)
118 return ugman_ug_del(ug);
121 UG_API int ug_destroy_all(void)
123 return ugman_ug_del_all();
126 UG_API int ug_destroy_me(ui_gadget_h ug)
128 if (!ug || !ugman_ug_exist(ug)) {
129 _ERR("ug_destroy_me() failed: Invalid ug\n");
134 if (ug->state == UG_STATE_DESTROYING) {
135 _ERR("ug_destory_me() failed:ug is alreay on destroying");
139 if (!ug->cbs.destroy_cb) {
140 _ERR("ug_destroy_me() failed: destroy callback does not "
145 ug->cbs.destroy_cb(ug, ug->cbs.priv);
149 UG_API void *ug_get_layout(ui_gadget_h ug)
151 if (!ug || !ugman_ug_exist(ug)) {
152 _ERR("ug_get_layout() failed: Invalid ug\n");
159 UG_API void *ug_get_parent_layout(ui_gadget_h ug)
162 if (!ug || !ugman_ug_exist(ug)) {
163 _ERR("ug_get_parent_layout() failed: Invalid ug\n");
171 return parent->layout;
175 UG_API enum ug_mode ug_get_mode(ui_gadget_h ug)
177 if (!ug || !ugman_ug_exist(ug)) {
178 _ERR("ug_get_mode() failed: Invalid ug\n");
180 return UG_MODE_INVALID;
186 UG_API void *ug_get_window(void)
188 return ugman_get_window();
191 UG_API int ug_send_event(enum ug_event event)
193 if (event <= UG_EVENT_NONE || event >= UG_EVENT_MAX) {
194 _ERR("ug_send_event() failed: Invalid event\n");
198 return ugman_send_event(event);
201 UG_API int ug_send_key_event(enum ug_key_event event)
203 if (event <= UG_KEY_EVENT_NONE || event >= UG_KEY_EVENT_MAX) {
204 _ERR("ug_send_key_event() failed: Invalid event\n");
208 return ugman_send_key_event(event);
211 UG_API int ug_send_result(ui_gadget_h ug, service_h result)
213 service_h result_dup = NULL;
215 if (!ug || !ugman_ug_exist(ug)) {
216 _ERR("ug_send_result() failed: Invalid ug\n");
221 if (!ug->cbs.result_cb) {
222 _ERR("ug_send_result() failed: result callback does not exist\n");
227 service_clone(&result_dup, result);
229 _ERR("ug_send_result() failed: service_destroy failed\n");
234 ug->cbs.result_cb(ug, result_dup, ug->cbs.priv);
237 service_destroy(result_dup);
242 UG_API int ug_send_message(ui_gadget_h ug, service_h msg)
246 service_h msg_dup = NULL;
248 service_clone(&msg_dup, msg);
250 _ERR("ug_send_message() failed: service_destroy failed\n");
255 r = ugman_send_message(ug, msg_dup);
258 service_destroy(msg_dup);
263 UG_API int ug_disable_effect(ui_gadget_h ug)
265 if (ug->layout_state != UG_LAYOUT_INIT) {
266 _ERR("ug_disable_effect() failed: ug has already been shown\n");
269 ug->layout_state = UG_LAYOUT_NOEFFECT;