2 * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
4 * This file is part of the UI Gadget
5 * Written by Jayoun Lee <airjany@samsung.com>, Jinwoo Nam <jwoo.nam@samsung.com>
7 * PROPRIETARY/CONFIDENTIAL
9 * This software is the confidential and proprietary information of
10 * SAMSUNG ELECTRONICS (Confidential Information).
11 * You shall not disclose such Confidential Information and shall
12 * use it only in accordance with the terms of the license agreement
13 * you entered into with SAMSUNG ELECTRONICS. SAMSUNG make no
14 * representations or warranties about the suitability
15 * of the software, either express or implied, including but not
16 * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-
17 * infringement. SAMSUNG shall not be liable for any damages suffered by licensee as
18 * a result of using, modifying or distributing this software or its derivatives.
28 #include "ug-module.h"
29 #include "ug-manager.h"
33 #define UG_API __attribute__ ((visibility("default")))
36 struct ui_gadget *ug_root_create(void)
40 ug = calloc(1, sizeof(struct ui_gadget));
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(struct ui_gadget *ug)
56 _ERR("ug free failed: Invalid ug\n");
62 ug_module_unload(ug->module);
64 free((void *)ug->name);
66 bundle_free(ug->data);
71 UG_API struct ui_gadget *ug_create(struct ui_gadget *parent,
74 bundle *data, 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, data, 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(struct ui_gadget *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(struct ui_gadget *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(struct ui_gadget *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(struct ui_gadget *ug)
161 struct ui_gadget *parent;
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(struct ui_gadget *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(struct ui_gadget *ug, bundle *result)
213 bundle *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 result_dup = bundle_dup(result);
229 _ERR("ug_send_result() failed: bundle_dup failed\n");
234 ug->cbs.result_cb(ug, result_dup, ug->cbs.priv);
237 bundle_free(result_dup);
242 UG_API int ug_send_message(struct ui_gadget *ug, bundle *msg)
246 bundle *msg_dup = NULL;
248 msg_dup = bundle_dup(msg);
250 _ERR("ug_send_message() failed: bundle_dup failed\n");
255 r = ugman_send_message(ug, msg_dup);
258 bundle_free(msg_dup);
263 UG_API int ug_disable_effect(struct ui_gadget *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;