Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_desklock.c e_int_menus.c e_shelf.c Log Message: de-uglify desklock gfx - make it ask for your passowrd if you havent set one up (config dialog instead of lock) and make it a menu item for obvious access :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desklock.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_desklock.c 26 Feb 2006 21:42:19 -0000 1.4 +++ e_desklock.c 27 Feb 2006 06:35:56 -0000 1.5 @@ -1,27 +1,24 @@ - #include "e.h" #define ELOCK_POPUP_LAYER 10000 - #define PASSWD_LEN 256 - /**************************** private data ******************************/ typedef struct _E_Desklock_Data E_Desklock_Data; typedef struct _E_Desklock_Popup_Data E_Desklock_Popup_Data; struct _E_Desklock_Popup_Data { - E_Popup *popup_wnd; - Evas_Object *bg_object; + E_Popup *popup_wnd; + Evas_Object *bg_object; }; struct _E_Desklock_Data { - Evas_List *elock_wnd_list; - Ecore_X_Window elock_wnd; - Evas_List *handlers; - char passwd[PASSWD_LEN]; + Evas_List *elock_wnd_list; + Ecore_X_Window elock_wnd; + Evas_List *handlers; + char passwd[PASSWD_LEN]; }; static E_Desklock_Data *edd = NULL; @@ -41,211 +38,228 @@ EAPI int e_desklock_show(void) { - Evas_List *managers, *l, *l2, *l3; - //E_Zone *zone = NULL; - int m = 0, c = 0, z = 0; - - E_Desklock_Popup_Data *edp; - - if (!edd) - { - edd = E_NEW(E_Desklock_Data, 1); - if (!edd) return 0; - edd->elock_wnd_list = NULL; - edd->elock_wnd = 0; - edd->handlers = NULL; - edd->passwd[0] = 0; - } - - managers = e_manager_list(); - for (l = managers; l; l = l->next) - { - E_Manager *man; - m ++; - - man = l->data; - for (l2 = man->containers; l2; l2 = l2->next) - { - E_Container *con; - - c ++; - - con = l2->data; - for (l3 = con->zones; l3; l3 = l3->next) - { - E_Zone *zone; - - zone = l3->data; - if (!edd->elock_wnd) - { - edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1); - ecore_x_window_show(edd->elock_wnd); - e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd); - } - - edp = E_NEW(E_Desklock_Popup_Data, 1); - if (edp) - { - edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h); - evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000, - ecore_x_current_time_get(), NULL); - - e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER); - - evas_event_freeze(edp->popup_wnd->evas); - edp->bg_object = edje_object_add(edp->popup_wnd->evas); - //FIXME: This should come from config file - e_theme_edje_object_set(edp->bg_object, "base/theme/desklock", - "widgets/desklock/main"); - - evas_object_move(edp->bg_object, 0, 0); - evas_object_resize(edp->bg_object, zone->w, zone->h); - evas_object_show(edp->bg_object); - e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object); - evas_event_thaw(edp->popup_wnd->evas); - - e_popup_show(edp->popup_wnd); - - edd->elock_wnd_list = evas_list_append(edd->elock_wnd_list, edp); - } - } - } - } - - /* handlers */ - edd->handlers = evas_list_append(edd->handlers, - ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, - _e_desklock_cb_key_down, NULL)); - edd->handlers = evas_list_append(edd->handlers, - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, - _e_desklock_cb_mouse_down, NULL)); - edd->handlers = evas_list_append(edd->handlers, - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, - _e_desklock_cb_mouse_up, NULL)); - edd->handlers = evas_list_append(edd->handlers, - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_WHEEL, - _e_desklock_cb_mouse_wheel, - NULL)); - //elock_wnd_idler = ecore_idler_add(_e_desklock_idler, NULL); - - _e_desklock_passwd_update(); - return 1; + Evas_List *managers, *l, *l2, *l3; + int m = 0, c = 0, z = 0; + E_Desklock_Popup_Data *edp; + + if (!e_config->desklock_personal_passwd) + { + E_Zone *zone; + + zone = e_util_zone_current_get(e_manager_current_get()); + if (zone) + { + E_Config_Dialog *cfd; + + cfd = e_int_config_desklock(zone->container); + } + return 0; + } + + if (!edd) + { + edd = E_NEW(E_Desklock_Data, 1); + if (!edd) return 0; + edd->elock_wnd_list = NULL; + edd->elock_wnd = 0; + edd->handlers = NULL; + edd->passwd[0] = 0; + } + + managers = e_manager_list(); + for (l = managers; l; l = l->next) + { + E_Manager *man; + + m++; + man = l->data; + for (l2 = man->containers; l2; l2 = l2->next) + { + E_Container *con; + + c++; + + con = l2->data; + for (l3 = con->zones; l3; l3 = l3->next) + { + E_Zone *zone; + + zone = l3->data; + if (!edd->elock_wnd) + { + edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1); + ecore_x_window_show(edd->elock_wnd); + e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd); + } + + edp = E_NEW(E_Desklock_Popup_Data, 1); + if (edp) + { + edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h); + evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000, + ecore_x_current_time_get(), NULL); + + e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER); + + evas_event_freeze(edp->popup_wnd->evas); + edp->bg_object = edje_object_add(edp->popup_wnd->evas); + //FIXME: This should come from config file + e_theme_edje_object_set(edp->bg_object, + "base/theme/desklock", + "widgets/desklock/main"); + + evas_object_move(edp->bg_object, 0, 0); + evas_object_resize(edp->bg_object, zone->w, zone->h); + evas_object_show(edp->bg_object); + edje_object_part_text_set(edp->bg_object, "title", + _("Please enter your unlock password")); + + e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object); + evas_event_thaw(edp->popup_wnd->evas); + + e_popup_show(edp->popup_wnd); + + edd->elock_wnd_list = evas_list_append(edd->elock_wnd_list, edp); + } + } + } + } + + /* handlers */ + edd->handlers = evas_list_append(edd->handlers, + ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, + _e_desklock_cb_key_down, NULL)); + edd->handlers = evas_list_append(edd->handlers, + ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, + _e_desklock_cb_mouse_down, NULL)); + edd->handlers = evas_list_append(edd->handlers, + ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, + _e_desklock_cb_mouse_up, NULL)); + edd->handlers = evas_list_append(edd->handlers, + ecore_event_handler_add(ECORE_X_EVENT_MOUSE_WHEEL, + _e_desklock_cb_mouse_wheel, + NULL)); + //elock_wnd_idler = ecore_idler_add(_e_desklock_idler, NULL); + + _e_desklock_passwd_update(); + return 1; } EAPI void e_desklock_hide(void) { - E_Desklock_Popup_Data *edp; - - if (!edd) return; - - while (edd->elock_wnd_list) - { - edp = edd->elock_wnd_list->data; - if (edp) - { - e_popup_hide(edp->popup_wnd); - - evas_event_freeze(edp->popup_wnd->evas); - evas_object_del(edp->bg_object); - evas_event_thaw(edp->popup_wnd->evas); - - e_object_del(E_OBJECT(edp->popup_wnd)); - E_FREE(edp); - } - edd->elock_wnd_list = evas_list_remove_list(edd->elock_wnd_list, edd->elock_wnd_list); - } - - while (edd->handlers) - { - ecore_event_handler_del(edd->handlers->data); - edd->handlers = evas_list_remove_list(edd->handlers, edd->handlers); - } - - e_grabinput_release(edd->elock_wnd, edd->elock_wnd); - ecore_x_window_del(edd->elock_wnd); - - E_FREE(edd); - edd = NULL; + E_Desklock_Popup_Data *edp; + + if (!edd) return; + + while (edd->elock_wnd_list) + { + edp = edd->elock_wnd_list->data; + if (edp) + { + e_popup_hide(edp->popup_wnd); + + evas_event_freeze(edp->popup_wnd->evas); + evas_object_del(edp->bg_object); + evas_event_thaw(edp->popup_wnd->evas); + + e_object_del(E_OBJECT(edp->popup_wnd)); + E_FREE(edp); + } + edd->elock_wnd_list = evas_list_remove_list(edd->elock_wnd_list, edd->elock_wnd_list); + } + + while (edd->handlers) + { + ecore_event_handler_del(edd->handlers->data); + edd->handlers = evas_list_remove_list(edd->handlers, edd->handlers); + } + + e_grabinput_release(edd->elock_wnd, edd->elock_wnd); + ecore_x_window_del(edd->elock_wnd); + + E_FREE(edd); + edd = NULL; } static int _e_desklock_cb_key_down(void *data, int type, void *event) { - Ecore_X_Event_Key_Down *ev; - - ev = event; - if (ev->win != edd->elock_wnd) return 1; - - if (!strcmp(ev->keysymbol, "Escape")) + Ecore_X_Event_Key_Down *ev; + + ev = event; + if (ev->win != edd->elock_wnd) return 1; + + if (!strcmp(ev->keysymbol, "Escape")) ; - else if (!strcmp(ev->keysymbol, "KP_Enter")) - { - // here we have to go to auth - if (strcmp(edd->passwd, e_config->desklock_personal_passwd) == 0) - { - e_desklock_hide(); - return 1; - } - else - ; // report about invalid password - - memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); - _e_desklock_passwd_update(); - } - else if (!strcmp(ev->keysymbol, "Return")) - { - // here we have to go to auth - if (strcmp(edd->passwd, e_config->desklock_personal_passwd) == 0) - { - e_desklock_hide(); - return 1; - } - else - ; // report about invalid password - - memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); - _e_desklock_passwd_update(); - } - else if (!strcmp(ev->keysymbol, "BackSpace")) - _e_desklock_backspace(); - else if (!strcmp(ev->keysymbol, "Delete")) - _e_desklock_delete(); - else - { - // here we have to grab a password - if (ev->key_compose) - { - if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->key_compose)))) - { - strcat(edd->passwd, ev->key_compose); - _e_desklock_passwd_update(); - } - } - } - - return 1; + else if (!strcmp(ev->keysymbol, "KP_Enter")) + { + // here we have to go to auth + if (!strcmp(edd->passwd, e_config->desklock_personal_passwd)) + { + e_desklock_hide(); + return 1; + } + else + ; // report about invalid password + + memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); + _e_desklock_passwd_update(); + } + else if (!strcmp(ev->keysymbol, "Return")) + { + // here we have to go to auth + if ((e_config->desklock_personal_passwd) && + (!strcmp(edd->passwd, e_config->desklock_personal_passwd))) + { + e_desklock_hide(); + return 1; + } + else + ; // report about invalid password + + memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); + _e_desklock_passwd_update(); + } + else if (!strcmp(ev->keysymbol, "BackSpace")) + _e_desklock_backspace(); + else if (!strcmp(ev->keysymbol, "Delete")) + _e_desklock_delete(); + else + { + // here we have to grab a password + if (ev->key_compose) + { + if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->key_compose)))) + { + strcat(edd->passwd, ev->key_compose); + _e_desklock_passwd_update(); + } + } + } + + return 1; } static int _e_desklock_cb_mouse_down(void *data, int type, void *event) { - return 1; + return 1; } static int _e_desklock_cb_mouse_up(void *data, int type, void *event) { - return 1; + return 1; } static int _e_desklock_cb_mouse_wheel(void *data, int type, void *event) { - return 1; + return 1; } static int _e_desklock_idler(void *data) { - return 1; + return 1; } EAPI int @@ -261,38 +275,37 @@ //#undef T //#undef D - return 1; + return 1; } EAPI int e_desklock_shutdown(void) { - e_desklock_hide(); - return 1; + e_desklock_hide(); + return 1; } static void _e_desklock_passwd_update() { - int ii; - char passwd_hidden[PASSWD_LEN * 3]=""; - E_Desklock_Popup_Data *edp; - Evas_List *l; - - if (!edd) return; - - for (ii = 0; ii < strlen(edd->passwd); ii ++) - { - passwd_hidden[ii] = '*'; - passwd_hidden[ii+1] = 0; - } - - for (l = edd->elock_wnd_list; l; l = l->next) - { - edp = l->data; - edje_object_part_text_set(edp->bg_object, "passwd", passwd_hidden); - } - return; + int ii; + char passwd_hidden[PASSWD_LEN * 3]=""; + E_Desklock_Popup_Data *edp; + Evas_List *l; + + if (!edd) return; + + for (ii = 0; ii < strlen(edd->passwd); ii ++) + { + passwd_hidden[ii] = '*'; + passwd_hidden[ii+1] = 0; + } + + for (l = edd->elock_wnd_list; l; l = l->next) + { + edp = l->data; + edje_object_part_text_set(edp->bg_object, "passwd", passwd_hidden); + } } static void @@ -301,18 +314,19 @@ int len, val, pos; if (!edd) return; - - len = strlen(edd->passwd); - if (len > 0) - { - pos = evas_string_char_prev_get(edd->passwd, len, &val); - if ((pos < len) && (pos >= 0)) - { - edd->passwd[pos] = 0; - _e_desklock_passwd_update(); - } - } + + len = strlen(edd->passwd); + if (len > 0) + { + pos = evas_string_char_prev_get(edd->passwd, len, &val); + if ((pos < len) && (pos >= 0)) + { + edd->passwd[pos] = 0; + _e_desklock_passwd_update(); + } + } } + static void _e_desklock_delete() { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.132 retrieving revision 1.133 diff -u -3 -r1.132 -r1.133 --- e_int_menus.c 10 Feb 2006 08:14:57 -0000 1.132 +++ e_int_menus.c 27 Feb 2006 06:35:56 -0000 1.133 @@ -25,6 +25,8 @@ static void _e_int_menus_main_about (void *data, E_Menu *m, E_Menu_Item *mi); static int _e_int_menus_main_run_defer_cb (void *data); static void _e_int_menus_main_run (void *data, E_Menu *m, E_Menu_Item*mi); +static int _e_int_menus_main_lock_defer_cb (void *data); +static void _e_int_menus_main_lock (void *data, E_Menu *m, E_Menu_Item*mi); static void _e_int_menus_main_restart (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_main_exit (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_apps_scan (E_Menu *m); @@ -401,6 +403,22 @@ ecore_idle_enterer_add(_e_int_menus_main_run_defer_cb, m->zone); } +/* FIXME: this is a workaround for menus' haveing a key grab ANd exebuf + * wanting one too + */ +static int +_e_int_menus_main_lock_defer_cb(void *data) +{ + e_desklock_show(); + return 0; +} + +static void +_e_int_menus_main_lock(void *data, E_Menu *m, E_Menu_Item *mi) +{ + ecore_idle_enterer_add(_e_int_menus_main_lock_defer_cb, m->zone); +} + static void _e_int_menus_main_fm(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -540,6 +558,15 @@ E_Menu *root; e_menu_pre_activate_callback_set(m, NULL, NULL); + + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Lock Screen")); + e_util_menu_item_edje_icon_set(mi, "enlightenment/lock"); + e_menu_item_callback_set(mi, _e_int_menus_main_lock, NULL); + + mi = e_menu_item_new(m); + e_menu_item_separator_set(mi, 1); + root = e_menu_root_get(m); if ((root) && (root->zone)) { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_shelf.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_shelf.c 16 Feb 2006 09:27:37 -0000 1.6 +++ e_shelf.c 27 Feb 2006 06:35:56 -0000 1.7 @@ -9,6 +9,13 @@ static Evas_List *shelves = NULL; static int shelf_id = 0; +/* FIXME: shelves need to do this: + * 1. allow them to be moved, resized etc. etc. + * 2. have a configuration panel per shelf to select if its inline, layer etc. + * 3. catch all right clicks not on modules for right click context menu + * 4. a global config dialog that lists shelves u have to configure them + */ + /* externally accessible functions */ EAPI int e_shelf_init(void) @@ -131,7 +138,8 @@ snprintf(buf, sizeof(buf), "shelf/%s/base", es->style); evas_object_resize(es->o_base, es->w, es->h); if (!e_theme_edje_object_set(es->o_base, "base/theme/shelf", buf)) - e_theme_edje_object_set(es->o_base, "base/theme/shelf", "shelf/default/base"); + e_theme_edje_object_set(es->o_base, "base/theme/shelf", + "shelf/default/base"); if (es->popup) { evas_object_show(es->o_base); ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs