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 :) SVN revision: 20808
This commit is contained in:
parent
6491c0bad9
commit
62ca6a2cbc
|
@ -1,213 +1,210 @@
|
|||
images {
|
||||
image, "e17_entry_cursor.png" COMP;
|
||||
image, "e17_brushed.png" COMP;
|
||||
image, "e17_logo.png" COMP;
|
||||
image, "e17_gadman_overlay.png" COMP;
|
||||
image: "e17_brushed.png" COMP;
|
||||
image: "e17_"SM"reflection_shadow_overlay.png" LOSSY 90;
|
||||
image: "e17_entry_cursor.png" COMP;
|
||||
image: "e17_logo.png" COMP;
|
||||
image: "e17_gadman_overlay.png" COMP;
|
||||
}
|
||||
|
||||
group
|
||||
{
|
||||
name, "widgets/desklock/main";
|
||||
min, 640 480;
|
||||
|
||||
parts
|
||||
{
|
||||
part
|
||||
{
|
||||
name, "background";
|
||||
type, IMAGE;
|
||||
mouse_events, 0;
|
||||
|
||||
description
|
||||
{
|
||||
state, "default" 0.0;
|
||||
|
||||
rel1
|
||||
{
|
||||
relative, 0.0 0.0;
|
||||
offset, 0 0;
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative, 1.0 1.0;
|
||||
offset, -1 -1;
|
||||
}
|
||||
image
|
||||
{
|
||||
normal, "e17_brushed.png";
|
||||
}
|
||||
group {
|
||||
name, "widgets/desklock/main";
|
||||
parts
|
||||
{
|
||||
part {
|
||||
name: "background_image";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
image {
|
||||
normal: "e17_brushed.png";
|
||||
}
|
||||
fill {
|
||||
size {
|
||||
relative: 0 0;
|
||||
offset: 400 300;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name: "logo";
|
||||
mouse_events, 0;
|
||||
description
|
||||
{
|
||||
state, "default" 0.0;
|
||||
min, 64 64;
|
||||
max, 64 64;
|
||||
//align, 0.5 0.0;
|
||||
rel1
|
||||
{
|
||||
relative, 0.45 0.5;
|
||||
offset, 0 0;
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative, 0.45 0.5;
|
||||
offset, 0 0;
|
||||
}
|
||||
image
|
||||
{
|
||||
normal, "e17_logo.png";
|
||||
}
|
||||
part {
|
||||
name: "reflection_shadow_overlay";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
image {
|
||||
normal: "e17_"SM"reflection_shadow_overlay.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name: "text_label1";
|
||||
type: TEXT;
|
||||
effect: SHADOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 0 0 0 255;
|
||||
fixed: 0 1;
|
||||
align: 0.0 0.5;
|
||||
rel1
|
||||
part
|
||||
{
|
||||
relative, 1.0 0.0;
|
||||
offset, 20 0;
|
||||
to, "logo";
|
||||
name: "logo";
|
||||
mouse_events: 0;
|
||||
description
|
||||
{
|
||||
state: "default" 0.0;
|
||||
min: 64 64;
|
||||
max: 64 64;
|
||||
//align: 0.5 0.0;
|
||||
rel1
|
||||
{
|
||||
relative: 0.45 0.5;
|
||||
offset: 0 0;
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative: 0.45 0.5;
|
||||
offset: 0 0;
|
||||
}
|
||||
image
|
||||
{
|
||||
normal: "e17_logo.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
rel2
|
||||
part
|
||||
{
|
||||
relative, 1.0 0.3;
|
||||
offset, 0 0;
|
||||
to, "logo";
|
||||
name: "label";
|
||||
type: TEXT;
|
||||
effect: SHADOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 0 0 0 255;
|
||||
fixed: 0 1;
|
||||
align: 0.0 0.5;
|
||||
rel1
|
||||
{
|
||||
relative: 1.0 0.0;
|
||||
offset: 20 0;
|
||||
to: "logo";
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative: 1.0 0.3;
|
||||
offset: 0 0;
|
||||
to: "logo";
|
||||
}
|
||||
|
||||
color: 0 0 0 255;
|
||||
color3: 255 255 255 128;
|
||||
text {
|
||||
text: "Please enter your unlock password";
|
||||
font: "Edje-Vera-Bold";
|
||||
size: 10;
|
||||
align: 0.0 0.5;
|
||||
min: 1 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
color: 0 0 0 255;
|
||||
color3: 255 255 255 128;
|
||||
text {
|
||||
text: "Please enter your password to unlock:";
|
||||
font: "Edje-Vera-Bold";
|
||||
size: 10;
|
||||
align: 0.0 0.5;
|
||||
min: 1 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name, "passwd_border";
|
||||
mouse_events, 0;
|
||||
description
|
||||
{
|
||||
state, "default" 0.0;
|
||||
rel1
|
||||
part
|
||||
{
|
||||
relative, 1.0 0.3;
|
||||
offset, 0 0;
|
||||
to, "logo";
|
||||
name: "passwd_entry_clip";
|
||||
type: RECT;
|
||||
mouse_events: 0;
|
||||
description
|
||||
{
|
||||
state: "default" 0.0;
|
||||
visible: 1;
|
||||
rel1
|
||||
{
|
||||
relative: 0.0 0.0;
|
||||
offset: 10 10;
|
||||
to: "passwd_border";
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative: 1.0 1.0;
|
||||
offset: -17 -10;
|
||||
to: "passwd_border";
|
||||
}
|
||||
}
|
||||
}
|
||||
rel2
|
||||
part
|
||||
{
|
||||
relative, 5.0 0.9;
|
||||
offset, 0 0;
|
||||
to, "logo";
|
||||
name: "passwd";
|
||||
type: TEXT;
|
||||
effect: SHADOW;
|
||||
clip_to: "passwd_entry_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 0 0 0 255;
|
||||
fixed: 0 1;
|
||||
align: 0.0 0.5;
|
||||
|
||||
rel1
|
||||
{
|
||||
relative: 0.0 0.0;
|
||||
offset: 0 0;
|
||||
to: "passwd_entry_clip";
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative: 0.0 1.0;
|
||||
offset: 0 0;
|
||||
to: "passwd_entry_clip";
|
||||
}
|
||||
|
||||
color: 0 0 0 255;
|
||||
color3: 255 255 255 128;
|
||||
text {
|
||||
text: "****";
|
||||
font: "Edje-Vera-Bold";
|
||||
size: 16;
|
||||
align: 0.0 0.5;
|
||||
min: 1 1;
|
||||
text_class: "desklock_passwd";
|
||||
}
|
||||
}
|
||||
}
|
||||
image
|
||||
part
|
||||
{
|
||||
normal, "e17_gadman_overlay.png";
|
||||
name: "cursor";
|
||||
mouse_events: 0;
|
||||
clip_to: "passwd_entry_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
min: 16 16;
|
||||
max: 16 16;
|
||||
align: 0.0 0.5;
|
||||
fixed: 1 1;
|
||||
rel1 {
|
||||
relative: 1.0 0.0;
|
||||
offset: 0 -2;
|
||||
to: "passwd";
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 0.9;
|
||||
offset: 0 0;
|
||||
to: "passwd";
|
||||
}
|
||||
image {
|
||||
normal: "e17_entry_cursor.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name, "passwd_entry_clip";
|
||||
type, RECT;
|
||||
mouse_events, 0;
|
||||
description
|
||||
{
|
||||
state, "default" 0.0;
|
||||
visible, 1;
|
||||
rel1
|
||||
part
|
||||
{
|
||||
relative, 0.0 0.0;
|
||||
offset, 10 10;
|
||||
to, "passwd_border";
|
||||
name: "passwd_border";
|
||||
mouse_events: 0;
|
||||
description
|
||||
{
|
||||
state: "default" 0.0;
|
||||
rel1
|
||||
{
|
||||
relative: 1.0 0.3;
|
||||
offset: 0 0;
|
||||
to: "logo";
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative: 5.0 0.9;
|
||||
offset: 0 0;
|
||||
to: "logo";
|
||||
}
|
||||
image
|
||||
{
|
||||
normal: "e17_gadman_overlay.png";
|
||||
border: 15 15 15 15;
|
||||
}
|
||||
}
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative, 1.0 1.0;
|
||||
offset, -17 -10;
|
||||
to, "passwd_border";
|
||||
}
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name, "passwd";
|
||||
type, TEXT;
|
||||
effect, SOFT_SHADOW;
|
||||
clip_to, "passwd_entry_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 0 0 0 255;
|
||||
fixed: 0 1;
|
||||
align: 0.0 0.5;
|
||||
|
||||
rel1
|
||||
{
|
||||
relative, 0.0 0.0;
|
||||
offset, 0 0;
|
||||
to, "passwd_entry_clip";
|
||||
}
|
||||
rel2
|
||||
{
|
||||
relative, 0.0 1.0;
|
||||
offset, 0 0;
|
||||
to, "passwd_entry_clip";
|
||||
}
|
||||
|
||||
color: 0 0 0 255;
|
||||
color3: 255 255 255 128;
|
||||
text {
|
||||
text: "****";
|
||||
font: "Edje-Vera-Bold";
|
||||
size: 16;
|
||||
align: 0.0 0.5;
|
||||
min: 1 1;
|
||||
text_class: "desklock_passwd";
|
||||
}
|
||||
}
|
||||
}
|
||||
part
|
||||
{
|
||||
name, "cursor";
|
||||
mouse_events, 0;
|
||||
clip_to, "passwd_entry_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
min: 16 16;
|
||||
max: 16 16;
|
||||
align: 0.0 0.5;
|
||||
fixed: 1 1;
|
||||
rel1 {
|
||||
relative: 1.0 0.0;
|
||||
offset: 0 -2;
|
||||
to: "passwd";
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 0.9;
|
||||
offset: 0 0;
|
||||
to: "passwd";
|
||||
}
|
||||
image {
|
||||
normal: "e17_entry_cursor.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,5 +86,56 @@ group {
|
|||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "drag";
|
||||
mouse_events: 1;
|
||||
type: RECT;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 2 2;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 0.0;
|
||||
offset: -3 5;
|
||||
}
|
||||
color: 255 0 0 100;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "resize_l";
|
||||
mouse_events: 1;
|
||||
type: RECT;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 2 6;
|
||||
}
|
||||
rel2 {
|
||||
relative: 0.0 1.0;
|
||||
offset: 5 -7;
|
||||
}
|
||||
color: 0 0 255 100;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "resize_r";
|
||||
mouse_events: 1;
|
||||
type: RECT;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 1.0 0.0;
|
||||
offset: -6 6;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -3 -7;
|
||||
}
|
||||
color: 0 0 255 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 @@ static void _e_desklock_delete();
|
|||
EAPI int
|
||||
e_desklock_show(void)
|
||||
{
|
||||
Evas_List *managers, *l, *l2, *l3;
|
||||
//E_Zone *zone = NULL;
|
||||
int m = 0, c = 0, z = 0;
|
||||
Evas_List *managers, *l, *l2, *l3;
|
||||
int m = 0, c = 0, z = 0;
|
||||
E_Desklock_Popup_Data *edp;
|
||||
|
||||
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;
|
||||
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 @@ e_desklock_init(void)
|
|||
//#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 @@ _e_desklock_backspace()
|
|||
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()
|
||||
{
|
||||
|
|
|
@ -25,6 +25,8 @@ static void _e_int_menus_main_del_hook (void *obj);
|
|||
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 @@ _e_int_menus_main_run(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
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_int_menus_desktops_pre_cb(void *data, E_Menu *m)
|
|||
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))
|
||||
{
|
||||
|
|
|
@ -9,6 +9,13 @@ static void _e_shelf_config_port(E_Config_Shelf_Config *cf1, E_Config_Shelf_Conf
|
|||
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 @@ e_shelf_zone_new(E_Zone *zone, char *name, char *style, int popup, int layer)
|
|||
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);
|
||||
|
|
Loading…
Reference in New Issue