Enlightenment CVS committal
Author : raster
Project : e17
Module : apps/e
Dir : e17/apps/e/src/bin
Modified Files:
e_int_config_desklock.c
Log Message:
desklock uses fm2 now too
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_desklock.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- e_int_config_desklock.c 23 Aug 2006 03:39:02 -0000 1.31
+++ e_int_config_desklock.c 27 Aug 2006 05:55:06 -0000 1.32
@@ -44,6 +44,14 @@
{
E_Config_Dialog *cfd;
+ Evas_Object *o_frame;
+ Evas_Object *o_fm;
+ Evas_Object *o_up_button;
+ Evas_Object *o_preview;
+ Evas_Object *o_personal;
+ Evas_Object *o_system;
+ int fmdir;
+
char *desklock_passwd;
char *desklock_passwd_cp;
int show_password; // local
@@ -68,7 +76,7 @@
struct {
Evas_Object *passwd_field;
- Evas_Object *bg_list;
+// Evas_Object *bg_list;
Evas_Object *show_passwd_check;
@@ -105,9 +113,139 @@
return cfd;
}
+
+static void
+_cb_button_up(void *data1, void *data2)
+{
+ E_Config_Dialog_Data *cfdata;
+
+ cfdata = data1;
+ if (cfdata->o_fm)
+ e_fm2_parent_go(cfdata->o_fm);
+ if (cfdata->o_frame)
+ e_widget_scrollframe_child_pos_set(cfdata->o_frame, 0, 0);
+}
+
+static void
+_cb_files_changed(void *data, Evas_Object *obj, void *event_info)
+{
+ E_Config_Dialog_Data *cfdata;
+
+ cfdata = data;
+ if (!cfdata->o_fm) return;
+ if (!e_fm2_has_parent_get(cfdata->o_fm))
+ {
+ if (cfdata->o_up_button)
+ e_widget_disabled_set(cfdata->o_up_button, 1);
+ }
+ else
+ {
+ if (cfdata->o_up_button)
+ e_widget_disabled_set(cfdata->o_up_button, 0);
+ }
+ if (cfdata->o_frame)
+ e_widget_scrollframe_child_pos_set(cfdata->o_frame, 0, 0);
+}
+
+static void
+_cb_files_selection_change(void *data, Evas_Object *obj, void *event_info)
+{
+ E_Config_Dialog_Data *cfdata;
+ Evas_List *selected;
+ E_Fm2_Icon_Info *ici;
+ const char *realpath;
+ char buf[4096];
+
+ cfdata = data;
+ if (!cfdata->o_fm) return;
+ selected = e_fm2_selected_list_get(cfdata->o_fm);
+ if (!selected) return;
+ ici = selected->data;
+ realpath = e_fm2_real_path_get(cfdata->o_fm);
+ if (!strcmp(realpath, "/"))
+ snprintf(buf, sizeof(buf), "/%s", ici->file);
+ else
+ snprintf(buf, sizeof(buf), "%s/%s", realpath, ici->file);
+ evas_list_free(selected);
+ if (ecore_file_is_dir(buf)) return;
+ E_FREE(cfdata->bg);
+ cfdata->bg = strdup(buf);
+ if (cfdata->o_preview)
+ e_widget_preview_edje_set(cfdata->o_preview, buf, "e/desktop/background");
+ if (cfdata->o_frame)
+ e_widget_change(cfdata->o_frame);
+}
+
static void
-_fill_desklock_data(E_Config_Dialog_Data *cfdata)
+_cb_files_selected(void *data, Evas_Object *obj, void *event_info)
{
+ E_Config_Dialog_Data *cfdata;
+
+ cfdata = data;
+ printf("SEL\n");
+}
+
+static void
+_cb_files_files_changed(void *data, Evas_Object *obj, void *event_info)
+{
+ E_Config_Dialog_Data *cfdata;
+ const char *p;
+ char *homedir, buf[4096];
+
+ cfdata = data;
+ if (!cfdata->bg) return;
+ if (!cfdata->o_fm) return;
+ p = e_fm2_real_path_get(cfdata->o_fm);
+ if (p)
+ {
+ if (strncmp(p, cfdata->bg, strlen(p))) return;
+ }
+ homedir = e_user_homedir_get();
+ if (!homedir) return;
+ snprintf(buf, sizeof(buf), "%s/.e/e/backgrounds", homedir);
+ free(homedir);
+ if (!p) return;
+ if (!strncmp(cfdata->bg, buf, strlen(buf)))
+ p = cfdata->bg + strlen(buf) + 1;
+ else
+ {
+ snprintf(buf, sizeof(buf), "%s/data/backgrounds", e_prefix_data_get());
+ if (!strncmp(cfdata->bg, buf, strlen(buf)))
+ p = cfdata->bg + strlen(buf) + 1;
+ else
+ p = cfdata->bg;
+ }
+ e_fm2_select_set(cfdata->o_fm, p, 1);
+ e_fm2_file_show(cfdata->o_fm, p);
+}
+
+static void
+_cb_dir(void *data, Evas_Object *obj, void *event_info)
+{
+ E_Config_Dialog_Data *cfdata;
+ char path[4096], *homedir;
+
+ cfdata = data;
+ if (cfdata->fmdir == 1)
+ {
+ snprintf(path, sizeof(path), "%s/data/backgrounds",
e_prefix_data_get());
+ }
+ else
+ {
+ homedir = e_user_homedir_get();
+ snprintf(path, sizeof(path), "%s/.e/e/backgrounds", homedir);
+ free(homedir);
+ }
+ e_fm2_path_set(cfdata->o_fm, path, "/");
+}
+
+
+
+static void
+_fill_data(E_Config_Dialog_Data *cfdata)
+{
+ char path[4096], *homedir;
+
// we have to read it from e_config->...
if (e_config->desklock_personal_passwd)
{
@@ -148,6 +286,27 @@
else
cfdata->bg = strdup(e_config->desklock_background);
+ if (cfdata->bg[0] != '/')
+ {
+ homedir = e_user_homedir_get();
+ snprintf(path, sizeof(path), "%s/.e/e/backgrounds/%s", homedir,
cfdata->bg);
+ if (ecore_file_exists(path))
+ {
+ E_FREE(cfdata->bg);
+ cfdata->bg = strdup(path);
+ }
+ else
+ {
+ snprintf(path, sizeof(path), "%s/data/backgrounds/%s",
e_prefix_data_get(), cfdata->bg);
+ if (ecore_file_exists(path))
+ {
+ E_FREE(cfdata->bg);
+ cfdata->bg = strdup(path);
+ }
+ }
+ free(homedir);
+ }
+
#ifdef HAVE_PAM
cfdata->auth_method = e_config->desklock_auth_method;
#endif
@@ -165,7 +324,7 @@
cfdata->desklock_passwd_cp = strdup("");
cfdata->cfd = cfd;
- _fill_desklock_data(cfdata);
+ _fill_data(cfdata);
return cfdata;
}
@@ -213,7 +372,6 @@
Evas_Object *oc;
#endif
- //_fill_desklock_data(cfdata);
o = e_widget_list_add(evas, 0, 0);
/*
@@ -330,36 +488,102 @@
static Evas_Object *
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
E_Config_Dialog_Data *cfdata)
{
- Evas_Object *of, *ob, *oc;
+ Evas_Object *ob, *oc;
+ Evas_Object *o, *ot, *of, *il, *ol;
+ char path[4096], *homedir;
+ const char *f;
+ E_Fm2_Config fmc;
+ E_Zone *z;
E_Radio_Group *rg;
- Evas_Object *ot;
#ifdef HAVE_PAM
E_Radio_Group *rg_auth;
#endif
+
+ homedir = e_user_homedir_get();
+ if (!homedir) return NULL;
+
+ z = e_zone_current_get(cfd->con);
cfdata->evas = evas;
ot = e_widget_table_add(evas, 0);
+ ol = e_widget_table_add(evas, 0);
+ il = e_widget_table_add(evas, 1);
- /* start: bkg list */
- cfdata->gui.bg_list = e_widget_ilist_add(evas, BG_LIST_ICON_SIZE_W,
- BG_LIST_ICON_SIZE_H, &(cfdata->bg));
+ rg = e_widget_radio_group_new(&(cfdata->fmdir));
+ o = e_widget_radio_add(evas, _("Personal"), 0, rg);
+ cfdata->o_personal = o;
+ evas_object_smart_callback_add(o, "changed",
+ _cb_dir, cfdata);
+ e_widget_table_object_append(il, o, 0, 0, 1, 1, 1, 1, 0, 0);
+ o = e_widget_radio_add(evas, _("System"), 1, rg);
+ cfdata->o_system = o;
+ evas_object_smart_callback_add(o, "changed",
+ _cb_dir, cfdata);
+ e_widget_table_object_append(il, o, 1, 0, 1, 1, 1, 1, 0, 0);
+
+ e_widget_table_object_append(ol, il, 0, 0, 1, 1, 0, 0, 0, 0);
+
+ o = e_widget_button_add(evas, _("Go up a Directory"), "widget/up_dir",
+ _cb_button_up, cfdata, NULL);
+ cfdata->o_up_button = o;
+ e_widget_table_object_append(ol, o, 0, 1, 1, 1, 0, 0, 0, 0);
- e_widget_ilist_selector_set(cfdata->gui.bg_list, 1);
- e_widget_min_size_set(cfdata->gui.bg_list, 180, 200);
-
- _load_bgs(cfdata);
+ if (cfdata->fmdir == 1)
+ snprintf(path, sizeof(path), "%s/data/backgrounds", e_prefix_data_get());
+ else
+ snprintf(path, sizeof(path), "%s/.e/e/backgrounds", homedir);
- e_widget_focus_set(cfdata->gui.bg_list, 1);
- e_widget_ilist_go(cfdata->gui.bg_list);
+ o = e_fm2_add(evas);
+ cfdata->o_fm = o;
+ memset(&fmc, 0, sizeof(E_Fm2_Config));
+ fmc.view.mode = E_FM2_VIEW_MODE_LIST;
+ fmc.view.open_dirs_in_place = 1;
+ fmc.view.selector = 1;
+ fmc.view.single_click = 0;
+ fmc.view.no_subdir_jump = 0;
+ fmc.icon.list.w = 48;
+ fmc.icon.list.h = 48;
+ fmc.icon.fixed.w = 1;
+ fmc.icon.fixed.h = 1;
+ fmc.icon.extension.show = 0;
+ fmc.icon.key_hint = NULL;
+ fmc.list.sort.no_case = 1;
+ fmc.list.sort.dirs.first = 0;
+ fmc.list.sort.dirs.last = 1;
+ fmc.selection.single = 1;
+ fmc.selection.windows_modifiers = 0;
+ e_fm2_config_set(o, &fmc);
+ evas_object_smart_callback_add(o, "dir_changed",
+ _cb_files_changed, cfdata);
+ evas_object_smart_callback_add(o, "selection_change",
+ _cb_files_selection_change, cfdata);
+ evas_object_smart_callback_add(o, "selected",
+ _cb_files_selected, cfdata);
+ evas_object_smart_callback_add(o, "changed",
+ _cb_files_files_changed, cfdata);
+ e_fm2_path_set(o, path, "/");
+
+ of = e_widget_scrollframe_pan_add(evas, o,
+ e_fm2_pan_set,
+ e_fm2_pan_get,
+ e_fm2_pan_max_get,
+ e_fm2_pan_child_size_get);
+ cfdata->o_frame = of;
+ e_widget_min_size_set(of, 160, 160);
+ e_widget_table_object_append(ol, of, 0, 2, 1, 1, 1, 1, 1, 1);
+ e_widget_table_object_append(ot, ol, 0, 0, 1, 2, 1, 1, 1, 1);
- e_widget_table_object_append(ot, cfdata->gui.bg_list, 0, 0, 1, 2, 1, 1, 1,
1);
- /* end: bkg list */
+ of = e_widget_list_add(evas, 0, 0);
- /* start: Desk Lock Window Preview */
+ o = e_widget_preview_add(evas, 320, (320 * z->h) / z->w);
+ cfdata->o_preview = o;
+ if (cfdata->bg)
+ f = cfdata->bg;
+ e_widget_preview_edje_set(o, f, "e/desktop/background");
+ e_widget_list_object_append(of, o, 1, 0, 0.5);
- e_widget_table_object_append(ot, cfdata->preview_image, 1, 0, 1, 1, 1, 1,
1, 1);
- /* end: Desk Lock Window Preview */
+ e_widget_table_object_append(ot, of, 1, 0, 1, 1, 1, 1, 1, 1);
/* start: login box options */
@@ -473,6 +697,7 @@
e_widget_table_object_append(ot, of, 1, 2, 1, 1 ,1 ,1 ,1 ,1);
#endif
+ free(homedir);
e_dialog_resizable_set(cfd->dia, 0);
return ot;
}
@@ -508,170 +733,6 @@
}
}
return num;
-}
-
-static void
-_load_bgs(E_Config_Dialog_Data *cfdata)
-{
- E_Config_Dialog *cfd;
- Evas_Object *o, *ic, *im;
- Ecore_Evas *eebuf;
- Evas *evasbuf;
- Evas_List *bg_dirs, *bg;
- const char *f, *f1;
-
- if (!cfdata || !cfdata->gui.bg_list)
- return;
-
- cfd = cfdata->cfd;
- eebuf = ecore_evas_buffer_new(1, 1);
- evasbuf = ecore_evas_get(eebuf);
-
- ic = NULL;
- /* Desklock background */
- o = edje_object_add(evasbuf);
- f1 = e_theme_edje_file_get("base/theme/desklock", "e/desklock/background");
-
- e_widget_ilist_header_append(cfdata->gui.bg_list, NULL, _("Theme
Backgrounds"));
- if (edje_object_file_set(o, f1, "e/desklock/background"))
- {
- ic = e_thumb_icon_add(cfd->dia->win->evas);
- e_thumb_icon_file_set(ic, f1, "e/desktop/background");
- e_thumb_icon_size_set(ic, 64,
- (64 *
e_zone_current_get(cfd->dia->win->container)->h) /
- e_zone_current_get(cfd->dia->win->container)->w);
- e_thumb_icon_begin(ic);
- e_widget_ilist_append(cfdata->gui.bg_list, ic, _("Theme Desklock
Background"),
- _ibg_list_cb_bg_selected, cfdata,
DEF_DESKLOCK_BACKGROUND);
- }
-
- if ((!e_config->desklock_background) ||
- (!strcmp(e_config->desklock_background, DEF_DESKLOCK_BACKGROUND)))
- e_widget_ilist_selected_set(cfdata->gui.bg_list, 1);
-
- im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H);
- e_widget_preview_edje_set(im, f1, "e/desklock/background");
-
- evas_object_del(o);
- ecore_evas_free(eebuf);
- /* end: Desklock background */
-
- /* Theme Background */
- eebuf = ecore_evas_buffer_new(1, 1);
- evasbuf = ecore_evas_get(eebuf);
-
- o = edje_object_add(evasbuf);
- f = e_theme_edje_file_get("base/theme/backgrounds", "e/desktop/background");
- ic = NULL;
- if (edje_object_file_set(o, f, "e/desktop/background"))
- {
- ic = e_thumb_icon_add(cfd->dia->win->evas);
- e_thumb_icon_file_set(ic, f, "e/desktop/background");
- e_thumb_icon_size_set(ic, 64,
- (64 *
e_zone_current_get(cfd->dia->win->container)->h) /
- e_zone_current_get(cfd->dia->win->container)->w);
- e_thumb_icon_begin(ic);
- e_widget_ilist_append(cfdata->gui.bg_list, ic, _("Theme Background"),
- _ibg_list_cb_bg_selected, cfdata,
DEF_THEME_BACKGROUND);
- }
-
- if ((e_config->desklock_background) &&
- (!strcmp(e_config->desklock_background, DEF_THEME_BACKGROUND)))
- {
- e_widget_ilist_selected_set(cfdata->gui.bg_list, 2);
- evas_object_del(im);
- im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H);
- e_widget_preview_edje_set(im, f, "e/desktop/background");
- }
-
- evas_object_del(o);
- ecore_evas_free(eebuf);
-
- e_widget_ilist_header_append(cfdata->gui.bg_list, NULL, _("Personal"));
- bg_dirs = e_path_dir_list_get(path_backgrounds);
- for (bg = bg_dirs; bg; bg = bg->next)
- {
- E_Path_Dir *d;
-
- d = bg->data;
- if (ecore_file_is_dir(d->dir))
- {
- char *bg_file;
- Ecore_List *bgs;
- int i = e_widget_ilist_count(cfdata->gui.bg_list);
-
- bgs = ecore_file_ls(d->dir);
- if (!bgs) continue;
- while ((bg_file = ecore_list_next(bgs)))
- {
- char full_path[4096];
-
- snprintf(full_path, sizeof(full_path), "%s/%s", d->dir,
bg_file);
- if (ecore_file_is_dir(full_path)) continue;
- if (!e_util_edje_collection_exists(full_path,
"e/desktop/background")) continue;
-
- ic = e_thumb_icon_add(cfd->dia->win->evas);
- e_thumb_icon_file_set(ic, full_path, "e/desktop/background");
- e_thumb_icon_size_set(ic, 64,
- (64 *
e_zone_current_get(cfd->dia->win->container)->h) /
-
e_zone_current_get(cfd->dia->win->container)->w);
- e_thumb_icon_begin(ic);
- e_widget_ilist_append(cfdata->gui.bg_list, ic,
ecore_file_strip_ext(bg_file),
- _ibg_list_cb_bg_selected, cfdata,
full_path);
-
- if ((e_config->desklock_background) &&
- (!strcmp(e_config->desklock_background, full_path)))
- {
- e_widget_ilist_selected_set(cfdata->gui.bg_list, i);
- evas_object_del(im);
- im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W,
BG_PREVIEW_H);
- e_widget_preview_edje_set(im, full_path,
"e/desktop/background");
- }
- i++;
- }
- free(bg_file);
- ecore_list_destroy(bgs);
- }
- free(d);
- }
- evas_list_free(bg);
- evas_list_free(bg_dirs);
-
- cfdata->preview_image = im;
-}
-
-static void
-_ibg_list_cb_bg_selected(void *data)
-{
- E_Config_Dialog_Data *cfdata;
-
- cfdata = data;
- if (cfdata->bg[0])
- {
- if (!strcmp(cfdata->bg, DEF_DESKLOCK_BACKGROUND))
- {
- const char *theme;
-
- theme = e_theme_edje_file_get("base/theme/desklock",
"e/desklock/background");
- e_widget_preview_edje_set(cfdata->preview_image, theme,
"e/desklock/background");
- }
- else if (!strcmp(cfdata->bg, DEF_THEME_BACKGROUND))
- {
- const char *theme;
-
- theme = e_theme_edje_file_get("base/theme/backgrounds",
"e/desktop/background");
- e_widget_preview_edje_set(cfdata->preview_image, theme,
"e/desktop/background");
- }
- else
- e_widget_preview_edje_set(cfdata->preview_image, cfdata->bg,
"e/desktop/background");
- }
- else
- {
- const char *theme;
-
- theme = e_theme_edje_file_get("base/theme/desklock",
"e/desklock/background");
- e_widget_preview_edje_set(cfdata->preview_image, theme,
"e/desklock/background");
- }
}
static void
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs