entrance: fill config panel
This commit is contained in:
parent
3c6409f443
commit
1df4d95c89
|
@ -54,13 +54,15 @@ static Evas_Object *_entrance_conf_bg_content_get(void *data, Evas_Object *obj,
|
|||
static Eina_Bool _entrance_conf_bg_state_get(void *data, Evas_Object *obj, const char *part);
|
||||
static void _entrance_conf_bg_sel(void *data, Evas_Object *obj, void *event_info);
|
||||
static Eina_Bool _entrance_conf_bg_fill_cb(void *data, Elm_Object_Item *it);
|
||||
static Eina_Bool _entrance_conf_user_bg_fill_cb(void *data, Elm_Object_Item *it);
|
||||
static void _entrance_conf_user_bg_sel(void *data, Evas_Object *obj, void *event_info);
|
||||
static void _entrance_conf_changed();
|
||||
static void _entrance_conf_apply();
|
||||
static Evas_Object *_entrance_conf_user_build(Evas_Object *obj);
|
||||
static void _entrance_conf_user_build_cb(Evas_Object *t, const char *user);
|
||||
static void _entrance_conf_user_build_cb(Evas_Object *t, Entrance_Login *eu);
|
||||
|
||||
static Entrance_Fill *_entrance_background_fill = NULL;
|
||||
static Entrance_Fill *_entrance_session_fill = NULL;
|
||||
static Entrance_Int_Conf *_entrance_int_conf = NULL;
|
||||
|
||||
static char *
|
||||
|
@ -159,6 +161,50 @@ _entrance_conf_user_bg_sel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|||
_entrance_conf_changed();
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_entrance_conf_user_bg_fill_cb(void *data, Elm_Object_Item *it)
|
||||
{
|
||||
Entrance_Conf_Background *cbg;
|
||||
const char *bg_path, *bg_group;
|
||||
cbg = data;
|
||||
|
||||
bg_path = _entrance_int_conf->user.orig->bg.path;
|
||||
bg_group = _entrance_int_conf->user.orig->bg.group;
|
||||
if ((cbg->path)
|
||||
&& (cbg->group)
|
||||
&& (bg_path)
|
||||
&& (bg_group)
|
||||
&& (!strcmp(cbg->path, bg_path))
|
||||
&& (!strcmp(cbg->group, bg_group)))
|
||||
{
|
||||
elm_genlist_item_selected_set(it, EINA_TRUE);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
return EINA_FALSE;
|
||||
}
|
||||
static char *
|
||||
_entrance_conf_session_text_get(void *data, Evas_Object *obj, const char *part)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_entrance_conf_session_content_get(void *data, Evas_Object *obj, const char *part)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_entrance_conf_session_state_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
|
||||
{
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_entrance_conf_session_del(void *data, Evas_Object *obj EINA_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
/* vkbd */
|
||||
static void
|
||||
_entrance_conf_vkbd_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED)
|
||||
|
@ -282,6 +328,7 @@ _entrance_conf_apply()
|
|||
{
|
||||
elm_config_scale_set(_entrance_int_conf->scale);
|
||||
elm_config_all_flush();
|
||||
elm_config_save();
|
||||
}
|
||||
if (_entrance_int_conf->theme != entrance_gui_theme_name_get())
|
||||
{
|
||||
|
@ -289,6 +336,37 @@ _entrance_conf_apply()
|
|||
}
|
||||
entrance_gui_conf_set(&conf);
|
||||
entrance_connect_conf_send(&conf);
|
||||
|
||||
if (_entrance_int_conf->user.orig)
|
||||
{
|
||||
Entrance_Login *eu;
|
||||
eu = _entrance_int_conf->user.orig;
|
||||
if (eu->bg.path != _entrance_int_conf->user.bg.path)
|
||||
eina_stringshare_replace(&eu->bg.path,
|
||||
_entrance_int_conf->user.bg.path);
|
||||
if (eu->bg.group != _entrance_int_conf->user.bg.group)
|
||||
eina_stringshare_replace(&eu->bg.group,
|
||||
_entrance_int_conf->user.bg.group);
|
||||
if (eu->image.path != _entrance_int_conf->user.image.path)
|
||||
eina_stringshare_replace(&eu->image.path,
|
||||
_entrance_int_conf->user.image.path);
|
||||
if (eu->image.group != _entrance_int_conf->user.image.group)
|
||||
eina_stringshare_replace(&eu->image.group,
|
||||
_entrance_int_conf->user.image.group);
|
||||
if (eu->remember_session != _entrance_int_conf->user.remember_session)
|
||||
eu->remember_session = _entrance_int_conf->user.remember_session;
|
||||
if (eu->lsess != _entrance_int_conf->user.lsess)
|
||||
eina_stringshare_replace(&eu->lsess, _entrance_int_conf->user.lsess);
|
||||
/*
|
||||
printf("%s | %s\n%s | %s\n%s | %s\n%s | %s\n%d | %d\n%s | %s\n",
|
||||
eu->bg.path, _entrance_int_conf->user.bg.path,
|
||||
eu->bg.group, _entrance_int_conf->user.bg.group,
|
||||
eu->image.path, _entrance_int_conf->user.image.path,
|
||||
eu->image.group, _entrance_int_conf->user.image.group,
|
||||
eu->remember_session, _entrance_int_conf->user.remember_session,
|
||||
eu->lsess, _entrance_int_conf->user.lsess);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
/* Build it */
|
||||
|
@ -377,7 +455,7 @@ _entrance_conf_build(Evas_Object *obj)
|
|||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_table_pack(t, o, 0, j, 1, 1);
|
||||
evas_object_show(o);
|
||||
o = elm_button_add(t);
|
||||
o = elm_hoversel_add(t);
|
||||
elm_object_text_set(o, _entrance_int_conf->elm_profile);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0);
|
||||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
|
@ -419,11 +497,40 @@ static void
|
|||
_entrance_conf_user_auth(void *data, const char *user, Eina_Bool granted)
|
||||
{
|
||||
Evas_Object *t;
|
||||
const Eina_List *users, *l;
|
||||
Entrance_Login *eu;
|
||||
|
||||
if (granted)
|
||||
{
|
||||
t = elm_object_part_content_get(data, "entrance.conf");
|
||||
_entrance_conf_user_build_cb(t, user);
|
||||
elm_object_signal_emit(data, "entrance,conf_user,enabled", "");
|
||||
users = entrance_gui_users_get();
|
||||
EINA_LIST_FOREACH(users, l, eu)
|
||||
{
|
||||
if (!strcmp(eu->login, user))
|
||||
{
|
||||
_entrance_int_conf->user.orig = eu;
|
||||
_entrance_int_conf->user.bg.path = eu->bg.path;
|
||||
_entrance_int_conf->user.bg.group = eu->bg.group;
|
||||
_entrance_int_conf->user.image.path = eu->image.path;
|
||||
_entrance_int_conf->user.image.group = eu->image.group;
|
||||
_entrance_int_conf->user.lsess = eu->lsess;
|
||||
_entrance_int_conf->user.remember_session
|
||||
= eu->remember_session;
|
||||
printf("init %s %s | %s %s | %s | %d\n",
|
||||
_entrance_int_conf->user.bg.path,
|
||||
_entrance_int_conf->user.bg.group,
|
||||
_entrance_int_conf->user.image.path,
|
||||
_entrance_int_conf->user.image.group,
|
||||
_entrance_int_conf->user.lsess,
|
||||
_entrance_int_conf->user.remember_session);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (eu)
|
||||
{
|
||||
_entrance_conf_user_build_cb(t, eu);
|
||||
elm_object_signal_emit(data, "entrance,conf_user,enabled", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -449,12 +556,10 @@ _entrance_conf_user_build(Evas_Object *obj)
|
|||
}
|
||||
|
||||
static void
|
||||
_entrance_conf_user_build_cb(Evas_Object *t, const char *user)
|
||||
_entrance_conf_user_build_cb(Evas_Object *t, Entrance_Login *eu)
|
||||
{
|
||||
Evas_Object *o, *bx, *hbx;
|
||||
Entrance_Login *eu;
|
||||
Evas_Object *o, *gl, *bx, *hbx;
|
||||
Eina_List *l;
|
||||
const Eina_List *users, *ll;
|
||||
int j = 0;
|
||||
|
||||
/* Background */
|
||||
|
@ -471,16 +576,12 @@ _entrance_conf_user_build_cb(Evas_Object *t, const char *user)
|
|||
++j;
|
||||
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
o = elm_genlist_add(hbx);
|
||||
elm_scroller_bounce_set(o, EINA_FALSE, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
l = _entrance_conf_backgrounds_get(o, user);
|
||||
entrance_fill(o, _entrance_background_fill,
|
||||
l, NULL, _entrance_conf_user_bg_sel, o);
|
||||
eina_list_free(l);
|
||||
elm_box_pack_end(hbx, o);
|
||||
evas_object_show(o);
|
||||
gl = elm_genlist_add(hbx);
|
||||
elm_scroller_bounce_set(gl, EINA_FALSE, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(hbx, gl);
|
||||
evas_object_show(gl);
|
||||
bx = elm_box_add(hbx);
|
||||
elm_box_pack_end(hbx, bx);
|
||||
evas_object_show(bx);
|
||||
|
@ -496,6 +597,11 @@ _entrance_conf_user_build_cb(Evas_Object *t, const char *user)
|
|||
elm_box_pack_end(bx, o);
|
||||
evas_object_show(o);
|
||||
evas_object_show(hbx);
|
||||
l = _entrance_conf_backgrounds_get(o, eu->login);
|
||||
entrance_fill(gl, _entrance_background_fill,
|
||||
l, _entrance_conf_user_bg_fill_cb,
|
||||
_entrance_conf_user_bg_sel, o);
|
||||
eina_list_free(l);
|
||||
|
||||
/* Icon */
|
||||
|
||||
|
@ -529,23 +635,9 @@ _entrance_conf_user_build_cb(Evas_Object *t, const char *user)
|
|||
++j;
|
||||
|
||||
evas_object_show(t);
|
||||
|
||||
users = entrance_gui_users_get();
|
||||
EINA_LIST_FOREACH(users, ll, eu)
|
||||
{
|
||||
if (!strcmp(eu->login, user))
|
||||
{
|
||||
_entrance_int_conf->user.orig = eu;
|
||||
_entrance_int_conf->user.bg.path = eu->bg.path;
|
||||
_entrance_int_conf->user.bg.group = eu->bg.group;
|
||||
_entrance_int_conf->user.image.path = eu->image.path;
|
||||
_entrance_int_conf->user.image.group = eu->image.group;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_entrance_conf_control_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
|
||||
{
|
||||
|
@ -572,10 +664,11 @@ _entrance_conf_changed(void)
|
|||
|| (_entrance_int_conf->elm_profile != elm_config_profile_get())
|
||||
|| (_entrance_int_conf->vkbd_enabled != entrance_gui_vkbd_enabled_get()))
|
||||
|| ((_entrance_int_conf->user.orig) &&
|
||||
|
||||
((_entrance_int_conf->user.orig->bg.path != _entrance_int_conf->user.bg.path)
|
||||
|| (_entrance_int_conf->user.orig->bg.group != _entrance_int_conf->user.bg.group)
|
||||
|| (_entrance_int_conf->user.orig->image.path != _entrance_int_conf->user.image.path)
|
||||
|| (_entrance_int_conf->user.orig->image.path != _entrance_int_conf->user.image.group)
|
||||
|| (_entrance_int_conf->user.orig->image.group != _entrance_int_conf->user.image.group)
|
||||
|| (_entrance_int_conf->user.orig->remember_session != _entrance_int_conf->user.remember_session)
|
||||
|| (_entrance_int_conf->user.orig->lsess != _entrance_int_conf->user.lsess))))
|
||||
|
||||
|
@ -601,6 +694,13 @@ _entrance_conf_init(void)
|
|||
_entrance_conf_bg_content_get,
|
||||
_entrance_conf_bg_state_get,
|
||||
_entrance_conf_bg_del);
|
||||
_entrance_session_fill =
|
||||
entrance_fill_new("default",
|
||||
_entrance_conf_session_text_get,
|
||||
_entrance_conf_session_content_get,
|
||||
_entrance_conf_session_state_get,
|
||||
_entrance_conf_session_del);
|
||||
|
||||
_entrance_int_conf = calloc(1, sizeof(Entrance_Int_Conf));
|
||||
_entrance_int_conf->theme = entrance_gui_theme_name_get();
|
||||
entrance_gui_background_get(&(_entrance_int_conf->bg.path),
|
||||
|
@ -615,6 +715,7 @@ _entrance_conf_shutdown(void)
|
|||
{
|
||||
PT("conf shutdown\n");
|
||||
entrance_fill_del(_entrance_background_fill);
|
||||
entrance_fill_del(_entrance_session_fill);
|
||||
free(_entrance_int_conf);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue