forked from enlightenment/enlightenment
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 {
|
images {
|
||||||
image, "e17_entry_cursor.png" COMP;
|
image: "e17_brushed.png" COMP;
|
||||||
image, "e17_brushed.png" COMP;
|
image: "e17_"SM"reflection_shadow_overlay.png" LOSSY 90;
|
||||||
image, "e17_logo.png" COMP;
|
image: "e17_entry_cursor.png" COMP;
|
||||||
image, "e17_gadman_overlay.png" COMP;
|
image: "e17_logo.png" COMP;
|
||||||
|
image: "e17_gadman_overlay.png" COMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
group
|
group {
|
||||||
{
|
name, "widgets/desklock/main";
|
||||||
name, "widgets/desklock/main";
|
parts
|
||||||
min, 640 480;
|
{
|
||||||
|
part {
|
||||||
parts
|
name: "background_image";
|
||||||
{
|
description {
|
||||||
part
|
state: "default" 0.0;
|
||||||
{
|
image {
|
||||||
name, "background";
|
normal: "e17_brushed.png";
|
||||||
type, IMAGE;
|
}
|
||||||
mouse_events, 0;
|
fill {
|
||||||
|
size {
|
||||||
description
|
relative: 0 0;
|
||||||
{
|
offset: 400 300;
|
||||||
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";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
part {
|
||||||
part
|
name: "reflection_shadow_overlay";
|
||||||
{
|
description {
|
||||||
name: "logo";
|
state: "default" 0.0;
|
||||||
mouse_events, 0;
|
image {
|
||||||
description
|
normal: "e17_"SM"reflection_shadow_overlay.png";
|
||||||
{
|
}
|
||||||
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
|
||||||
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
|
|
||||||
{
|
{
|
||||||
relative, 1.0 0.0;
|
name: "logo";
|
||||||
offset, 20 0;
|
mouse_events: 0;
|
||||||
to, "logo";
|
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;
|
name: "label";
|
||||||
offset, 0 0;
|
type: TEXT;
|
||||||
to, "logo";
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
part
|
||||||
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
|
|
||||||
{
|
{
|
||||||
relative, 1.0 0.3;
|
name: "passwd_entry_clip";
|
||||||
offset, 0 0;
|
type: RECT;
|
||||||
to, "logo";
|
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;
|
name: "passwd";
|
||||||
offset, 0 0;
|
type: TEXT;
|
||||||
to, "logo";
|
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
|
||||||
}
|
|
||||||
part
|
|
||||||
{
|
|
||||||
name, "passwd_entry_clip";
|
|
||||||
type, RECT;
|
|
||||||
mouse_events, 0;
|
|
||||||
description
|
|
||||||
{
|
|
||||||
state, "default" 0.0;
|
|
||||||
visible, 1;
|
|
||||||
rel1
|
|
||||||
{
|
{
|
||||||
relative, 0.0 0.0;
|
name: "passwd_border";
|
||||||
offset, 10 10;
|
mouse_events: 0;
|
||||||
to, "passwd_border";
|
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"
|
#include "e.h"
|
||||||
|
|
||||||
#define ELOCK_POPUP_LAYER 10000
|
#define ELOCK_POPUP_LAYER 10000
|
||||||
|
|
||||||
#define PASSWD_LEN 256
|
#define PASSWD_LEN 256
|
||||||
|
|
||||||
|
|
||||||
/**************************** private data ******************************/
|
/**************************** private data ******************************/
|
||||||
typedef struct _E_Desklock_Data E_Desklock_Data;
|
typedef struct _E_Desklock_Data E_Desklock_Data;
|
||||||
typedef struct _E_Desklock_Popup_Data E_Desklock_Popup_Data;
|
typedef struct _E_Desklock_Popup_Data E_Desklock_Popup_Data;
|
||||||
|
|
||||||
struct _E_Desklock_Popup_Data
|
struct _E_Desklock_Popup_Data
|
||||||
{
|
{
|
||||||
E_Popup *popup_wnd;
|
E_Popup *popup_wnd;
|
||||||
Evas_Object *bg_object;
|
Evas_Object *bg_object;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _E_Desklock_Data
|
struct _E_Desklock_Data
|
||||||
{
|
{
|
||||||
Evas_List *elock_wnd_list;
|
Evas_List *elock_wnd_list;
|
||||||
Ecore_X_Window elock_wnd;
|
Ecore_X_Window elock_wnd;
|
||||||
Evas_List *handlers;
|
Evas_List *handlers;
|
||||||
char passwd[PASSWD_LEN];
|
char passwd[PASSWD_LEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
static E_Desklock_Data *edd = NULL;
|
static E_Desklock_Data *edd = NULL;
|
||||||
|
@ -41,211 +38,228 @@ static void _e_desklock_delete();
|
||||||
EAPI int
|
EAPI int
|
||||||
e_desklock_show(void)
|
e_desklock_show(void)
|
||||||
{
|
{
|
||||||
Evas_List *managers, *l, *l2, *l3;
|
Evas_List *managers, *l, *l2, *l3;
|
||||||
//E_Zone *zone = NULL;
|
int m = 0, c = 0, z = 0;
|
||||||
int m = 0, c = 0, z = 0;
|
E_Desklock_Popup_Data *edp;
|
||||||
|
|
||||||
E_Desklock_Popup_Data *edp;
|
if (!e_config->desklock_personal_passwd)
|
||||||
|
{
|
||||||
if (!edd)
|
E_Zone *zone;
|
||||||
{
|
|
||||||
edd = E_NEW(E_Desklock_Data, 1);
|
zone = e_util_zone_current_get(e_manager_current_get());
|
||||||
if (!edd) return 0;
|
if (zone)
|
||||||
edd->elock_wnd_list = NULL;
|
{
|
||||||
edd->elock_wnd = 0;
|
E_Config_Dialog *cfd;
|
||||||
edd->handlers = NULL;
|
|
||||||
edd->passwd[0] = 0;
|
cfd = e_int_config_desklock(zone->container);
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
managers = e_manager_list();
|
}
|
||||||
for (l = managers; l; l = l->next)
|
|
||||||
{
|
if (!edd)
|
||||||
E_Manager *man;
|
{
|
||||||
m ++;
|
edd = E_NEW(E_Desklock_Data, 1);
|
||||||
|
if (!edd) return 0;
|
||||||
man = l->data;
|
edd->elock_wnd_list = NULL;
|
||||||
for (l2 = man->containers; l2; l2 = l2->next)
|
edd->elock_wnd = 0;
|
||||||
{
|
edd->handlers = NULL;
|
||||||
E_Container *con;
|
edd->passwd[0] = 0;
|
||||||
|
}
|
||||||
c ++;
|
|
||||||
|
managers = e_manager_list();
|
||||||
con = l2->data;
|
for (l = managers; l; l = l->next)
|
||||||
for (l3 = con->zones; l3; l3 = l3->next)
|
{
|
||||||
{
|
E_Manager *man;
|
||||||
E_Zone *zone;
|
|
||||||
|
m++;
|
||||||
zone = l3->data;
|
man = l->data;
|
||||||
if (!edd->elock_wnd)
|
for (l2 = man->containers; l2; l2 = l2->next)
|
||||||
{
|
{
|
||||||
edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1);
|
E_Container *con;
|
||||||
ecore_x_window_show(edd->elock_wnd);
|
|
||||||
e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd);
|
c++;
|
||||||
}
|
|
||||||
|
con = l2->data;
|
||||||
edp = E_NEW(E_Desklock_Popup_Data, 1);
|
for (l3 = con->zones; l3; l3 = l3->next)
|
||||||
if (edp)
|
{
|
||||||
{
|
E_Zone *zone;
|
||||||
edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h);
|
|
||||||
evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000,
|
zone = l3->data;
|
||||||
ecore_x_current_time_get(), NULL);
|
if (!edd->elock_wnd)
|
||||||
|
{
|
||||||
e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER);
|
edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1);
|
||||||
|
ecore_x_window_show(edd->elock_wnd);
|
||||||
evas_event_freeze(edp->popup_wnd->evas);
|
e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd);
|
||||||
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",
|
edp = E_NEW(E_Desklock_Popup_Data, 1);
|
||||||
"widgets/desklock/main");
|
if (edp)
|
||||||
|
{
|
||||||
evas_object_move(edp->bg_object, 0, 0);
|
edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h);
|
||||||
evas_object_resize(edp->bg_object, zone->w, zone->h);
|
evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000,
|
||||||
evas_object_show(edp->bg_object);
|
ecore_x_current_time_get(), NULL);
|
||||||
e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object);
|
|
||||||
evas_event_thaw(edp->popup_wnd->evas);
|
e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER);
|
||||||
|
|
||||||
e_popup_show(edp->popup_wnd);
|
evas_event_freeze(edp->popup_wnd->evas);
|
||||||
|
edp->bg_object = edje_object_add(edp->popup_wnd->evas);
|
||||||
edd->elock_wnd_list = evas_list_append(edd->elock_wnd_list, edp);
|
//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);
|
||||||
/* handlers */
|
evas_object_resize(edp->bg_object, zone->w, zone->h);
|
||||||
edd->handlers = evas_list_append(edd->handlers,
|
evas_object_show(edp->bg_object);
|
||||||
ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN,
|
edje_object_part_text_set(edp->bg_object, "title",
|
||||||
_e_desklock_cb_key_down, NULL));
|
_("Please enter your unlock password"));
|
||||||
edd->handlers = evas_list_append(edd->handlers,
|
|
||||||
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN,
|
e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object);
|
||||||
_e_desklock_cb_mouse_down, NULL));
|
evas_event_thaw(edp->popup_wnd->evas);
|
||||||
edd->handlers = evas_list_append(edd->handlers,
|
|
||||||
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP,
|
e_popup_show(edp->popup_wnd);
|
||||||
_e_desklock_cb_mouse_up, NULL));
|
|
||||||
edd->handlers = evas_list_append(edd->handlers,
|
edd->elock_wnd_list = evas_list_append(edd->elock_wnd_list, edp);
|
||||||
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();
|
/* handlers */
|
||||||
return 1;
|
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
|
EAPI void
|
||||||
e_desklock_hide(void)
|
e_desklock_hide(void)
|
||||||
{
|
{
|
||||||
E_Desklock_Popup_Data *edp;
|
E_Desklock_Popup_Data *edp;
|
||||||
|
|
||||||
if (!edd) return;
|
if (!edd) return;
|
||||||
|
|
||||||
while (edd->elock_wnd_list)
|
while (edd->elock_wnd_list)
|
||||||
{
|
{
|
||||||
edp = edd->elock_wnd_list->data;
|
edp = edd->elock_wnd_list->data;
|
||||||
if (edp)
|
if (edp)
|
||||||
{
|
{
|
||||||
e_popup_hide(edp->popup_wnd);
|
e_popup_hide(edp->popup_wnd);
|
||||||
|
|
||||||
evas_event_freeze(edp->popup_wnd->evas);
|
evas_event_freeze(edp->popup_wnd->evas);
|
||||||
evas_object_del(edp->bg_object);
|
evas_object_del(edp->bg_object);
|
||||||
evas_event_thaw(edp->popup_wnd->evas);
|
evas_event_thaw(edp->popup_wnd->evas);
|
||||||
|
|
||||||
e_object_del(E_OBJECT(edp->popup_wnd));
|
e_object_del(E_OBJECT(edp->popup_wnd));
|
||||||
E_FREE(edp);
|
E_FREE(edp);
|
||||||
}
|
}
|
||||||
edd->elock_wnd_list = evas_list_remove_list(edd->elock_wnd_list, edd->elock_wnd_list);
|
edd->elock_wnd_list = evas_list_remove_list(edd->elock_wnd_list, edd->elock_wnd_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (edd->handlers)
|
while (edd->handlers)
|
||||||
{
|
{
|
||||||
ecore_event_handler_del(edd->handlers->data);
|
ecore_event_handler_del(edd->handlers->data);
|
||||||
edd->handlers = evas_list_remove_list(edd->handlers, edd->handlers);
|
edd->handlers = evas_list_remove_list(edd->handlers, edd->handlers);
|
||||||
}
|
}
|
||||||
|
|
||||||
e_grabinput_release(edd->elock_wnd, edd->elock_wnd);
|
e_grabinput_release(edd->elock_wnd, edd->elock_wnd);
|
||||||
ecore_x_window_del(edd->elock_wnd);
|
ecore_x_window_del(edd->elock_wnd);
|
||||||
|
|
||||||
E_FREE(edd);
|
E_FREE(edd);
|
||||||
edd = NULL;
|
edd = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_e_desklock_cb_key_down(void *data, int type, void *event)
|
_e_desklock_cb_key_down(void *data, int type, void *event)
|
||||||
{
|
{
|
||||||
Ecore_X_Event_Key_Down *ev;
|
Ecore_X_Event_Key_Down *ev;
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
if (ev->win != edd->elock_wnd) return 1;
|
if (ev->win != edd->elock_wnd) return 1;
|
||||||
|
|
||||||
if (!strcmp(ev->keysymbol, "Escape"))
|
if (!strcmp(ev->keysymbol, "Escape"))
|
||||||
;
|
;
|
||||||
else if (!strcmp(ev->keysymbol, "KP_Enter"))
|
else if (!strcmp(ev->keysymbol, "KP_Enter"))
|
||||||
{
|
{
|
||||||
// here we have to go to auth
|
// here we have to go to auth
|
||||||
if (strcmp(edd->passwd, e_config->desklock_personal_passwd) == 0)
|
if (!strcmp(edd->passwd, e_config->desklock_personal_passwd))
|
||||||
{
|
{
|
||||||
e_desklock_hide();
|
e_desklock_hide();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
; // report about invalid password
|
; // report about invalid password
|
||||||
|
|
||||||
memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN);
|
memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN);
|
||||||
_e_desklock_passwd_update();
|
_e_desklock_passwd_update();
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->keysymbol, "Return"))
|
else if (!strcmp(ev->keysymbol, "Return"))
|
||||||
{
|
{
|
||||||
// here we have to go to auth
|
// here we have to go to auth
|
||||||
if (strcmp(edd->passwd, e_config->desklock_personal_passwd) == 0)
|
if ((e_config->desklock_personal_passwd) &&
|
||||||
{
|
(!strcmp(edd->passwd, e_config->desklock_personal_passwd)))
|
||||||
e_desklock_hide();
|
{
|
||||||
return 1;
|
e_desklock_hide();
|
||||||
}
|
return 1;
|
||||||
else
|
}
|
||||||
; // report about invalid password
|
else
|
||||||
|
; // report about invalid password
|
||||||
memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN);
|
|
||||||
_e_desklock_passwd_update();
|
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, "BackSpace"))
|
||||||
else if (!strcmp(ev->keysymbol, "Delete"))
|
_e_desklock_backspace();
|
||||||
_e_desklock_delete();
|
else if (!strcmp(ev->keysymbol, "Delete"))
|
||||||
else
|
_e_desklock_delete();
|
||||||
{
|
else
|
||||||
// here we have to grab a password
|
{
|
||||||
if (ev->key_compose)
|
// here we have to grab a password
|
||||||
{
|
if (ev->key_compose)
|
||||||
if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->key_compose))))
|
{
|
||||||
{
|
if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->key_compose))))
|
||||||
strcat(edd->passwd, ev->key_compose);
|
{
|
||||||
_e_desklock_passwd_update();
|
strcat(edd->passwd, ev->key_compose);
|
||||||
}
|
_e_desklock_passwd_update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return 1;
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_e_desklock_cb_mouse_down(void *data, int type, void *event)
|
_e_desklock_cb_mouse_down(void *data, int type, void *event)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
static int
|
static int
|
||||||
_e_desklock_cb_mouse_up(void *data, int type, void *event)
|
_e_desklock_cb_mouse_up(void *data, int type, void *event)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
static int
|
static int
|
||||||
_e_desklock_cb_mouse_wheel(void *data, int type, void *event)
|
_e_desklock_cb_mouse_wheel(void *data, int type, void *event)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
static int
|
static int
|
||||||
_e_desklock_idler(void *data)
|
_e_desklock_idler(void *data)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI int
|
EAPI int
|
||||||
|
@ -261,38 +275,37 @@ e_desklock_init(void)
|
||||||
//#undef T
|
//#undef T
|
||||||
//#undef D
|
//#undef D
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI int
|
EAPI int
|
||||||
e_desklock_shutdown(void)
|
e_desklock_shutdown(void)
|
||||||
{
|
{
|
||||||
e_desklock_hide();
|
e_desklock_hide();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_desklock_passwd_update()
|
_e_desklock_passwd_update()
|
||||||
{
|
{
|
||||||
int ii;
|
int ii;
|
||||||
char passwd_hidden[PASSWD_LEN * 3]="";
|
char passwd_hidden[PASSWD_LEN * 3]="";
|
||||||
E_Desklock_Popup_Data *edp;
|
E_Desklock_Popup_Data *edp;
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
|
||||||
if (!edd) return;
|
if (!edd) return;
|
||||||
|
|
||||||
for (ii = 0; ii < strlen(edd->passwd); ii ++)
|
for (ii = 0; ii < strlen(edd->passwd); ii ++)
|
||||||
{
|
{
|
||||||
passwd_hidden[ii] = '*';
|
passwd_hidden[ii] = '*';
|
||||||
passwd_hidden[ii+1] = 0;
|
passwd_hidden[ii+1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (l = edd->elock_wnd_list; l; l = l->next)
|
for (l = edd->elock_wnd_list; l; l = l->next)
|
||||||
{
|
{
|
||||||
edp = l->data;
|
edp = l->data;
|
||||||
edje_object_part_text_set(edp->bg_object, "passwd", passwd_hidden);
|
edje_object_part_text_set(edp->bg_object, "passwd", passwd_hidden);
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -301,18 +314,19 @@ _e_desklock_backspace()
|
||||||
int len, val, pos;
|
int len, val, pos;
|
||||||
|
|
||||||
if (!edd) return;
|
if (!edd) return;
|
||||||
|
|
||||||
len = strlen(edd->passwd);
|
len = strlen(edd->passwd);
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
{
|
{
|
||||||
pos = evas_string_char_prev_get(edd->passwd, len, &val);
|
pos = evas_string_char_prev_get(edd->passwd, len, &val);
|
||||||
if ((pos < len) && (pos >= 0))
|
if ((pos < len) && (pos >= 0))
|
||||||
{
|
{
|
||||||
edd->passwd[pos] = 0;
|
edd->passwd[pos] = 0;
|
||||||
_e_desklock_passwd_update();
|
_e_desklock_passwd_update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_desklock_delete()
|
_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 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 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 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_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_main_exit (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _e_int_menus_apps_scan (E_Menu *m);
|
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);
|
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
|
static void
|
||||||
_e_int_menus_main_fm(void *data, E_Menu *m, E_Menu_Item *mi)
|
_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 *root;
|
||||||
|
|
||||||
e_menu_pre_activate_callback_set(m, NULL, NULL);
|
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);
|
root = e_menu_root_get(m);
|
||||||
if ((root) && (root->zone))
|
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 Evas_List *shelves = NULL;
|
||||||
static int shelf_id = 0;
|
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 */
|
/* externally accessible functions */
|
||||||
EAPI int
|
EAPI int
|
||||||
e_shelf_init(void)
|
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);
|
snprintf(buf, sizeof(buf), "shelf/%s/base", es->style);
|
||||||
evas_object_resize(es->o_base, es->w, es->h);
|
evas_object_resize(es->o_base, es->w, es->h);
|
||||||
if (!e_theme_edje_object_set(es->o_base, "base/theme/shelf", buf))
|
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)
|
if (es->popup)
|
||||||
{
|
{
|
||||||
evas_object_show(es->o_base);
|
evas_object_show(es->o_base);
|
||||||
|
|
Loading…
Reference in New Issue