* ...
* Evas_Object *win;
* // get default window
- * win = (Evas_Object *)ug_get_window(ug);
+ * win = (Evas_Object *)ug_get_window();
* ...
* \endcode
*/
void *ug_get_window(void);
-
+/**
+ * \par Description:
+ * This function gets ug conformant
+ *
+ * \par Purpose:
+ * This function is used for getting ug conformant
+ *
+ * \par Typical use case:
+ * Anyone who want to get ug conformant could use the function.
+ *
+ * \par Method of function operation:
+ * This function returns ug conformant pointer
+ *
+ * \par Context of function:
+ * This function supposed to be called after successful initialization with ug_init()
+ *
+ * @return The pointer of default window, NULL on error. The result value is void pointer for supporting both GTK (GtkWidget *) and EFL (Evas_Object *)
+ *
+ * \pre ug_init()
+ * \post None
+ * \see None
+ * \remarks None
+ *
+ * \par Sample code:
+ * \code
+ * #include <ui-gadget.h>
+ * ...
+ * Evas_Object *conform;
+ * // get default window
+ * conform = (Evas_Object *)ug_get_conformant();
+ * ...
+ * \endcode
+ */
void *ug_get_conformant(void);
-
-
/**
* \par Description:
* This function gets mode of the given UI gadget instance
#include <errno.h>
#include <glib.h>
#include <utilX.h>
+
#include <Elementary.h>
+#include <Ecore.h>
#include "ug.h"
#include "ug-manager.h"
|| ug->state == UG_STATE_RUNNING)
return 0;
+ _DBG("ug=%p", ug);
+
ug->state = UG_STATE_RUNNING;
if (ug->module)
int cur_state;
if (!ug_man.win) {
- _ERR("ugman_indicator_update failed: no window");
+ _ERR("indicator update failed: no window");
return -1;
}
case UG_OPT_INDICATOR_MANUAL:
return 0;
default:
- _ERR("ugman_indicator_update failed: Invalid opt");
+ _ERR("update failed: Invalid opt(%d)", opt);
return -1;
}
struct ug_module_ops *ops = NULL;
GSList *child, *trail;
- _DBG("\t ug=%p state=%d", ug, ug->layout_state);
-
job_start();
if (!ug)
goto end;
+ _DBG("ugman_ug_destroy start ug(%p)", ug);
+
switch (ug->state) {
case UG_STATE_CREATED:
case UG_STATE_RUNNING:
end:
job_end();
- _DBG("ugman_ug_destroy end ug(%p)", ug);
-
return 0;
}
}
if (ug->mode == UG_MODE_FULLVIEW) {
if (eng_ops && eng_ops->create)
- ug_man.conform = eng_ops->create(ug_man.win, ug);
+ ug_man.conform = eng_ops->create(ug_man.win, ug, ugman_ug_start);
}
cbs = &ug->cbs;
}
ugman_ug_event(ug, ug_man.last_rotate_evt);
- ugman_ug_start(ug);
ugman_tree_dump(ug_man.root);
return 0;
int ugman_ug_del(ui_gadget_h ug)
{
- _DBG("\t ug=%p state=%d", ug, ug->layout_state);
-
struct ug_engine_ops *eng_ops = NULL;
if (!ug || !ugman_ug_exist(ug) || ug->state == UG_STATE_DESTROYED) {
return -1;
}
+ _DBG("ugman_ug_del start ug(%p)", ug);
+
if (ug->destroy_me) {
_ERR("ugman_ug_del failed: ug is alreay on destroying");
return -1;
static Evas_Object *conform = NULL;
struct cb_data {
ui_gadget_h ug;
- void (*hide_end_cb)(ui_gadget_h ug);
+ void (*transition_cb)(ui_gadget_h ug);
};
static void __hide_finished(void *data, Evas_Object *obj, void *event_info);
/* effect_layout of frameview is null */
/* remove navi item */
if (ug->effect_layout) {
- _DBG("\t remove navi tiem: ug=%p", ug);
+ _DBG("\t remove navi item: ug=%p", ug);
if (ug->layout_state == UG_LAYOUT_HIDEEFFECT) {
_DBG("\t del cb, ug=%p", ug);
evas_object_smart_callback_del(navi, "transition,finished",
ug->effect_layout = NULL;
_del_effect_layout(ug);
- cb_d->hide_end_cb(ug);
+ cb_d->transition_cb(ug);
free(cb_d);
}
struct cb_data *cb_d;
cb_d = (struct cb_data *)calloc(1, sizeof(struct cb_data));
cb_d->ug = ug;
- cb_d->hide_end_cb = hide_end_cb;
+ cb_d->transition_cb = hide_end_cb;
_DBG("\t cb add ug=%p", ug);
+ /* overlap update does not needed because manager will do that at on_destroy scenario */
+
evas_object_smart_callback_add(navi, "transition,finished",
__hide_finished, cb_d);
elm_naviframe_item_pop(navi);
static void __show_finished(void *data, Evas_Object *obj, void *event_info)
{
- ui_gadget_h ug = (ui_gadget_h) data;
+ struct cb_data *cb_d = (struct cb_data *)data;
+ if (!cb_d)
+ return;
+
+ ui_gadget_h ug = cb_d->ug;
if (!ug)
return;
- _DBG("\t obj=%p ug=%p state=%d", obj, ug, ug->layout_state);
+
+ _DBG("\tobj=%p ug=%p state=%d", obj, ug, ug->layout_state);
evas_object_smart_callback_del(obj, "transition,finished",
__show_finished);
;
else
ug->layout_state = UG_LAYOUT_SHOW;
+
+ cb_d->transition_cb(ug);
+ free(cb_d);
}
static void on_show_cb(void *data, Evas *e, Evas_Object *obj,
void *event_info)
{
- ui_gadget_h ug = (ui_gadget_h)data;
+ struct cb_data *cb_d = (struct cb_data *)data;
+ if (!cb_d)
+ return;
+ ui_gadget_h ug = cb_d->ug;
if (!ug)
return;
- _DBG("\t obj=%p ug=%p state=%d", obj, ug, ug->layout_state);
+ _DBG("\tobj=%p ug=%p state=%d", obj, ug, ug->layout_state);
evas_object_intercept_hide_callback_add(ug->layout,
_on_hideonly_cb, ug);
}
evas_object_smart_callback_add(navi, "transition,finished",
- __show_finished, ug);
+ __show_finished, cb_d);
ug->effect_layout = elm_naviframe_item_push(navi, NULL, NULL, NULL,
ug->layout, NULL);
} else if (ug->layout_state == UG_LAYOUT_NOEFFECT) {
_DBG("\t this is Overlap UG. Send overlap sig on_show_cb");
elm_object_signal_emit(conform, "elm,state,indicator,overlap", "");
}
-
+
Elm_Object_Item *navi_top = elm_naviframe_top_item_get(navi);
ug->effect_layout = elm_naviframe_item_insert_after(navi,
navi_top, NULL, NULL, NULL, ug->layout, NULL);
+
+ //ug start cb
+ cb_d->transition_cb(ug);
+ free(cb_d);
} else {
- _ERR("\t layout state error!! state=%d\n", ug->layout_state);
+ _ERR("\tlayout state error!! state=%d\n", ug->layout_state);
+ free(cb_d);
}
}
-static void *on_create(void *win, ui_gadget_h ug)
+static void *on_create(void *win, ui_gadget_h ug,
+ void (*show_end_cb) (void* data))
{
const Eina_List *l;
Evas_Object *subobj;
Evas_Object *con = NULL;
static const char *ug_effect_edj_name = "/usr/share/edje/ug_effect.edj";
+ if (!ug)
+ return;
_DBG("\t ug=%p state=%d", ug, ug->layout_state);
con = evas_object_data_get(win, "\377 elm,conformant");
elm_naviframe_item_push(navi, NULL, NULL, NULL, navi_bg, NULL);
}
+ struct cb_data *cb_d;
+ cb_d = (struct cb_data *)calloc(1, sizeof(struct cb_data));
+ cb_d->ug = ug;
+ cb_d->transition_cb = show_end_cb;
+
evas_object_hide(ug->layout);
- evas_object_event_callback_add(ug->layout, EVAS_CALLBACK_SHOW,
- on_show_cb, ug);
+ evas_object_event_callback_add(ug->layout, EVAS_CALLBACK_SHOW, on_show_cb, cb_d);
ug->layout_state = UG_LAYOUT_INIT;