remove really evil/bad code int he desklock config dialog. don't go digging

and recreating internal widget data - you need a feature - add it to the
widget, or use existing ones. password mode disabled because it's just a bad
buggy hack. see comments.


SVN revision: 23041
This commit is contained in:
Carsten Haitzler 2006-06-01 04:09:33 +00:00
parent 049f2aae52
commit 59a12c9d5d
6 changed files with 434 additions and 602 deletions

View File

@ -128,10 +128,10 @@ e_editable_text_insert(Evas_Object *object, const char *text)
if ((!object) || !(sd = evas_object_smart_data_get(object)))
return;
if ((!text) || ((strlen(text) <= 1) && (*text < 0x20)))
if ((!text) || ((strlen(text) <= 1) && (text[0] < 0x20)))
return;
printf("Insert: \"%s\", %c\n", text, *text);
printf("Insert: \"%s\"\n", text);
cursor = (Evas_Textblock_Cursor *)evas_object_textblock_cursor_get(sd->text_object);
if (sd->cursor_at_the_end)
@ -490,7 +490,6 @@ e_entry_unfocus(Evas_Object *entry)
edje_object_signal_emit(sd->edje_object, "focus_out", "");
}
/**************************
*
* Private functions
@ -613,6 +612,7 @@ _e_editable_text_cursor_visibility_update(Evas_Object *object)
}
/* Make the cursor blink */
// FIXME: cursor should not be a rect - shoudl be an edje. timers not needed then
static int
_e_editable_text_cursor_timer_cb(void *data)
{
@ -667,6 +667,7 @@ _e_editable_text_smart_add(Evas_Object *object)
e_editable_text_style_use_count++;
evas_object_smart_member_add(sd->text_object, object);
// FIXME: cursor should not be a rect - shoudl be an edje.
sd->clip = evas_object_rectangle_add(evas);
evas_object_clip_set(sd->text_object, sd->clip);
evas_object_smart_member_add(sd->clip, object);
@ -773,35 +774,45 @@ _e_entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event)
obj = sd->entry_object;
if (strcmp(key_event->keyname, "BackSpace") == 0)
if ((!strcmp(key_event->keyname, "BackSpace")) ||
((key_event->string) && (strlen(key_event->string) == 1) &&
(key_event->string[0] == 0x8)))
{
e_editable_text_delete_char_before(obj);
if(sd->change_func)
if (sd->change_func)
sd->change_func(sd->change_data, obj, "");
}
else if (strcmp(key_event->keyname, "Delete") == 0)
else if ((!strcmp(key_event->keyname, "Delete")) ||
((key_event->string) && (strlen(key_event->string) == 1) &&
(key_event->string[0] == 0x4)))
{
e_editable_text_delete_char_after(obj);
if(sd->change_func)
if (sd->change_func)
sd->change_func(sd->change_data, obj, "");
}
else if (strcmp(key_event->keyname, "Left") == 0)
else if (!strcmp(key_event->keyname, "Left"))
e_editable_text_cursor_move_left(obj);
else if (strcmp(key_event->keyname, "Right") == 0)
else if (!strcmp(key_event->keyname, "Right"))
e_editable_text_cursor_move_right(obj);
else if (strcmp(key_event->keyname, "Home") == 0)
else if ((!strcmp(key_event->keyname, "Home")) ||
((key_event->string) && (strlen(key_event->string) == 1) &&
(key_event->string[0] == 0x1)))
e_editable_text_cursor_move_at_start(obj);
else if (strcmp(key_event->keyname, "End") == 0)
else if ((!strcmp(key_event->keyname, "End")) ||
((key_event->string) && (strlen(key_event->string) == 1) &&
(key_event->string[0] == 0x5)))
e_editable_text_cursor_move_at_end(obj);
else
{
e_editable_text_insert(obj, key_event->string);
if(key_event->string && strcmp(key_event->keyname, "Escape"))
if ((key_event->string) && (strcmp(key_event->keyname, "Escape")))
{
if(*(key_event->string) >= 32 && *(key_event->string) <= 126)
if(sd->change_func)
sd->change_func(sd->change_data, obj, (char *)key_event->string);
if (*(key_event->string) >= 0x20)
{
if (sd->change_func)
sd->change_func(sd->change_data, obj,
(char *)key_event->string);
}
}
}
}
@ -917,4 +928,3 @@ _e_entry_smart_hide(Evas_Object *object)
evas_object_hide(sd->edje_object);
}

View File

@ -47,6 +47,7 @@ EAPI void e_entry_cursor_hide(Evas_Object *object);
EAPI void e_entry_change_handler_set(Evas_Object *object, void (*func)(void *data, Evas_Object *entry, char *key), void *data);
EAPI void e_entry_focus(Evas_Object *object);
EAPI void e_entry_unfocus(Evas_Object *object);
EAPI void e_entry_password_set(Evas_Object *object, int pw);
#endif
#endif

View File

@ -291,7 +291,9 @@ e_gadcon_populate_class(E_Gadcon *gc, const E_Gadcon_Client_Class *cc)
for (l = e_config->gadcons; l; l = l->next)
{
cf_gc = l->data;
if ((!strcmp(cf_gc->name, gc->name)) &&
if ((cf_gc->name) && (gc->name) &&
(cf_gc->id) && (gc->id) &&
(!strcmp(cf_gc->name, gc->name)) &&
(!strcmp(cf_gc->id, gc->id)))
{
ok = 1;
@ -303,7 +305,8 @@ e_gadcon_populate_class(E_Gadcon *gc, const E_Gadcon_Client_Class *cc)
for (l = cf_gc->clients; l; l = l->next)
{
cf_gcc = l->data;
if (!strcmp(cf_gcc->name, cc->name))
if ((cf_gcc->name) && (cc->name) &&
(!strcmp(cf_gcc->name, cc->name)))
{
E_Gadcon_Client *gcc;

View File

@ -28,26 +28,15 @@ static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
/******************************************************************************************/
static void _e_desklock_passwd_cb_change(void *data, Evas_Object *obj);
static void _e_desklock_cb_show_passwd(void *data, Evas_Object *obj, const char *emission,
const char *source);
static int _e_desklock_zone_num_get();
static int _e_desklock_zone_num_get(void);
static void _load_bgs(E_Config_Dialog_Data *cfdata);
static void _ibg_list_cb_bg_selected(void *data);
static void _e_desklock_cb_lb_show_on_all_screens(void *data, Evas_Object *obj,
const char *emission, const char *source);
static void _e_desklock_cb_lb_show_on_current_screen(void *data, Evas_Object *obj,
const char *emission, const char *source);
static void _e_desklock_cb_lb_show_on_specific_screen(void *data, Evas_Object *obj,
const char *emission, const char *source);
static void _e_desklock_passwd_cb_change(void *data, Evas_Object *obj);
static void _e_desklock_cb_show_passwd(void *data, Evas_Object *obj);
static void _e_desklock_cb_lb_show_change(void *data, Evas_Object *obj);
#ifdef HAVE_PAM
static void _e_desklock_cb_syswide_auth_method(void *data, Evas_Object *obj,
const char *emission, const char *source);
static void _e_desklock_cb_personalized_auth_method(void *data, Evas_Object *obj,
const char *emission, const char *source);
static void _e_desklock_cb_auth_method_change(void *data, Evas_Object *obj);
#endif
/*******************************************************************************************/
@ -93,40 +82,6 @@ struct _E_Config_Dialog_Data
} gui;
};
typedef struct _E_Widget_Entry_Data E_Widget_Entry_Data;
typedef struct _E_Widget_Check_Data E_Widget_Check_Data;
typedef struct _E_Widget_Radio_Data E_Widget_Radio_Data;
typedef struct _E_Widget_Slider_Data E_Widget_Slider_Data;
struct _E_Widget_Entry_Data
{
Evas_Object *o_entry;
Evas_Object *obj;
char **valptr;
void (*on_change_func) (void *data, Evas_Object *obj);
void *on_change_data;
};
struct _E_Widget_Check_Data
{
Evas_Object *o_check;
int *valptr;
};
struct _E_Widget_Radio_Data
{
E_Radio_Group *group;
Evas_Object *o_radio;
int valnum;
};
struct _E_Widget_Slider_Data
{
Evas_Object *o_widget, *o_slider;
double *dval;
int *ival;
};
EAPI E_Config_Dialog *
e_int_config_desklock(E_Container *con)
{
@ -251,35 +206,27 @@ static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
E_Widget_Check_Data *wd;
#ifdef HAVE_PAM
E_Radio_Group *rg_auth;
Evas_Object *oc;
#endif
//_fill_desklock_data(cfdata);
o = e_widget_list_add(evas, 0, 0);
#ifdef HAVE_PAM
of = e_widget_framelist_add(evas, _("Password Type"), 0);
{
rg_auth = e_widget_radio_group_new((int*)(&cfdata->auth_method));
oc = e_widget_radio_add(evas, _("Use my login password"), 0, rg_auth);
e_widget_on_change_hook_set(oc, _e_desklock_cb_auth_method_change, cfdata);
e_widget_framelist_object_append(of, oc);
rwd = e_widget_data_get(oc);
edje_object_signal_callback_add(rwd->o_radio, "toggle_on", "",
_e_desklock_cb_syswide_auth_method, cfdata);
oc = e_widget_radio_add(evas, _("Personalized password"), 1, rg_auth);
e_widget_framelist_object_append(of,oc);
e_widget_on_change_hook_set(oc, _e_desklock_cb_auth_method_change, cfdata);
e_widget_framelist_object_append(of, oc);
rwd = e_widget_data_get(oc);
edje_object_signal_callback_add(rwd->o_radio, "toggle_on", "",
_e_desklock_cb_personalized_auth_method, cfdata);
}
e_widget_list_object_append(o, of, 1, 1, 0.5);
#endif
@ -287,8 +234,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
cfdata->gui.passwd_field = ob = e_widget_entry_add(evas, &(cfdata->desklock_passwd));
#ifdef HAVE_PAM
if (cfdata->auth_method == 0)
e_widget_disabled_set(ob, 1);
if (cfdata->auth_method == 0) e_widget_disabled_set(ob, 1);
#endif
_e_desklock_passwd_cb_change(cfdata, ob);
e_widget_entry_on_change_callback_set(ob, _e_desklock_passwd_cb_change, cfdata);
@ -296,16 +242,13 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Show password"), &(cfdata->show_password));
e_widget_on_change_hook_set(ob, _e_desklock_cb_show_passwd, cfdata);
cfdata->gui.show_passwd_check = ob;
#ifdef HAVE_PAM
if (cfdata->auth_method == 0)
e_widget_disabled_set(ob, 1);
if (cfdata->auth_method == 0) e_widget_disabled_set(ob, 1);
#endif
e_widget_framelist_object_append(of, ob);
wd = (E_Widget_Check_Data*)e_widget_data_get(ob);
edje_object_signal_callback_add(wd->o_check,"toggle_on", "", _e_desklock_cb_show_passwd, cfdata);
edje_object_signal_callback_add(wd->o_check,"toggle_off", "", _e_desklock_cb_show_passwd, cfdata);
e_widget_list_object_append(o, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Automatic Locking"), 0);
@ -374,9 +317,7 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
#endif
if (e_config->desklock_use_timeout)
{
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
}
e_config_save_queue();
return 1;
@ -385,22 +326,21 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static Evas_Object *
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *of, *ob;
E_Widget_Radio_Data *wd;
Evas_Object *of, *ob, *oc;
E_Radio_Group *rg;
Evas_Object *ot;
E_Widget_Check_Data *cwd;
#ifdef HAVE_PAM
E_Radio_Group *rg_auth;
#endif
cfdata->evas = evas;
ot = e_widget_table_add(evas, 0);
{
/* start: bkg list */
cfdata->gui.bg_list = e_widget_ilist_add(evas, BG_LIST_ICON_SIZE_W,
BG_LIST_ICON_SIZE_H, &(cfdata->cur_bg));
{
e_widget_ilist_selector_set(cfdata->gui.bg_list, 1);
e_widget_min_size_set(cfdata->gui.bg_list, 180, 200);
@ -408,7 +348,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
e_widget_focus_set(cfdata->gui.bg_list, 1);
e_widget_ilist_go(cfdata->gui.bg_list);
}
e_widget_table_object_append(ot, cfdata->gui.bg_list, 0, 0, 1, 2, 1, 1, 1, 1);
/* end: bkg list */
@ -428,23 +368,25 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
if (1 || _e_desklock_zone_num_get() > 1)
{
of = e_widget_framelist_add(evas, _("Login Box Settings"), 0);
{
rg = e_widget_radio_group_new((int *)(&(cfdata->login_box_zone)));
ob = e_widget_radio_add(evas, _("Show on all screen zones"), LOGINBOX_SHOW_ALL_SCREENS,
rg);
e_widget_on_change_hook_set(ob, _e_desklock_cb_lb_show_change, cfdata);
cfdata->gui.loginbox_obj.show_all_screens = ob;
if (cfdata->zone_count == 1) e_widget_disabled_set(ob, 1);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Show on current screen zone"),
LOGINBOX_SHOW_CURRENT_SCREENS, rg);
e_widget_on_change_hook_set(ob, _e_desklock_cb_lb_show_change, cfdata);
cfdata->gui.loginbox_obj.show_current_screen = ob;
if (cfdata->zone_count == 1) e_widget_disabled_set(ob, 1);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Show on screen zone #:"), LOGINBOX_SHOW_SPECIFIC_SCREEN,
rg);
e_widget_on_change_hook_set(ob, _e_desklock_cb_lb_show_change, cfdata);
cfdata->gui.loginbox_obj.show_specific_screen = ob;
if (cfdata->zone_count == 1) e_widget_disabled_set(ob, 1);
e_widget_framelist_object_append(of, ob);
@ -455,38 +397,30 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
if (cfdata->zone_count == 1 || cfdata->login_box_zone == LOGINBOX_SHOW_ALL_SCREENS)
e_widget_disabled_set(ob, 1);
e_widget_framelist_object_append(of, ob);
}
e_widget_table_object_append(ot, of, 1, 1, 1, 1, 1, 1, 1, 1);
}
/* end: login box options */
#ifdef HAVE_PAM
of = e_widget_framelist_add(evas, _("Password Type"), 0);
{
rg_auth = e_widget_radio_group_new((int*)(&cfdata->auth_method));
oc = e_widget_radio_add(evas, _("Use my login password"), 0, rg_auth);
e_widget_on_change_hook_set(oc, _e_desklock_cb_auth_method_change, cfdata);
e_widget_framelist_object_append(of, oc);
wd = e_widget_data_get(oc);
edje_object_signal_callback_add(wd->o_radio, "toggle_on", "",
_e_desklock_cb_syswide_auth_method, cfdata);
oc = e_widget_radio_add(evas, _("Personalized password"), 1, rg_auth);
e_widget_on_change_hook_set(oc, _e_desklock_cb_auth_method_change, cfdata);
e_widget_framelist_object_append(of,oc);
wd = e_widget_data_get(oc);
edje_object_signal_callback_add(wd->o_radio, "toggle_on", "",
_e_desklock_cb_personalized_auth_method, cfdata);
}
e_widget_table_object_append(ot, of, 0, 2, 1, 1, 1, 1, 1, 1);
#endif
of = e_widget_framelist_add(evas, _("Personalized Password:"), 0);
{
cfdata->gui.passwd_field = ob = e_widget_entry_add(evas, &(cfdata->desklock_passwd));
#ifdef HAVE_PAM
if (cfdata->auth_method == 0)
e_widget_disabled_set(ob, 1);
if (cfdata->auth_method == 0) e_widget_disabled_set(ob, 1);
#endif
_e_desklock_passwd_cb_change(cfdata, ob);
@ -495,20 +429,13 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Show password"), &(cfdata->show_password));
e_widget_on_change_hook_set(ob, _e_desklock_cb_show_passwd, cfdata);
cfdata->gui.show_passwd_check = ob;
#ifdef HAVE_PAM
if (cfdata->auth_method == 0)
e_widget_disabled_set(ob, 1);
if (cfdata->auth_method == 0) e_widget_disabled_set(ob, 1);
#endif
e_widget_framelist_object_append(of, ob);
cwd = (E_Widget_Check_Data*)e_widget_data_get(ob);
edje_object_signal_callback_add(cwd->o_check,"toggle_on", "",
_e_desklock_cb_show_passwd, cfdata);
edje_object_signal_callback_add(cwd->o_check,"toggle_off", "",
_e_desklock_cb_show_passwd, cfdata);
}
#ifdef HAVE_PAM
e_widget_table_object_append(ot, of, 0, 3, 1, 1, 1, 1, 1, 1);
#else
@ -516,7 +443,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
#endif
of = e_widget_framelist_add(evas, _("Automatic Locking"), 0);
{
e_widget_disabled_set(of, !ecore_x_screensaver_event_available_get());
ob = e_widget_check_add(evas, _("Enable screensaver"), &(cfdata->use_timeout));
@ -535,30 +462,11 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
1.0, 0, &(cfdata->timeout), NULL,
200);
e_widget_framelist_object_append(of, ob);
}
#ifdef HAVE_PAM
e_widget_table_object_append(ot, of, 1, 2, 1, 2 ,1 ,1 ,1 ,1);
#else
e_widget_table_object_append(ot, of, 1, 2, 1, 1 ,1 ,1 ,1 ,1);
#endif
}
/* register callbacks for the radios in login box options
* in order to propertly update interface
*/
wd = e_widget_data_get(cfdata->gui.loginbox_obj.show_all_screens);
edje_object_signal_callback_add(wd->o_radio, "toggle_on", "",
_e_desklock_cb_lb_show_on_all_screens, cfdata);
wd = e_widget_data_get(cfdata->gui.loginbox_obj.show_current_screen);
edje_object_signal_callback_add(wd->o_radio, "toggle_on", "",
_e_desklock_cb_lb_show_on_current_screen, cfdata);
wd = e_widget_data_get(cfdata->gui.loginbox_obj.show_specific_screen);
edje_object_signal_callback_add(wd->o_radio, "toggle_on", "",
_e_desklock_cb_lb_show_on_specific_screen, cfdata);
e_dialog_resizable_set(cfd->dia, 0);
return ot;
@ -568,59 +476,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
/* general functionality/callbacks */
static void
_e_desklock_passwd_cb_change(void *data, Evas_Object *obj)
{
E_Widget_Entry_Data *wd;
E_Config_Dialog_Data *cfdata;
char *ptr;
int i;
cfdata = data;
// here goes the hack to have e_widget_entry look like
// password entry. However, I think, this should be implemented
// at least on the e_widget_entry level. The best would be
// e_entry.
if (!cfdata->desklock_passwd[0])
{
E_FREE(cfdata->desklock_passwd_cp);
cfdata->desklock_passwd_cp = strdup("");
return;
}
if (strlen(cfdata->desklock_passwd) > strlen(cfdata->desklock_passwd_cp))
{
for (i = 0; i < strlen(cfdata->desklock_passwd_cp); i++)
cfdata->desklock_passwd[i] = cfdata->desklock_passwd_cp[i];
E_FREE(cfdata->desklock_passwd_cp);
cfdata->desklock_passwd_cp = strdup(cfdata->desklock_passwd);
}
else if (strlen(cfdata->desklock_passwd) < strlen(cfdata->desklock_passwd_cp))
{
cfdata->desklock_passwd_cp[strlen(cfdata->desklock_passwd)] = 0;
E_FREE(cfdata->desklock_passwd);
cfdata->desklock_passwd = strdup(cfdata->desklock_passwd_cp);
}
else
{
E_FREE(cfdata->desklock_passwd);
cfdata->desklock_passwd = strdup(cfdata->desklock_passwd_cp);
}
wd = e_widget_data_get(obj);
if (cfdata->show_password)
{
e_entry_text_set(wd->o_entry, cfdata->desklock_passwd);
return;
}
for (ptr = cfdata->desklock_passwd; *ptr; ptr++) *ptr = '*';
e_entry_text_set(wd->o_entry, cfdata->desklock_passwd);
}
static void
_e_desklock_cb_show_passwd(void *data, Evas_Object *obj, const char *emission, const char *source)
_e_desklock_cb_show_passwd(void *data, Evas_Object *obj)
{
E_Config_Dialog_Data *cfdata;
@ -629,7 +485,7 @@ _e_desklock_cb_show_passwd(void *data, Evas_Object *obj, const char *emission, c
}
static int
_e_desklock_zone_num_get()
_e_desklock_zone_num_get(void)
{
int num;
Evas_List *l, *l2;
@ -646,7 +502,6 @@ _e_desklock_zone_num_get()
num += evas_list_count(con->zones);
}
}
return num;
}
@ -700,8 +555,6 @@ _load_bgs(E_Config_Dialog_Data *cfdata)
/* end: Desklock background */
/* Theme Background */
eebuf = ecore_evas_buffer_new(1, 1);
evasbuf = ecore_evas_get(eebuf);
@ -792,17 +645,16 @@ _ibg_list_cb_bg_selected(void *data)
E_Config_Dialog_Data *cfdata;
cfdata = data;
if (cfdata->cur_bg[0])
{
if (strcmp(cfdata->cur_bg, DEF_DESKLOCK_BACKGROUND) == 0)
if (!strcmp(cfdata->cur_bg, DEF_DESKLOCK_BACKGROUND))
{
const char *theme;
theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background");
e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background");
}
else if (strcmp(cfdata->cur_bg, DEF_THEME_BACKGROUND) == 0)
else if (!strcmp(cfdata->cur_bg, DEF_THEME_BACKGROUND))
{
const char *theme;
@ -810,10 +662,8 @@ _ibg_list_cb_bg_selected(void *data)
e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background");
}
else
{
e_widget_preview_edje_set(cfdata->preview_image, cfdata->cur_bg, "desktop/background");
}
}
else
{
const char *theme;
@ -824,65 +674,94 @@ _ibg_list_cb_bg_selected(void *data)
}
static void
_e_desklock_cb_lb_show_on_all_screens(void *data, Evas_Object *obj, const char *emission,
const char *source)
_e_desklock_passwd_cb_change(void *data, Evas_Object *obj)
{
E_Config_Dialog_Data *cfdata;
char *ptr;
int i;
cfdata = data;
// here goes the hack to have e_widget_entry look like
// password entry. However, I think, this should be implemented
// at least on the e_widget_entry level. The best would be
// e_entry.
if (!cfdata->desklock_passwd[0])
{
E_FREE(cfdata->desklock_passwd_cp);
cfdata->desklock_passwd_cp = strdup("");
return;
}
if (strlen(cfdata->desklock_passwd) > strlen(cfdata->desklock_passwd_cp))
{
for (i = 0; i < strlen(cfdata->desklock_passwd_cp); i++)
cfdata->desklock_passwd[i] = cfdata->desklock_passwd_cp[i];
E_FREE(cfdata->desklock_passwd_cp);
cfdata->desklock_passwd_cp = strdup(cfdata->desklock_passwd);
}
else if (strlen(cfdata->desklock_passwd) < strlen(cfdata->desklock_passwd_cp))
{
cfdata->desklock_passwd_cp[strlen(cfdata->desklock_passwd)] = 0;
E_FREE(cfdata->desklock_passwd);
cfdata->desklock_passwd = strdup(cfdata->desklock_passwd_cp);
}
else
{
E_FREE(cfdata->desklock_passwd);
cfdata->desklock_passwd = strdup(cfdata->desklock_passwd_cp);
}
if (cfdata->show_password)
{
e_widget_entry_text_set(obj, cfdata->desklock_passwd);
return;
}
// FIXME: this is a hack. disable. see e_widget_entry.c for doing this right.
// for (ptr = cfdata->desklock_passwd; *ptr; ptr++) *ptr = '*';
// e_widget_entry_text_set(obj, cfdata->desklock_passwd);
}
static void
_e_desklock_cb_lb_show_change(void *data, Evas_Object *obj)
{
E_Config_Dialog_Data *cfdata;
if (!(cfdata = data)) return;
cfdata = data;
if (cfdata->login_box_zone == LOGINBOX_SHOW_ALL_SCREENS)
{
cfdata->specific_lb_zone_backup = cfdata->specific_lb_zone;
e_widget_disabled_set(cfdata->gui.loginbox_obj.screen_slider, 1);
}
static void
_e_desklock_cb_lb_show_on_current_screen(void *data, Evas_Object *obj, const char *emission,
const char *source)
{
_e_desklock_cb_lb_show_on_all_screens(data, obj, emission, source);
}
static void
_e_desklock_cb_lb_show_on_specific_screen(void *data, Evas_Object *obj, const char *emission,
const char *source)
{
E_Widget_Slider_Data *wd;
E_Config_Dialog_Data *cfdata;
if (!(cfdata = data)) return;
wd = e_widget_data_get(cfdata->gui.loginbox_obj.screen_slider);
e_slider_value_set(wd->o_slider, cfdata->specific_lb_zone_backup);
cfdata->specific_lb_zone = cfdata->specific_lb_zone_backup;
e_widget_disabled_set(wd->o_widget, 0);
}
else if (cfdata->login_box_zone == LOGINBOX_SHOW_CURRENT_SCREENS)
{
cfdata->specific_lb_zone_backup = cfdata->specific_lb_zone;
e_widget_disabled_set(cfdata->gui.loginbox_obj.screen_slider, 1);
}
else if (cfdata->login_box_zone == LOGINBOX_SHOW_SPECIFIC_SCREEN)
{
e_widget_slider_value_int_set(cfdata->gui.loginbox_obj.screen_slider, cfdata->specific_lb_zone_backup);
e_widget_disabled_set(cfdata->gui.loginbox_obj.screen_slider, 0);
}
}
#ifdef HAVE_PAM
static void
_e_desklock_cb_syswide_auth_method(void *data, Evas_Object *obj, const char *emission,
const char *source)
_e_desklock_cb_auth_method_change(void *data, Evas_Object *obj)
{
E_Widget_Entry_Data *ewd;
E_Widget_Check_Data *cwd;
E_Config_Dialog_Data *cfdata;
if (!(cfdata = data)) return;
cfdata = data;
if (cfdata->auth_method == 0)
{
e_widget_disabled_set(cfdata->gui.passwd_field, 1);
e_widget_disabled_set(cfdata->gui.show_passwd_check, 1);
}
static void
_e_desklock_cb_personalized_auth_method(void *data, Evas_Object *obj, const char *emission,
const char *source)
{
E_Config_Dialog_Data *cfdata;
if (!(cfdata = data)) return;
}
else if (cfdata->auth_method == 1)
{
e_widget_disabled_set(cfdata->gui.passwd_field, 0);
e_widget_disabled_set(cfdata->gui.show_passwd_check, 0);
}
}
#endif

View File

@ -139,16 +139,6 @@ e_widget_entry_add(Evas *evas, char **val)
return obj;
}
EAPI void
e_widget_entry_on_change_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
{
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
wd->on_change_func = func;
wd->on_change_data = data;
}
void
e_widget_entry_text_set(Evas_Object *entry, const char *text)
{
@ -160,64 +150,22 @@ e_widget_entry_text_set(Evas_Object *entry, const char *text)
*(wd->valptr) = strdup(text);
}
#if 0
const char *
e_widget_entry_text_get(Evas_Object *entry)
EAPI void
e_widget_entry_on_change_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data)
{
return e_entry_text_get(entry);
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
wd->on_change_func = func;
wd->on_change_data = data;
}
void
e_widget_entry_text_insert(Evas_Object *entry, const char *text)
EAPI void
e_widget_entry_password_set(Evas_Object *obj, int pw)
{
e_entry_text_insert(entry, text);
}
E_Widget_Data *wd;
void
e_widget_entry_delete_char_before(Evas_Object *entry)
{
e_entry_delete_char_before(entry);
wd = e_widget_data_get(obj);
// FIXME: need password mode for entry.
// e_entry_password_set(wd->o_entry, pw);
}
void
e_widget_entry_delete_char_after(Evas_Object *entry)
{
e_entry_delete_char_after(entry);
}
void
e_widget_entry_cursor_move_at_start(Evas_Object *entry)
{
e_entry_cursor_move_at_start(entry);
}
void
e_widget_entry_cursor_move_at_end(Evas_Object *entry)
{
e_entry_cursor_move_at_end(entry);
}
void
e_widget_entry_cursor_move_left(Evas_Object *entry)
{
e_entry_cursor_move_left(entry);
}
void
e_widget_entry_cursor_move_right(Evas_Object *entry)
{
e_entry_cursor_move_right(entry);
}
void
e_widget_entry_cursor_show(Evas_Object *entry)
{
e_entry_cursor_show(entry);
}
void
e_widget_entry_cursor_hide(Evas_Object *entry)
{
e_entry_cursor_hide(entry);
}
#endif

View File

@ -7,18 +7,9 @@
#define E_WIDGET_ENTRY_H
EAPI Evas_Object *e_widget_entry_add(Evas *evas, char **val);
EAPI void e_widget_entry_text_set (Evas_Object *entry, const char *text);
EAPI const char *e_editable_text_text_get(Evas_Object *entry);
EAPI void e_widget_entry_text_set(Evas_Object *entry, const char *text);
EAPI void e_widget_entry_text_insert (Evas_Object *entry, const char *text);
EAPI void e_widget_entry_delete_char_before(Evas_Object *entry);
EAPI void e_widget_entry_delete_char_after(Evas_Object *entry);
EAPI void e_widget_entry_cursor_move_at_start(Evas_Object *entry);
EAPI void e_widget_entry_cursor_move_at_end(Evas_Object *entry);
EAPI void e_widget_entry_cursor_move_left(Evas_Object *entry);
EAPI void e_widget_entry_cursor_move_right(Evas_Object *entry);
EAPI void e_widget_entry_cursor_show(Evas_Object *entry);
EAPI void e_widget_entry_cursor_hide(Evas_Object *entry);
EAPI void e_widget_entry_on_change_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
EAPI void e_widget_entry_password_set(Evas_Object *obj, int pw);
#endif
#endif