From: Daniel J. S. <seo...@gm...> - 2013-10-30 03:52:12
|
On Wed, Oct 30, 2013 at 12:33 PM, Carsten Haitzler <ra...@ra...>wrote: > On Wed, 30 Oct 2013 02:21:38 +0100 Michaël Bouchaud <yo...@ef...> said: > > i have to agree here. entrance still need to get to shipping/release > status, so > until then... work away at it to get it there. bureaucracy here is not > going to > help much or make people happy. let's wait until it's at that point > > yoz - btw. it's YOUR job to make some noise when *YOU* think entrance is > ready > to ship. :) so we know it's time to seriously bang at it. :) > > Hmm.. then why it's not in devs repository and bugging egit mailing list? Daniel Juyung Seo (SeoZ) > > As I'm the only one to work on this project, I don't see the benefit to > > make atomic commits. > > If you have some problems with this recent commits, I think it's my task > to > > resolve it or to do some revert... so it's my pain, not yours :). > > I have done a lot of work on this project in one year without merging it > > upstream. Thats my fault, ok. > > But for time, I still have about 5000 lines of code to merge (without > > theme)... and I try to do it step by step without breaking it. > > If someone comes to contribute to this project, I will take care to make > > some atomic commit but unless I'm the only one to work on this project. I > > don't see the harm. Today I just see the time saved to not doing it. > > Please do not see here, I never do atomic commit on efl project. I always > > try to be clear on my commit on elementary or rest of efl libs. I > encourage > > to do that ! > > Consider entrance is in heavy work in progress... > > > > Regards > > > > 2013/10/30 Daniel Juyung Seo <seo...@gm...> > > > > > Not only for your review but also for > > > 1. the future contributor to understand the code and your patch > > > 2. easy to revert just in case > > > 3. preventing cedric from doing the same thing > > > 4. others to review > > > 5. etc. > > > > > > There must be many reasons why we need to keep each commit atomic. > > > http://en.wikipedia.org/wiki/Atomic_commit > > > > > > Thanks. > > > > > > Daniel Juyung Seo (SeoZ) > > > > > > > > > > > > On Wed, Oct 30, 2013 at 9:36 AM, Michaël Bouchaud <yo...@ef...> wrote: > > > > > > > For a better review from me ? > > > > > > > > > > > > 2013/10/30 Daniel Juyung Seo <seo...@gm...> > > > > > > > > > Thanks for the nice patch but I think you could split this into a > > > couple > > > > of > > > > > different atomic commits. > > > > > So next time... :) > > > > > > > > > > Thanks. > > > > > > > > > > Daniel Juyung Seo (SeoZ) > > > > > > > > > > > > > > > > > > > > On Wed, Oct 30, 2013 at 3:34 AM, Michael Bouchaud <yo...@ef...> > wrote: > > > > > > > > > > > yoz pushed a commit to branch master. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > http://git.enlightenment.org/misc/entrance.git/commit/?id=539a5d93a2e0718440b3139016a3ee6a5f56670c > > > > > > > > > > > > commit 539a5d93a2e0718440b3139016a3ee6a5f56670c > > > > > > Author: Michael Bouchaud <yo...@ef...> > > > > > > Date: Tue Oct 29 19:26:56 2013 +0100 > > > > > > > > > > > > entrance: many improvment > > > > > > * improve pam login > > > > > > * fix some profile mistake when login an user > > > > > > * use EINA_UNUSED > > > > > > * code refactoring > > > > > > * remove session login command > > > > > > --- > > > > > > data/entrance.conf | 7 +- > > > > > > data/themes/default/default.edc | 16 +++- > > > > > > src/bin/entrance_conf.c | 203 > > > > > > +++++++++++++++++++++++++++++++++------- > > > > > > src/bin/entrance_connect.c | 14 +-- > > > > > > src/bin/entrance_connect.h | 2 +- > > > > > > src/bin/entrance_fill.c | 36 ++++--- > > > > > > src/bin/entrance_fill.h | 13 +-- > > > > > > src/bin/entrance_gui.c | 60 +++++++----- > > > > > > src/bin/entrance_gui.h | 1 + > > > > > > src/bin/entrance_login.c | 52 ++++++---- > > > > > > src/bin/entrance_login.h | 2 +- > > > > > > src/bin/entrance_test.c | 6 +- > > > > > > src/daemon/entrance.c | 9 +- > > > > > > src/daemon/entrance_action.c | 8 +- > > > > > > src/daemon/entrance_config.c | 3 - > > > > > > src/daemon/entrance_config.h | 1 - > > > > > > src/daemon/entrance_history.c | 47 +++++----- > > > > > > src/daemon/entrance_history.h | 21 ----- > > > > > > src/daemon/entrance_pam.c | 12 ++- > > > > > > src/daemon/entrance_server.c | 20 ++-- > > > > > > src/daemon/entrance_session.c | 33 +++---- > > > > > > src/daemon/entrance_session.h | 1 + > > > > > > src/daemon/entrance_test.c | 6 +- > > > > > > src/daemon/entrance_xserver.c | 2 +- > > > > > > src/event/entrance_event.c | 78 ++++++++------- > > > > > > src/event/entrance_event.h | 34 +++---- > > > > > > 26 files changed, 421 insertions(+), 266 deletions(-) > > > > > > > > > > > > diff --git a/data/entrance.conf b/data/entrance.conf > > > > > > index 5d62373..9c83d10 100644 > > > > > > --- a/data/entrance.conf > > > > > > +++ b/data/entrance.conf > > > > > > @@ -14,8 +14,6 @@ group "Entrance_Config" struct { > > > > > > > > > > > > /* Commands executed when starting a session */ > > > > > > value "session_start" string: "/usr/bin/sessreg -a -l :0.0"; > > > > > > - /* Command executed when login. Warning xsession must be > set to > > > 0 > > > > */ > > > > > > - value "session_login" string: "/bin/bash -login"; > > > > > > /* Commands executed when exiting a session */ > > > > > > value "session_stop" string: "/usr/bin/sessreg -d -l :0.0"; > > > > > > > > > > > > @@ -35,8 +33,8 @@ group "Entrance_Config" struct { > > > > > > /* Enable numlock TODO support it */ > > > > > > value "numlock" uchar: 1; > > > > > > > > > > > > - /** Bool to determine if entrance must login user with the > > > > > > session_login command > > > > > > - * or use xdg desktop and determine the command to use > > > > > > + /** Bool to determine if entrance could use the xdg desktop > > > files > > > > > and > > > > > > + * determine the command to use > > > > > > * 1 = desktop_file_cmd, 0 = session_login */ > > > > > > value "xsessions" uchar: 1; > > > > > > > > > > > > @@ -47,7 +45,6 @@ group "Entrance_Config" struct { > > > > > > /* The name of the user to use when autologin are enabled */ > > > > > > value "userlogin" string: "myusername"; > > > > > > > > > > > > - > > > > > > /* Lock file */ > > > > > > value "lockfile" string: "/var/run/entrance.pid"; > > > > > > > > > > > > diff --git a/data/themes/default/default.edc > > > > > > b/data/themes/default/default.edc > > > > > > index 8603045..f9f0508 100644 > > > > > > --- a/data/themes/default/default.edc > > > > > > +++ b/data/themes/default/default.edc > > > > > > @@ -413,9 +413,6 @@ collections { > > > > > > > > > > > > group { name: "entrance/conf/login"; > > > > > > parts { > > > > > > - alias: "entrance.login" "login:entrance.login"; > > > > > > - alias: "entrance.password" "login:entrance.password"; > > > > > > - alias: "entrance.xsessions" "login:entrance.xsessions"; > > > > > > part { name: "base"; > > > > > > type: RECT; > > > > > > description { state: "default" 0.0; > > > > > > @@ -439,8 +436,8 @@ collections { > > > > > > visible: 0; > > > > > > } > > > > > > } > > > > > > - part { name: "login"; > > > > > > - type: GROUP; > > > > > > + part { name: "entrance.login"; > > > > > > + type: SWALLOW; > > > > > > description { state: "default" 0.0; > > > > > > visible: 1; > > > > > > } > > > > > > @@ -449,6 +446,15 @@ collections { > > > > > > } > > > > > > } > > > > > > } > > > > > > + programs { > > > > > > + program { name: "conf_enabled"; > > > > > > + signal: "entrance,conf_user,enabled"; > > > > > > + source: ""; > > > > > > + action: STATE_SET "hidden" 0.0; > > > > > > + target: "hover"; > > > > > > + target: "entrance.login"; > > > > > > + } > > > > > > + } > > > > > > } > > > > > > > > > > > > group { name: "entrance/user"; > > > > > > diff --git a/src/bin/entrance_conf.c b/src/bin/entrance_conf.c > > > > > > index 05fdf98..15386ce 100644 > > > > > > --- a/src/bin/entrance_conf.c > > > > > > +++ b/src/bin/entrance_conf.c > > > > > > @@ -22,13 +22,19 @@ typedef struct Entrance_Int_Conf_ > > > > > > > > > > > > struct > > > > > > { > > > > > > - const char *user; > > > > > > + Entrance_Login *orig; > > > > > > struct > > > > > > { > > > > > > Evas_Object *preview; > > > > > > const char *path; > > > > > > const char *group; > > > > > > } bg; > > > > > > + struct > > > > > > + { > > > > > > + const char *path; > > > > > > + const char *group; > > > > > > + } image; > > > > > > + const char *lsess; > > > > > > Eina_Bool remember_session : 1; > > > > > > } user; > > > > > > > > > > > > @@ -47,8 +53,12 @@ static char *_entrance_conf_bg_text_get(void > > > *data, > > > > > > Evas_Object *obj, const char > > > > > > static Evas_Object *_entrance_conf_bg_content_get(void *data, > > > > > Evas_Object > > > > > > *obj, const char *part); > > > > > > 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 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 Entrance_Fill *_entrance_background_fill = NULL; > > > > > > static Entrance_Int_Conf *_entrance_int_conf = NULL; > > > > > > @@ -101,7 +111,6 @@ _entrance_conf_bg_sel(void *data EINA_UNUSED, > > > > > > Evas_Object *obj EINA_UNUSED, void > > > > > > { > > > > > > Entrance_Conf_Background *cbg; > > > > > > cbg = elm_object_item_data_get(event_info); > > > > > > - fprintf(stderr, "%s %s\n", cbg->path, cbg->group); > > > > > > if (!elm_layout_file_set(_entrance_int_conf->bg.preview, > > > > > > cbg->path, cbg->group)) > > > > > > { > > > > > > @@ -113,6 +122,43 @@ _entrance_conf_bg_sel(void *data > EINA_UNUSED, > > > > > > Evas_Object *obj EINA_UNUSED, void > > > > > > _entrance_conf_changed(); > > > > > > } > > > > > > > > > > > > +static Eina_Bool > > > > > > +_entrance_conf_bg_fill_cb(void *data, Elm_Object_Item *it) > > > > > > +{ > > > > > > + Entrance_Conf_Background *cbg; > > > > > > + const char *bg_path, *bg_group; > > > > > > + cbg = data; > > > > > > + > > > > > > + entrance_gui_background_get(&bg_path, &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 void > > > > > > +_entrance_conf_user_bg_sel(void *data EINA_UNUSED, Evas_Object > *obj > > > > > > EINA_UNUSED, void *event_info) > > > > > > +{ > > > > > > + Entrance_Conf_Background *cbg; > > > > > > + cbg = elm_object_item_data_get(event_info); > > > > > > + if (!elm_layout_file_set(_entrance_int_conf->user.bg.preview, > > > > > > + cbg->path, cbg->group)) > > > > > > + { > > > > > > + PT("Error on loading "); > > > > > > + fprintf(stderr, "%s %s\n", cbg->path, cbg->group); > > > > > > + } > > > > > > + _entrance_int_conf->user.bg.path = cbg->path; > > > > > > + _entrance_int_conf->user.bg.group = cbg->group; > > > > > > + _entrance_conf_changed(); > > > > > > +} > > > > > > + > > > > > > /* vkbd */ > > > > > > static void > > > > > > _entrance_conf_vkbd_changed(void *data EINA_UNUSED, Evas_Object > > > *obj, > > > > > > void *event EINA_UNUSED) > > > > > > @@ -144,7 +190,7 @@ _entrance_conf_ok_clicked(void *data, > Evas_Object > > > > > *obj > > > > > > EINA_UNUSED, void *event > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_conf_apply_clicked(void *data, Evas_Object *obj > > > EINA_UNUSED, > > > > > > void *event EINA_UNUSED) > > > > > > +_entrance_conf_apply_clicked(void *data EINA_UNUSED, Evas_Object > > > *obj > > > > > > EINA_UNUSED, void *event EINA_UNUSED) > > > > > > { > > > > > > _entrance_conf_apply(); > > > > > > _entrance_conf_changed(); > > > > > > @@ -187,7 +233,6 @@ _entrance_conf_backgrounds_get(Evas_Object > *obj, > > > > > const > > > > > > char *user) > > > > > > entrance_gui_stringlist_free(list); > > > > > > evas_object_del(o); > > > > > > > > > > > > - //TODO parse share/entrance/background > > > > > > it = eina_file_ls(PACKAGE_DATA_DIR"/backgrounds"); > > > > > > EINA_ITERATOR_FOREACH(it, str) > > > > > > { > > > > > > @@ -200,6 +245,7 @@ _entrance_conf_backgrounds_get(Evas_Object > *obj, > > > > > const > > > > > > char *user) > > > > > > snprintf(buf, sizeof(buf), > > > > > > "entrance/background/%s", str); > > > > > > cbg->path = str; > > > > > > + /* TODO use entrance/desktop/background or > > > > > > e/desktop/background */ > > > > > > cbg->group = > > > > eina_stringshare_add("e/desktop/background"); > > > > > > { > > > > > > char *name, *p; > > > > > > @@ -232,6 +278,15 @@ _entrance_conf_apply() > > > > > > conf.bg.group = _entrance_int_conf->bg.group; > > > > > > conf.vkbd_enabled = _entrance_int_conf->vkbd_enabled; > > > > > > > > > > > > + if (_entrance_int_conf->scale != elm_config_scale_get()) > > > > > > + { > > > > > > + elm_config_scale_set(_entrance_int_conf->scale); > > > > > > + elm_config_all_flush(); > > > > > > + } > > > > > > + if (_entrance_int_conf->theme != > entrance_gui_theme_name_get()) > > > > > > + { > > > > > > + entrance_gui_theme_name_set(_entrance_int_conf->theme); > > > > > > + } > > > > > > entrance_gui_conf_set(&conf); > > > > > > entrance_connect_conf_send(&conf); > > > > > > } > > > > > > @@ -240,7 +295,7 @@ _entrance_conf_apply() > > > > > > static Evas_Object * > > > > > > _entrance_conf_build(Evas_Object *obj) > > > > > > { > > > > > > - Evas_Object *t, *bx, *hbx, *o; > > > > > > + Evas_Object *t, *bx, *hbx, *o, *gl; > > > > > > Eina_List *l; > > > > > > int j = 0; > > > > > > > > > > > > @@ -262,22 +317,18 @@ _entrance_conf_build(Evas_Object *obj) > > > > > > elm_table_pack(t, hbx, 0, j, 2, 3); > > > > > > 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, NULL); > > > > > > - entrance_fill(o, _entrance_background_fill, > > > > > > - l, _entrance_conf_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); > > > > > > o = elm_layout_add(hbx); > > > > > > - elm_box_pack_end(bx, o); > > > > > > _entrance_int_conf->bg.preview = o; > > > > > > + elm_box_pack_end(bx, o); > > > > > > 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); > > > > > > evas_object_show(o); > > > > > > @@ -288,6 +339,10 @@ _entrance_conf_build(Evas_Object *obj) > > > > > > evas_object_show(o); > > > > > > evas_object_show(hbx); > > > > > > j += 3; > > > > > > + l = _entrance_conf_backgrounds_get(gl, NULL); > > > > > > + entrance_fill(gl, _entrance_background_fill, > > > > > > + l, _entrance_conf_bg_fill_cb, > > > _entrance_conf_bg_sel, > > > > > o); > > > > > > + eina_list_free(l); > > > > > > > > > > > > /* Touch Screen */ > > > > > > o = elm_label_add(t); > > > > > > @@ -360,20 +415,48 @@ _entrance_conf_build(Evas_Object *obj) > > > > > > return t; > > > > > > } > > > > > > > > > > > > +static void > > > > > > +_entrance_conf_user_auth(void *data, const char *user, Eina_Bool > > > > > granted) > > > > > > +{ > > > > > > + Evas_Object *t; > > > > > > + 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", > > > > ""); > > > > > > + } > > > > > > +} > > > > > > + > > > > > > + > > > > > > static Evas_Object * > > > > > > _entrance_conf_user_build(Evas_Object *obj) > > > > > > { > > > > > > - Evas_Object *t, *bx, *o, *ly; > > > > > > - int j = 0; > > > > > > + Evas_Object *t, *o, *ly; > > > > > > > > > > > > ly = entrance_gui_theme_get(obj, "entrance/conf/login"); > > > > > > evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, > > > > EVAS_HINT_FILL); > > > > > > evas_object_show(ly); > > > > > > > > > > > > + o = entrance_login_add(ly, _entrance_conf_user_auth, ly); > > > > > > + elm_object_part_content_set(ly, "entrance.login", o); > > > > > > + evas_object_show(o); > > > > > > t = elm_table_add(obj); > > > > > > elm_object_part_content_set(ly, "entrance.conf", t); > > > > > > + evas_object_size_hint_weight_set(t, EVAS_HINT_EXPAND, > > > > > > EVAS_HINT_EXPAND); > > > > > > elm_table_padding_set(t, 5 , 5); > > > > > > > > > > > > + return ly; > > > > > > +} > > > > > > + > > > > > > +static void > > > > > > +_entrance_conf_user_build_cb(Evas_Object *t, const char *user) > > > > > > +{ > > > > > > + Evas_Object *o, *bx, *hbx; > > > > > > + Entrance_Login *eu; > > > > > > + Eina_List *l; > > > > > > + const Eina_List *users, *ll; > > > > > > + int j = 0; > > > > > > + > > > > > > /* Background */ > > > > > > o = elm_label_add(t); > > > > > > elm_object_text_set(o, "Background"); > > > > > > @@ -382,14 +465,39 @@ _entrance_conf_user_build(Evas_Object *obj) > > > > > > elm_table_pack(t, o, 0, j, 1, 1); > > > > > > evas_object_show(o); > > > > > > ++j; > > > > > > - o = elm_gengrid_add(t); > > > > > > + hbx = elm_box_add(t); > > > > > > + elm_box_horizontal_set(hbx, EINA_TRUE); > > > > > > + elm_table_pack(t, hbx, 0, j, 2, 1); > > > > > > + ++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); > > > > > > - elm_table_pack(t, o, 0, j, 2, 3); > > > > > > - elm_gengrid_item_size_set(o, 80, 50); > > > > > > - elm_gengrid_align_set(o, 0.0, 0.0); > > > > > > + 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); > > > > > > - j += 3; > > > > > > + bx = elm_box_add(hbx); > > > > > > + elm_box_pack_end(hbx, bx); > > > > > > + evas_object_show(bx); > > > > > > + o = elm_layout_add(hbx); > > > > > > + _entrance_int_conf->user.bg.preview = o; > > > > > > + elm_box_pack_end(bx, o); > > > > > > + 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); > > > > > > + evas_object_show(o); > > > > > > + o = evas_object_rectangle_add(hbx); > > > > > > + evas_object_color_set(o, 0, 0, 0, 0); > > > > > > + evas_object_size_hint_min_set(o, 256, 0); > > > > > > + elm_box_pack_end(bx, o); > > > > > > + evas_object_show(o); > > > > > > + evas_object_show(hbx); > > > > > > + > > > > > > + /* Icon */ > > > > > > > > > > > > /* Session to autoselect */ > > > > > > o = elm_label_add(t); > > > > > > @@ -422,7 +530,20 @@ _entrance_conf_user_build(Evas_Object *obj) > > > > > > > > > > > > evas_object_show(t); > > > > > > > > > > > > - return ly; > > > > > > + 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 > > > > > > @@ -444,12 +565,20 @@ _entrance_conf_changed(void) > > > > > > const char *bg_group; > > > > > > > > > > > > entrance_gui_background_get(&bg_path, &bg_group); > > > > > > - if ((_entrance_int_conf->theme != > entrance_gui_theme_name_get()) > > > > > > + if (((_entrance_int_conf->theme != > entrance_gui_theme_name_get()) > > > > > > || (_entrance_int_conf->bg.path != bg_path) > > > > > > || (_entrance_int_conf->bg.group != bg_group) > > > > > > || (_entrance_int_conf->scale != elm_config_scale_get()) > > > > > > || (_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->remember_session > != > > > > > > _entrance_int_conf->user.remember_session) > > > > > > + || (_entrance_int_conf->user.orig->lsess != > > > > > > _entrance_int_conf->user.lsess)))) > > > > > > + > > > > > > { > > > > > > elm_object_disabled_set(_entrance_int_conf->gui.btn_ok, > > > > > > EINA_FALSE); > > > > > > > elm_object_disabled_set(_entrance_int_conf->gui.btn_apply, > > > > > > EINA_FALSE); > > > > > > @@ -523,16 +652,6 @@ entrance_conf_begin(Evas_Object *obj, > > > Evas_Object > > > > > > *parent) > > > > > > elm_box_pack_end(bx, nf); > > > > > > evas_object_show(nf); > > > > > > > > > > > > - o = _entrance_conf_build(nf); > > > > > > - it = elm_naviframe_item_simple_push(nf, o); > > > > > > - itc = elm_segment_control_item_add(sc, NULL, "General"); > > > > > > - elm_object_item_data_set(itc, it); > > > > > > - > > > > > > - o = _entrance_conf_user_build(nf); > > > > > > - itu = elm_naviframe_item_simple_push(nf, o); > > > > > > - ituc = elm_segment_control_item_add(sc, NULL, "User"); > > > > > > - elm_object_item_data_set(ituc, itu); > > > > > > - > > > > > > /* Ok Apply Close */ > > > > > > hbx = elm_box_add(bx); > > > > > > elm_box_horizontal_set(hbx, EINA_TRUE); > > > > > > @@ -570,6 +689,20 @@ entrance_conf_begin(Evas_Object *obj, > > > Evas_Object > > > > > > *parent) > > > > > > elm_box_pack_end(hbx, o); > > > > > > evas_object_show(o); > > > > > > > > > > > > + /* Build configuration panel */ > > > > > > + /* main */ > > > > > > + o = _entrance_conf_build(nf); > > > > > > + it = elm_naviframe_item_simple_push(nf, o); > > > > > > + itc = elm_segment_control_item_add(sc, NULL, "General"); > > > > > > + elm_object_item_data_set(itc, it); > > > > > > + > > > > > > + /* user */ > > > > > > + o = _entrance_conf_user_build(nf); > > > > > > + itu = elm_naviframe_item_simple_push(nf, o); > > > > > > + ituc = elm_segment_control_item_add(sc, NULL, "User"); > > > > > > + elm_object_item_data_set(ituc, itu); > > > > > > + > > > > > > + > > > > > > elm_segment_control_item_selected_set(itc, EINA_TRUE); > > > > > > > > > > > > { > > > > > > diff --git a/src/bin/entrance_connect.c > b/src/bin/entrance_connect.c > > > > > > index 820eec9..278689a 100644 > > > > > > --- a/src/bin/entrance_connect.c > > > > > > +++ b/src/bin/entrance_connect.c > > > > > > @@ -10,20 +10,21 @@ typedef struct > > > > > > static Eina_Bool _entrance_connect_add(void *data, int type, > void > > > > > *event); > > > > > > static Eina_Bool _entrance_connect_del(void *data, int type, > void > > > > > *event); > > > > > > static Eina_Bool _entrance_connect_data(void *data, int type, > void > > > > > > *event); > > > > > > +static void _entrance_connect_auth(const char *login, Eina_Bool > > > > > granted); > > > > > > > > > > > > static Ecore_Con_Server *_entrance_connect; > > > > > > static Eina_List *_handlers = NULL; > > > > > > static Eina_List *_auth_list = NULL; > > > > > > > > > > > > static Eina_Bool > > > > > > -_entrance_connect_add(void *data __UNUSED__, int type > __UNUSED__, > > > void > > > > > > *event __UNUSED__) > > > > > > +_entrance_connect_add(void *data EINA_UNUSED, int type > EINA_UNUSED, > > > > void > > > > > > *event EINA_UNUSED) > > > > > > { > > > > > > PT("connected\n"); > > > > > > return ECORE_CALLBACK_RENEW; > > > > > > } > > > > > > > > > > > > static Eina_Bool > > > > > > -_entrance_connect_del(void *data __UNUSED__, int type > __UNUSED__, > > > void > > > > > > *event __UNUSED__) > > > > > > +_entrance_connect_del(void *data EINA_UNUSED, int type > EINA_UNUSED, > > > > void > > > > > > *event EINA_UNUSED) > > > > > > { > > > > > > PT("disconnected\n"); > > > > > > _entrance_connect = NULL; > > > > > > @@ -32,7 +33,7 @@ _entrance_connect_del(void *data __UNUSED__, > int > > > type > > > > > > __UNUSED__, void *event __ > > > > > > } > > > > > > > > > > > > static Eina_Bool > > > > > > -_entrance_connect_data(void *data __UNUSED__, int type > __UNUSED__, > > > > void > > > > > > *event) > > > > > > +_entrance_connect_data(void *data EINA_UNUSED, int type > EINA_UNUSED, > > > > > void > > > > > > *event) > > > > > > { > > > > > > Ecore_Con_Event_Server_Data *ev; > > > > > > ev = event; > > > > > > @@ -43,7 +44,7 @@ _entrance_connect_data(void *data __UNUSED__, > int > > > > type > > > > > > __UNUSED__, void *event) > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_connect_auth(Eina_Bool granted) > > > > > > +_entrance_connect_auth(const char *login, Eina_Bool granted) > > > > > > { > > > > > > Entrance_Connect_Auth *auth; > > > > > > Eina_List *l, *ll; > > > > > > @@ -51,7 +52,7 @@ _entrance_connect_auth(Eina_Bool granted) > > > > > > EINA_LIST_FOREACH_SAFE(_auth_list, l, ll, auth) > > > > > > { > > > > > > if (auth->func) > > > > > > - auth->func(auth->data, granted); > > > > > > + auth->func(auth->data, login, granted); > > > > > > } > > > > > > } > > > > > > > > > > > > @@ -68,7 +69,8 @@ _entrance_connect_read_cb(const void *data, > size_t > > > > size > > > > > > EINA_UNUSED, void *user_ > > > > > > PT("Auth granted :)\n"); > > > > > > else > > > > > > PT("Auth error :(\n"); > > > > > > - _entrance_connect_auth(eev->event.status.granted); > > > > > > + _entrance_connect_auth(eev->event.status.login, > > > > > > + eev->event.status.granted); > > > > > > } > > > > > > else if (eev->type == ENTRANCE_EVENT_MAXTRIES) > > > > > > { > > > > > > diff --git a/src/bin/entrance_connect.h > b/src/bin/entrance_connect.h > > > > > > index 9dfed41..d08e13b 100644 > > > > > > --- a/src/bin/entrance_connect.h > > > > > > +++ b/src/bin/entrance_connect.h > > > > > > @@ -1,7 +1,7 @@ > > > > > > #ifndef ENTRANCE_CONNECT_ > > > > > > #define ENTRANCE_CONNECT_ > > > > > > > > > > > > -typedef void (*Entrance_Connect_Auth_Cb)(void *data, Eina_Bool > > > > granted); > > > > > > +typedef void (*Entrance_Connect_Auth_Cb)(void *data, const char > > > > *login, > > > > > > Eina_Bool granted); > > > > > > > > > > > > void entrance_connect_init(); > > > > > > void entrance_connect_auth_send(const char *login, const char > > > > *password, > > > > > > const char *session, Eina_Bool open_session); > > > > > > diff --git a/src/bin/entrance_fill.c b/src/bin/entrance_fill.c > > > > > > index 949ddf8..95827c4 100644 > > > > > > --- a/src/bin/entrance_fill.c > > > > > > +++ b/src/bin/entrance_fill.c > > > > > > @@ -5,10 +5,10 @@ struct Entrance_Fill_ > > > > > > const char *item_style; //maybee need to be provided by > theme ? > > > > > > struct > > > > > > { > > > > > > - EntranceFillTextGetFunc text_get; > > > > > > - EntranceFillContentGetFunc content_get; > > > > > > - EntranceFillStateGetFunc state_get; > > > > > > - EntranceFillDelFunc del; > > > > > > + Entrance_Fill_Text_Get_Func text_get; > > > > > > + Entrance_Fill_Content_Get_Func content_get; > > > > > > + Entrance_Fill_State_Get_Func state_get; > > > > > > + Entrance_Fill_Del_Func del; > > > > > > Evas_Smart_Cb sel; > > > > > > void *data; > > > > > > } func; > > > > > > @@ -18,7 +18,7 @@ struct Entrance_Fill_ > > > > > > > > > > > > ///////////////// LIST /////////////////////////////// > > > > > > static void > > > > > > -_entrance_fill_list(Evas_Object *obj, Entrance_Fill *ef, > Eina_List > > > > > > *contents, Evas_Smart_Cb func, void *data) > > > > > > +_entrance_fill_list(Evas_Object *obj, Entrance_Fill *ef, > Eina_List > > > > > > *contents, Entrance_Fill_Cb_Func fill_cb, Evas_Smart_Cb func, > void > > > > *data) > > > > > > { > > > > > > Eina_List *l; > > > > > > void *content; > > > > > > @@ -31,13 +31,15 @@ _entrance_fill_list(Evas_Object *obj, > > > Entrance_Fill > > > > > > *ef, Eina_List *contents, Ev > > > > > > NULL, func, data); > > > > > > if (it) > > > > > > elm_object_item_data_set(it, content); > > > > > > + if (fill_cb) > > > > > > + fill_cb(content, it); > > > > > > } > > > > > > elm_list_go(obj); > > > > > > } > > > > > > > > > > > > ///////////////// GENLIST ///////////////////////////// > > > > > > static void > > > > > > -_entrance_fill_genlist(Evas_Object *obj, Entrance_Fill *ef, > > > Eina_List > > > > > > *contents, Evas_Smart_Cb func, void *data) > > > > > > +_entrance_fill_genlist(Evas_Object *obj, Entrance_Fill *ef, > > > Eina_List > > > > > > *contents, Entrance_Fill_Cb_Func fill_cb, Evas_Smart_Cb func, > void > > > > *data) > > > > > > { > > > > > > Eina_List *l; > > > > > > Elm_Genlist_Item_Class *glc; > > > > > > @@ -64,12 +66,14 @@ _entrance_fill_genlist(Evas_Object *obj, > > > > > Entrance_Fill > > > > > > *ef, Eina_List *contents, > > > > > > content, NULL, > > > > > ELM_GENLIST_ITEM_NONE, > > > > > > func, data); > > > > > > elm_object_item_data_set(it, content); > > > > > > + if (fill_cb) > > > > > > + fill_cb(content, it); > > > > > > } > > > > > > } > > > > > > > > > > > > ///////////////// GENGRID ///////////////////////////// > > > > > > static void > > > > > > -_entrance_fill_gengrid(Evas_Object *obj, Entrance_Fill *ef, > > > Eina_List > > > > > > *contents, Evas_Smart_Cb func, void *data) > > > > > > +_entrance_fill_gengrid(Evas_Object *obj, Entrance_Fill *ef, > > > Eina_List > > > > > > *contents, Entrance_Fill_Cb_Func fill_cb, Evas_Smart_Cb func, > void > > > > *data) > > > > > > { > > > > > > Eina_List *l; > > > > > > Elm_Gengrid_Item_Class *ggc; > > > > > > @@ -94,6 +98,8 @@ _entrance_fill_gengrid(Evas_Object *obj, > > > > Entrance_Fill > > > > > > *ef, Eina_List *contents, > > > > > > it = elm_gengrid_item_append(obj, ggc, > > > > > > content, func, data); > > > > > > elm_object_item_data_set(it, content); > > > > > > + if (fill_cb) > > > > > > + fill_cb(content, it); > > > > > > } > > > > > > } > > > > > > > > > > > > @@ -110,7 +116,7 @@ _entrance_fill_hoversell_func_cb(void *data > > > > > > EINA_UNUSED, Evas_Object *obj, void > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_fill_hoversell(Evas_Object *obj, Entrance_Fill *ef, > > > > Eina_List > > > > > > *contents, Evas_Smart_Cb func, void *data) > > > > > > +_entrance_fill_hoversell(Evas_Object *obj, Entrance_Fill *ef, > > > > Eina_List > > > > > > *contents, Entrance_Fill_Cb_Func fill_cb, Evas_Smart_Cb func, > void > > > > *data) > > > > > > { > > > > > > Eina_List *l; > > > > > > void *content; > > > > > > @@ -130,6 +136,8 @@ _entrance_fill_hoversell(Evas_Object *obj, > > > > > > Entrance_Fill *ef, Eina_List *content > > > > > > > _entrance_fill_hoversell_func_cb, > > > > > > NULL); > > > > > > elm_object_item_data_set(it, content); > > > > > > evas_object_data_set(elm_object_item_widget_get(it), > > > > > "fill_data", > > > > > > ef); > > > > > > + if (fill_cb) > > > > > > + fill_cb(content, it); > > > > > > if (ic) > > > > > > { > > > > > > free(ic); > > > > > > @@ -145,7 +153,7 @@ _entrance_fill_hoversell(Evas_Object *obj, > > > > > > Entrance_Fill *ef, Eina_List *content > > > > > > > > > > > > ///////////////// MAIN ///////////////////////////// > > > > > > Entrance_Fill * > > > > > > -entrance_fill_new(const char *item_style, > EntranceFillTextGetFunc > > > > > > text_get, EntranceFillContentGetFunc content_get, > > > > > EntranceFillStateGetFunc > > > > > > state_get, EntranceFillDelFunc del_func) > > > > > > +entrance_fill_new(const char *item_style, > > > Entrance_Fill_Text_Get_Func > > > > > > text_get, Entrance_Fill_Content_Get_Func content_get, > > > > > > Entrance_Fill_State_Get_Func state_get, Entrance_Fill_Del_Func > > > > del_func) > > > > > > { > > > > > > Entrance_Fill *ef; > > > > > > ef = calloc(1, sizeof(Entrance_Fill)); > > > > > > @@ -165,20 +173,20 @@ entrance_fill_del(Entrance_Fill *ef) > > > > > > } > > > > > > > > > > > > void > > > > > > -entrance_fill(Evas_Object *obj, Entrance_Fill *ef, Eina_List > > > > *contents, > > > > > > Evas_Smart_Cb func, void *data) > > > > > > +entrance_fill(Evas_Object *obj, Entrance_Fill *ef, Eina_List > > > > *contents, > > > > > > Entrance_Fill_Cb_Func fill_cb, Evas_Smart_Cb func, void *data) > > > > > > { > > > > > > const char *type; > > > > > > if (!obj) return; > > > > > > if ((type = elm_object_widget_type_get(obj))) > > > > > > { > > > > > > if (!strcmp(type, "elm_list")) > > > > > > - _entrance_fill_list(obj, ef, contents, func, data); > > > > > > + _entrance_fill_list(obj, ef, contents, fill_cb, func, > > > data); > > > > > > else if (!strcmp(type, "elm_genlist")) > > > > > > - _entrance_fill_genlist(obj, ef, contents, func, data); > > > > > > + _entrance_fill_genlist(obj, ef, contents, fill_cb, > func, > > > > > data); > > > > > > else if (!strcmp(type, "elm_gengrid")) > > > > > > - _entrance_fill_gengrid(obj, ef, contents, func, data); > > > > > > + _entrance_fill_gengrid(obj, ef, contents, fill_cb, > func, > > > > > data); > > > > > > else if (!strcmp(type, "elm_hoversel")) > > > > > > - _entrance_fill_hoversell(obj, ef, contents, func, > data); > > > > > > + _entrance_fill_hoversell(obj, ef, contents, fill_cb, > func, > > > > > > data); > > > > > > else > > > > > > { > > > > > > PT("Unknow object type to fill "); > > > > > > diff --git a/src/bin/entrance_fill.h b/src/bin/entrance_fill.h > > > > > > index b3ca3e2..8989cfe 100644 > > > > > > --- a/src/bin/entrance_fill.h > > > > > > +++ b/src/bin/entrance_fill.h > > > > > > @@ -3,13 +3,14 @@ > > > > > > > > > > > > typedef struct Entrance_Fill_ Entrance_Fill; > > > > > > > > > > > > -typedef char *(*EntranceFillTextGetFunc) (void *data, > Evas_Object > > > > *obj, > > > > > > const char *part); > > > > > > -typedef Evas_Object *(*EntranceFillContentGetFunc) (void *data, > > > > > > Evas_Object *obj, const char *part); > > > > > > -typedef Eina_Bool (*EntranceFillStateGetFunc) (void *data, > > > Evas_Object > > > > > > *obj, const char *part); > > > > > > -typedef void (*EntranceFillDelFunc) (void *data, Evas_Object > *obj); > > > > > > +typedef char *(*Entrance_Fill_Text_Get_Func) (void *data, > > > Evas_Object > > > > > > *obj, const char *part); > > > > > > +typedef Evas_Object *(*Entrance_Fill_Content_Get_Func) (void > *data, > > > > > > Evas_Object *obj, const char *part); > > > > > > +typedef Eina_Bool (*Entrance_Fill_State_Get_Func) (void *data, > > > > > > Evas_Object *obj, const char *part); > > > > > > +typedef void (*Entrance_Fill_Del_Func) (void *data, Evas_Object > > > *obj); > > > > > > +typedef Eina_Bool (*Entrance_Fill_Cb_Func) (void *data, > > > > Elm_Object_Item > > > > > > *it); > > > > > > > > > > > > -Entrance_Fill *entrance_fill_new(const char *item_style, > > > > > > EntranceFillTextGetFunc label_get, EntranceFillContentGetFunc > > > > > content_get, > > > > > > EntranceFillStateGetFunc state_get, EntranceFillDelFunc > del_func); > > > > > > -void entrance_fill(Evas_Object *obj, Entrance_Fill *egf, > Eina_List > > > > > > *contents, Evas_Smart_Cb func, void *data); > > > > > > +Entrance_Fill *entrance_fill_new(const char *item_style, > > > > > > Entrance_Fill_Text_Get_Func label_get, > Entrance_Fill_Content_Get_Func > > > > > > content_get, Entrance_Fill_State_Get_Func state_get, > > > > > Entrance_Fill_Del_Func > > > > > > del_func); > > > > > > +void entrance_fill(Evas_Object *obj, Entrance_Fill *egf, > Eina_List > > > > > > *contents, Entrance_Fill_Cb_Func fill_cb, Evas_Smart_Cb func, > void > > > > > *data); > > > > > > void entrance_fill_del(Entrance_Fill *ef); > > > > > > > > > > > > > > > > > > diff --git a/src/bin/entrance_gui.c b/src/bin/entrance_gui.c > > > > > > index 7725dc5..2b5daef 100644 > > > > > > --- a/src/bin/entrance_gui.c > > > > > > +++ b/src/bin/entrance_gui.c > > > > > > @@ -14,7 +14,7 @@ static void _entrance_gui_user_del(void *data, > > > > > > Evas_Object *obj); > > > > > > static void _entrance_gui_actions_populate(); > > > > > > static void _entrance_gui_conf_clicked_cb(void *data, > Evas_Object > > > > *obj, > > > > > > void *event_info); > > > > > > static void _entrance_gui_update(void); > > > > > > -static void _entrance_gui_auth_cb(void *data, Eina_Bool > granted); > > > > > > +static void _entrance_gui_auth_cb(void *data, const char *user, > > > > > Eina_Bool > > > > > > granted); > > > > > > > > > > > > > > > > > > /* > > > > > > @@ -295,7 +295,8 @@ entrance_gui_users_set(Eina_List *users) > > > > > > { > > > > > > ol = ENTRANCE_GUI_GET(screen->edj, "entrance.users"); > > > > > > if (!ol) continue; > > > > > > - entrance_fill(ol, ef, users, _entrance_gui_user_sel_cb, > > > > > > screen->login); > > > > > > + entrance_fill(ol, ef, users, NULL, > > > > > > + _entrance_gui_user_sel_cb, screen->login); > > > > > > elm_object_signal_emit(screen->edj, > > > > > > "entrance,users,enabled", ""); > > > > > > } > > > > > > @@ -353,6 +354,12 @@ entrance_gui_conf_set(const > > > > Entrance_Conf_Gui_Event > > > > > > *conf) > > > > > > _entrance_gui_update(); > > > > > > } > > > > > > > > > > > > +void > > > > > > +entrance_gui_theme_name_set(const char *theme) > > > > > > +{ > > > > > > + /* TODO */ > > > > > > +} > > > > > > + > > > > > > const char * > > > > > > entrance_gui_theme_name_get(void) > > > > > > { > > > > > > @@ -384,12 +391,12 @@ entrance_gui_vkbd_enabled_get(void) > > > > > > } > > > > > > /* > > > > > > static void > > > > > > -_entrance_gui_login_activated_cb(void *data __UNUSED__, > Evas_Object > > > > > *obj, > > > > > > void *event_info __UNUSED__) > > > > > > +_entrance_gui_login_activated_cb(void *data EINA_UNUSED, > Evas_Object > > > > > > *obj, void *event_info EINA_UNUSED) > > > > > > { > > > > > > char *txt; > > > > > > Eina_List *l, *ll; > > > > > > Entrance_Xsession *xsess; > > > > > > - Entrance_User_Event *eu = NULL; > > > > > > + Entrance_Login *eu = NULL; > > > > > > Entrance_Screen *screen; > > > > > > > > > > > > PT("login activated\n"); > > > > > > @@ -423,7 +430,7 @@ _entrance_gui_login_activated_cb(void *data > > > > > > __UNUSED__, Evas_Object *obj, void * > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_shutdown(void *data __UNUSED__, Evas_Object *obj > > > > > > __UNUSED__, void *event_info __UNUSED__) > > > > > > +_entrance_gui_shutdown(void *data EINA_UNUSED, Evas_Object *obj > > > > > > EINA_UNUSED, void *event_info EINA_UNUSED) > > > > > > { > > > > > > elm_exit(); > > > > > > PT("shutdown cb\n"); > > > > > > @@ -431,7 +438,7 @@ _entrance_gui_shutdown(void *data __UNUSED__, > > > > > > Evas_Object *obj __UNUSED__, void > > > > > > > > > > > > > > > > > > static void > > > > > > -_entrance_gui_focus(void *data __UNUSED__, Evas_Object *obj > > > > __UNUSED__, > > > > > > void *event_info __UNUSED__) > > > > > > +_entrance_gui_focus(void *data EINA_UNUSED, Evas_Object *obj > > > > > EINA_UNUSED, > > > > > > void *event_info EINA_UNUSED) > > > > > > { > > > > > > Eina_List *l; > > > > > > Entrance_Screen *screen; > > > > > > @@ -442,7 +449,7 @@ _entrance_gui_focus(void *data __UNUSED__, > > > > > Evas_Object > > > > > > *obj __UNUSED__, void *ev > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_login_cancel_cb(void *data __UNUSED__, Evas_Object > > > *obj > > > > > > __UNUSED__, const char *sig __UNUSED__, const char *src > __UNUSED__) > > > > > > +_entrance_gui_login_cancel_cb(void *data EINA_UNUSED, > Evas_Object > > > *obj > > > > > > EINA_UNUSED, const char *sig EINA_UNUSED, const char *src > > > EINA_UNUSED) > > > > > > { > > > > > > Evas_Object *o; > > > > > > Entrance_Screen *screen; > > > > > > @@ -461,7 +468,7 @@ _entrance_gui_login_cancel_cb(void *data > > > > __UNUSED__, > > > > > > Evas_Object *obj __UNUSED__ > > > > > > } > > > > > > > > > > > > static Eina_Bool > > > > > > -_entrance_gui_login_timeout(void *data __UNUSED__) > > > > > > +_entrance_gui_login_timeout(void *data EINA_UNUSED) > > > > > > { > > > > > > Evas_Object *popup, *o, *bx; > > > > > > Entrance_Screen *screen; > > > > > > @@ -531,20 +538,20 @@ _entrance_gui_login(Entrance_Screen > *screen) > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_login_request_cb(void *data, Evas_Object *obj > > > > __UNUSED__, > > > > > > const char *sig __UNUSED__, const char *src __UNUSED__) > > > > > > +_entrance_gui_login_request_cb(void *data, Evas_Object *obj > > > > EINA_UNUSED, > > > > > > const char *sig EINA_UNUSED, const char *src EINA_UNUSED) > > > > > > { > > > > > > _entrance_gui_login(data); > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_password_activated_cb(void *data, Evas_Object *obj > > > > > > __UNUSED__, void *event_info __UNUSED__) > > > > > > +_entrance_gui_password_activated_cb(void *data, Evas_Object *obj > > > > > > EINA_UNUSED, void *event_info EINA_UNUSED) > > > > > > { > > > > > > PT("password activated\n"); > > > > > > _entrance_gui_login(data); > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_xsessions_clicked_cb(void *data, Evas_Object *obj, > > > void > > > > > > *event_info __UNUSED__) > > > > > > +_entrance_gui_xsessions_clicked_cb(void *data, Evas_Object *obj, > > > void > > > > > > *event_info EINA_UNUSED) > > > > > > { > > > > > > Evas_Object *icon; > > > > > > Eina_List *l; > > > > > > @@ -632,7 +639,7 @@ _entrance_gui_sessions_populate() > > > > > > } > > > > > > > > > > > > static Eina_Bool > > > > > > -_entrance_gui_auth_enable(void *data __UNUSED__) > > > > > > +_entrance_gui_auth_enable(void *data EINA_UNUSED) > > > > > > { > > > > > > Evas_Object *o; > > > > > > Eina_List *l; > > > > > > @@ -677,12 +684,17 @@ _entrance_gui_update(void) > > > > > > } > > > > > > if (!bg) > > > > > > { > > > > > > + const char *path; > > > > > > + const char *group; > > > > > > if (_gui->bg.group) > > > > > > bg = > entrance_gui_theme_get(screen->transition, > > > > > > _gui->bg.group); > > > > > > else > > > > > > bg = > entrance_gui_theme_get(screen->transition, > > > > > > > > > > > > "entrance/background/default"); > > > > > > + edje_object_file_get(elm_layout_edje_get(bg), > > > &path, > > > > > > &group); > > > > > > + eina_stringshare_replace(&_gui->bg.path, > path); > > > > > > + eina_stringshare_replace(&_gui->bg.group, > group); > > > > > > } > > > > > > elm_object_part_content_set(screen->transition, > > > > > > > > > "entrance.wallpaper.default", > > > > > > bg); > > > > > > @@ -743,27 +755,27 @@ > _entrance_gui_user_icon_random_get(Evas_Object > > > > > *obj) > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_user_sel_cb(void *data, Evas_Object *obj > __UNUSED__, > > > > void > > > > > > *event_info) > > > > > > +_entrance_gui_user_sel_cb(void *data, Evas_Object *obj > EINA_UNUSED, > > > > void > > > > > > *event_info) > > > > > > { > > > > > > - Entrance_User_Event *eu; > > > > > > + Entrance_Login *eu; > > > > > > eu = elm_object_item_data_get(event_info); > > > > > > entrance_login_login_set(data, eu->login); > > > > > > entrance_login_session_set(data, eu->lsess); > > > > > > } > > > > > > > > > > > > static char * > > > > > > -_entrance_gui_user_text_get(void *data, Evas_Object *obj > __UNUSED__, > > > > > > const char *part __UNUSED__) > > > > > > +_entrance_gui_user_text_get(void *data, Evas_Object *obj > > > EINA_UNUSED, > > > > > > const char *part EINA_UNUSED) > > > > > > { > > > > > > - Entrance_User_Event *eu; > > > > > > + Entrance_Login *eu; > > > > > > eu = data; > > > > > > return strdup(eu->login); > > > > > > } > > > > > > > > > > > > static Evas_Object * > > > > > > -_entrance_gui_user_content_get(void *data __UNUSED__, > Evas_Object > > > > *obj, > > > > > > const char *part) > > > > > > +_entrance_gui_user_content_get(void *data EINA_UNUSED, > Evas_Object > > > > *obj, > > > > > > const char *part) > > > > > > { > > > > > > Evas_Object *ic = NULL; > > > > > > - Entrance_User_Event *eu; > > > > > > + Entrance_Login *eu; > > > > > > eu = data; > > > > > > > > > > > > if (eu && !strcmp(part, "elm.swallow.icon")) > > > > > > @@ -798,13 +810,13 @@ _entrance_gui_user_content_get(void *data > > > > > > __UNUSED__, Evas_Object *obj, const ch > > > > > > } > > > > > > > > > > > > static Eina_Bool > > > > > > -_entrance_gui_user_state_get(void *data __UNUSED__, Evas_Object > *obj > > > > > > __UNUSED__, const char *part __UNUSED__) > > > > > > +_entrance_gui_user_state_get(void *data EINA_UNUSED, Evas_Object > > > *obj > > > > > > EINA_UNUSED, const char *part EINA_UNUSED) > > > > > > { > > > > > > return EINA_FALSE; > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_user_del(void *data __UNUSED__, Evas_Object *obj > > > > > __UNUSED__) > > > > > > +_entrance_gui_user_del(void *data EINA_UNUSED, Evas_Object *obj > > > > > > EINA_UNUSED) > > > > > > { > > > > > > } > > > > > > > > > > > > @@ -813,7 +825,7 @@ _entrance_gui_user_del(void *data __UNUSED__, > > > > > > Evas_Object *obj __UNUSED__) > > > > > > /////////////////////////////////////////////////// > > > > > > > > > > > > static char * > > > > > > -_entrance_gui_action_text_get(void *data, Evas_Object *obj > > > __UNUSED__, > > > > > > const char *part __UNUSED__) > > > > > > +_entrance_gui_action_text_get(void *data, Evas_Object *obj > > > > EINA_UNUSED, > > > > > > const char *part EINA_UNUSED) > > > > > > { > > > > > > Entrance_Action *ea; > > > > > > ea = data; > > > > > > @@ -821,7 +833,7 @@ _entrance_gui_action_text_get(void *data, > > > > Evas_Object > > > > > > *obj __UNUSED__, const cha > > > > > > } > > > > > > > > > > > > static void > > > > > > -_entrance_gui_action_clicked_cb(void *data, Evas_Object *obj > > > > __UNUSED__, > > > > > > void *event_info __UNUSED__) > > > > > > +_entrance_gui_action_clicked_cb(void *data, Evas_Object *obj > > > > > EINA_UNUSED, > > > > > > void *event_info EINA_UNUSED) > > > > > > { > > > > > > Entrance_Action *ea; > > > > > > ea = data; > > > > > > @@ -841,7 +853,7 @@ _entrance_gui_actions_populate() > > > > > > ef = entrance_fill_new(NULL, > _entrance_gui_action_text_get, > > > > > > NULL, NULL, NULL); > > > > > > o = ENTRANCE_GUI_GET(screen->edj, "entrance.actions"); > > > > > > - entrance_fill(o, ef, _gui->actions, > > > > > > + entrance_fill(o, ef, _gui->actions, NULL, > > > > > > _entrance_gui_action_clicked_cb, screen); > > > > > > > edje_object_signal_emit(elm_layout_edje_get(screen->edj), > > > > > > "entrance,action,enabled", ""); > > > > > > @@ -850,7 +862,7 @@ _entrance_gui_actions_populate() > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > //////////////////////////////////////////////////////////////////////////////// > > > > > > static void > > > > > > -_entrance_gui_auth_cb(void *data, Eina_Bool granted) > > > > > > +_entrance_gui_auth_cb(void *data, const char *user EINA_UNUSED, > > > > > Eina_Bool > > > > > > granted) > > > > > > { > > > > > > Eina_List *l; > > > > > > Entrance_Screen *screen; > > > > > > diff --git a/src/bin/entrance_gui.h b/src/bin/entrance_gui.h > > > > > > index 8631bbc..4b2eb6d 100644 > > > > > > --- a/src/bin/entrance_gui.h > > > > > > +++ b/src/bin/entrance_gui.h > > > > > > @@ -20,6 +20,7 @@ void entrance_gui_conf_set(const > > > > > Entrance_Conf_Gui_Event > > > > > > *conf); > > > > > > Eina_List *entrance_gui_stringlist_get(const char *name); > > > > > > void entrance_gui_stringlist_free(Eina_List *list); > > > > > > const char *entrance_gui_theme_name_get(void); > > > > > > +void entrance_gui_theme_name_set(const char *theme); > > > > > > void entrance_gui_background_get(const char **path, const char > > > > **group); > > > > > > Eina_Bool entrance_gui_vkbd_enabled_get(void); > > > > > > const char *entrance_gui_theme_path_get(void); > > > > > > diff --git a/src/bin/entrance_login.c b/src/bin/entrance_login.c > > > > > > index 40a36c6..0fc9940 100644 > > > > > > --- a/src/bin/entrance_login.c > > > > > > +++ b/src/bin/entrance_login.c > > > > > > @@ -2,7 +2,7 @@ > > > > > > > > > > > > #define ENTRANCE_PASSWD_LEN 256 > > > > > > > > > > > > -typedef struct Entrance_Login_ Entrance_Login; > > > > > > +typedef struct Entrance_Gui_Login_ Entrance_Gui_Login; > > > > > > > > > > > > static void _login_reset(Evas_Object *widget); > > > > > > static void _login_backspace(Evas_Object *widget); > > > > > > @@ -19,11 +19,11 @@ static void _login_password_focused_cb(void > > > *data, > > > > > > Evas_Object *obj, void *event > > > > > > static void _login_password_unfocused_cb(void *data, Evas_Object > > > *obj, > > > > > > void *event); > > > > > > static void _login_login_activated_cb(void *data, Evas_Object > *obj, > > > > void > > > > > > *event); > > > > > > static char *_login_xsession_text_get(void *data, Evas_Object > *obj, > > > > > const > > > > > > char *part); > > > > > > -static void _login_auth_cb(void *data, Eina_Bool granted); > > > > > > +static void _login_auth_cb(void *data, const char *user, > Eina_Bool > > > > > > granted); > > > > > > > > > > > > static Entrance_Fill *_login_fill; > > > > > > > > > > > > -struct Entrance_Login_ > > > > > > +struct Entrance_Gui_Login_ > > > > > > { > > > > > > Ecore_Event_Handler *handler; > > > > > > char passwd[ENTRANCE_PASSWD_LEN]; > > > > > > @@ -41,7 +41,7 @@ struct Entrance_Login_ > > > > > > }; > > > > > > > > > > > > #define LOGIN_GET(widget) \ > > > > > > - Entrance_Login *login; \ > > > > > > + Entrance_Gui_Login *login; \ > > > > > > login = evas_object_data_get(widget, "entrance"); \ > > > > > > if (!login) return > > > > > > > > > > > > @@ -146,11 +146,13 @@ _login_password_catch(Evas_Object *widget, > > > > > Eina_Bool > > > > > > catch) > > > > > > { > > > > > > if (catch) > > > > > > { > > > > > > + PT("catch password\n"); > > > > > > login->handler = ecore_event_handler_add( > > > > > > ECORE_EVENT_KEY_DOWN, _login_key_down_cb, > widget); > > > > > > } > > > > > > else > > > > > > { > > > > > > + PT("uncatch password\n"); > > > > > > ecore_event_handler_del(login->handler); > > > > > > login->handler = NULL; > > > > > > } > > > > > > @@ -166,11 +168,10 @@ _login_key_down_cb(void *data, int type > > > > > EINA_UNUSED, > > > > > > void *event) > > > > > > ev = event; > > > > > > > > > > > > > > > > > > - elm_object_signal_emit(data, > > > > > > - "entrance,auth,changed", ""); > > > > > > - elm_object_signal_emit(elm_object_part_content_get(data, > > > > > > - > > > > > > "entrance.password"), > > > > > > - "entrance,auth,changed", ""); > > > > > > + elm_object_signal_emit(data, "entrance,auth,changed", ""); > > > > > > + elm_object_signal_emit( > > > > > > + elm_object_part_content_get(data, "entrance.password"), > > > > > > + "entrance,auth,changed", ""); > > > > > > > > > > > > if (!strcmp(ev->key, "KP_Enter")) > > > > > > { > > > > > > @@ -199,12 +200,19 @@ _login_key_down_cb(void *data, int type > > > > > EINA_UNUSED, > > > > > > void *event) > > > > > > else > > > > > > _login_delete(data); > > > > > > } > > > > > > - else if (!strcmp(ev->key, "Tab")) > > > > > > + else if ((!strcmp(ev->key, "Tab")) > > > > > > + || (!strcmp(ev->key, "ISO_Left_Tab"))) > > > > > > { > > > > > > if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) > > > > > > - elm_object_focus_next(data, ELM_FOCUS_PREVIOUS); > > > > > > + { > > > > > > + PT("focus previous\n"); > > > > > > + elm_object_focus_next(data, ELM_FOCUS_PREVIOUS); > > > > > > + } > > > > > > else > > > > > > - elm_object_focus_next(data, ELM_FOCUS_NEXT); > > > > > > + { > > > > > > + PT("focus next\n"); > > > > > > + elm_object_focus_next(data, ELM_FOCUS_NEXT); > > > > > > + } > > > > > > } > > > > > > else if ((!strcmp(ev->key, "u")) > > > > > > && (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL)) > > > > > > @@ -302,13 +310,13 @@ _login_xsession_clicked_cb(void *data, > > > > Evas_Object > > > > > > *obj EINA_UNUSED, void *event > > > > > > } > > > > > > > > > > > > static void > > > > > > -_login_auth_cb(void *data, Eina_Bool granted) > > > > > > +_login_auth_cb(void *data, const char *user, Eina_Bool granted) > > > > > > { > > > > > > LOGIN_GET(data); > > > > > > if (login->wait) > > > > > > { > > > > > > if (login->func.login) > > > > > > - login->func.login(login->func.data, granted); > > > > > > + login->func.login(login->func.data, user, granted); > > > > > > login->wait = EINA_FALSE; > > > > > > entrance_connect_auth_cb_del(login->auth); > > > > > > login->auth = NULL; > > > > > > @@ -360,10 +368,10 @@ Evas_Object * > > > > > > entrance_login_add(Evas_Object *obj, Entrance_Login_Cb login_cb, > > > void > > > > > > *data) > > > > > > { > > > > > > Evas_Object *o, *h, *p; > > > > > > - Entrance_Login *login; > > > > > > + Entrance_Gui_Login *login; > > > > > > > > > > > > /* layout */ > > > > > > - login = calloc(1, sizeof(Entrance_Login)); > > > > > > + login = calloc(1, sizeof(Entrance_Gui_Login)); > > > > > > login->func.login = login_cb; > > > > > > login->func.data = data; > > > > > > o = entrance_gui_theme_get(obj, "entrance/login"); > > > > > > @@ -409,7 +417,7 @@ entrance_login_xsessions_populate(Evas_Object > > > > > *widget, > > > > > > Eina_List *xsessions) > > > > > > LOGIN_GET(widget); > > > > > > > > > > > > o = elm_object_part_content_get(widget, > "entrance.xsessions"); > > > > > > - entrance_fill(o, _login_fill, xsessions, > > > > > > + entrance_fill(o, _login_fill, xsessions, NULL, > > > > > > _login_xsession_clicked_cb, widget); > > > > > > login->session = eina_list_data_get(xsessions); > > > > > > _login_xsession_update(widget); > > > > > > @@ -454,9 +462,17 @@ entrance_login_session_set(Evas_Object > *widget, > > > > > const > > > > > > char *name) > > > > > > void > > > > > > entrance_login_open_session_set(Evas_Object *widget, Eina_Bool > > > > > > open_session) > > > > > > { > > > > > > + Evas_Object *o; > > > > > > LOGIN_GET(widget); > > > > > > open_session = !!open_session; > > > > > > if (login->open_session != open_session) > > > > > > - login->open_session = open_session; > > > > > > + { > > > > > > + login->open_session = open_session; > > > > > > + o = elm_object_part_content_get(widget, > > > "entrance.xsessions"); > > > > > > + if (login->open_session) > > > > > > + evas_object_show(o); > > > > > > + else > > > > > > + evas_object_hide(o); > > > > > > + } > > > > > > } > > > > > > > > > > > > diff --git a/src/bin/entrance_login.h b/src/bin/entrance_login.h > > > > > > index d3c2d80..ea9932d 100644 > > > > > > --- a/... [truncated message content] |