entrance: Implemented session to use in entrance_conf_user.

This commit is contained in:
Marcel Hollerbach 2014-04-09 09:41:11 +02:00
parent 982d51c77e
commit 1a0e7a59da
1 changed files with 57 additions and 1 deletions

View File

@ -100,10 +100,64 @@ _entrance_conf_user_icon_fill_cb(void *data, Elm_Object_Item *it)
return EINA_FALSE;
}
static void
_entrance_conf_session_update(Evas_Object *session_sel)
{
const Eina_List *sessions, *node;
Entrance_Xsession *session;
const char *icon = NULL;
Evas_Object *ic;
sessions = entrance_gui_xsessions_get();
//search the correct struct
elm_object_text_set(session_sel, _entrance_int_conf_user->lsess);
EINA_LIST_FOREACH(sessions, node, session)
{
if (!strcmp(_entrance_int_conf_user->lsess,session->name))
{
icon = session->icon;
}
}
//create the icon
ic = elm_object_part_content_get(session_sel, "icon");
if (icon)
{
if (!ic)
ic = elm_icon_add(session_sel);
elm_image_file_set(ic, icon, NULL);
elm_object_part_content_set(session_sel, "icon", ic);
}
else
{
if (ic)
evas_object_del(ic);
elm_object_part_content_set(ic, "icon", NULL);
}
}
static void
_entrance_conf_session_sel(void *data EINA_UNUSED, Evas_Object *obj, void *event_info)
{
Entrance_Xsession *exs;
exs = elm_object_item_data_get(event_info);
_entrance_int_conf_user->lsess = exs->name;
_entrance_conf_session_update(obj);
entrance_conf_changed();
}
static char *
_entrance_conf_session_text_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
return NULL;
Entrance_Xsession *exs;
exs = data;
if (!part)
return strdup(exs->name);
else
if (exs->icon)
return strdup(exs->icon);
else
return NULL;
}
static Evas_Object *
@ -336,6 +390,8 @@ _entrance_conf_user_build_cb(Evas_Object *t, Entrance_Login *eu)
elm_table_pack(t, o, 1, j, 1, 1);
evas_object_show(o);
++j;
entrance_fill(o, _entrance_session_fill, entrance_gui_xsessions_get(), NULL, _entrance_conf_session_sel, NULL);
_entrance_conf_session_update(o);
/* Remember last session */
o = elm_label_add(t);