Fill objects genlist when selecting app

This commit is contained in:
Avi Levin 2015-11-02 16:43:23 +02:00
parent 99d3ca6b25
commit e10deb0479
1 changed files with 57 additions and 1 deletions

View File

@ -47,6 +47,15 @@ static uint32_t _cid = 0;
static int my_argc = 0;
static char **my_argv = NULL;
static int selected_app = -1;
static Elm_Genlist_Item_Class *_itc = NULL;
Eina_List *objs = NULL;
static char *
_item_label_get(void *data, Evas_Object *obj, const char *part)
{
Obj_Info *info = data;
return strdup(info->kl_name);
}
static void
_hoversel_selected_app(void *data, Evas_Object *obj, void *event_info)
@ -54,6 +63,19 @@ _hoversel_selected_app(void *data, Evas_Object *obj, void *event_info)
Elm_Object_Item *hoversel_it = event_info;
selected_app = (int)(long)elm_object_item_data_get(hoversel_it);
printf("selected app %d\n", selected_app);
if(objs)
{
Obj_Info *data;
EINA_LIST_FREE(objs, data)
free(data);
objs = NULL;
elm_genlist_clear(pub_widgets->elm_win1->elm_genlist1);
}
Eina_Debug_Client *cl = eina_debug_client_new(_session, selected_app);
eina_debug_session_send(cl, _elm_list_opcode, NULL, 0);
eina_debug_client_free(cl);
}
static void
@ -159,12 +181,32 @@ static Eina_Bool
_elm_objects_list_cb(Eina_Debug_Client *src EINA_UNUSED, void *buffer, int size)
{
printf("size=%d\n", size);
Eina_List *objs = eo_debug_list_response_decode(buffer, size), *itr;
Eina_List *itr;
objs = eo_debug_list_response_decode(buffer, size);
Obj_Info *info;
EINA_LIST_FOREACH(objs, itr, info)
{
printf("%p: %s\n", info->ptr, info->kl_name);
elm_genlist_item_append(pub_widgets->elm_win1->elm_genlist1, _itc,
(void *)info, NULL,
ELM_GENLIST_ITEM_NONE,
NULL, NULL);
}
return EINA_TRUE;
}
static void
_ecore_thread_dispatcher(void *data)
{
eina_debug_dispatch(_session, data);
}
Eina_Bool
_disp_cb(Eina_Debug_Session *session, void *buffer)
{
ecore_main_loop_thread_safe_call_async(_ecore_thread_dispatcher, buffer);
return EINA_TRUE;
}
@ -173,6 +215,7 @@ _args_handle(Eina_Bool flag)
{
int i;
if(!flag) return;
eina_debug_session_dispatch_override(_session, _disp_cb);
Eina_Debug_Client *cl = eina_debug_client_new(_session, 0);
eina_debug_session_send(cl, _cl_stat_reg_opcode, NULL, 0);
@ -234,11 +277,24 @@ elm_main(int argc, char **argv)
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
pub_widgets = gui_gui_get();
if (!_itc)
{
_itc = elm_genlist_item_class_new();
_itc->item_style = "default";
_itc->func.text_get = _item_label_get;
_itc->func.content_get = NULL;
_itc->func.state_get = NULL;
_itc->func.del = NULL;
}
evas_object_size_hint_weight_set(pub_widgets->elm_win1->elm_genlist1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(pub_widgets->elm_win1->elm_genlist1);
evas_object_show(pub_widgets->elm_win1->elm_win1);
eina_init();
_session = eina_debug_session_new();
if (!eina_debug_local_connect(_session))
{
fprintf(stderr, "ERROR: Cannot connect to debug daemon.\n");