Fix the FIXMEs. This is probably finished for now, the TODO requires

more support elsewhere to be written first.


SVN revision: 25771
This commit is contained in:
David Walter Seikel 2006-09-12 12:47:18 +00:00
parent 47a3221188
commit 6b5d955256
1 changed files with 39 additions and 22 deletions

View File

@ -7,7 +7,7 @@
#define MOD_ENABLED 1 #define MOD_ENABLED 1
/* TODO: /* TODO:
* Filtering/sorting of left side to make managing thousands of apps easy. * More filtering/sorting of left side to make managing thousands of apps easy.
* *
* These things require support from e_fm - * These things require support from e_fm -
* DND from left side to righ side, and to ibar etc. * DND from left side to righ side, and to ibar etc.
@ -27,8 +27,8 @@ struct _E_Config_Dialog_Data
{ {
E_Config_Dialog *cfd; E_Config_Dialog *cfd;
E_Fm2_Icon_Info *info; E_Fm2_Icon_Info *info;
char *selected;
char path_all[4096], path_everything[4096], path[4096], *homedir; char path_all[4096], path_everything[4096], path[4096], *homedir;
int state;
int sorted; int sorted;
struct { struct {
Evas_Object *o_fm_all; Evas_Object *o_fm_all;
@ -70,7 +70,6 @@ e_int_config_apps_once(E_Container *con, const char *label, int (*func) (void *d
if (func) if (func)
{ {
/* FIXME: figure out some way of freeing this once we have finished with it. */
once = E_NEW(struct _E_Config_Once, 1); once = E_NEW(struct _E_Config_Once, 1);
if (once) if (once)
{ {
@ -119,10 +118,11 @@ _create_data(E_Config_Dialog *cfd)
static void static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
if (cfdata->selected) free(cfdata->selected);
if (cfdata->cfd->data) free(cfdata->cfd->data);
free(cfdata); free(cfdata);
} }
static void static void
_cb_button_up(void *data1, void *data2) _cb_button_up(void *data1, void *data2)
{ {
@ -170,6 +170,8 @@ _cb_files_dir_changed(void *data, Evas_Object *obj, void *event_info)
e_widget_disabled_set(cfdata->gui.o_move_down_button, 1); e_widget_disabled_set(cfdata->gui.o_move_down_button, 1);
if (cfdata->gui.o_frame) if (cfdata->gui.o_frame)
e_widget_scrollframe_child_pos_set(cfdata->gui.o_frame, 0, 0); e_widget_scrollframe_child_pos_set(cfdata->gui.o_frame, 0, 0);
if (cfdata->selected) free(cfdata->selected);
cfdata->selected = NULL;
} }
static void static void
@ -194,22 +196,30 @@ _cb_files_dir_changed_all(void *data, Evas_Object *obj, void *event_info)
} }
static void static void
_cb_files_sel_changed(void *data, Evas_Object *obj, void *event_info) _cb_files_selection_change(void *data, Evas_Object *obj, void *event_info)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
Evas_List *selected;
E_Fm2_Icon_Info *ici = NULL;
const char *realpath; const char *realpath;
char buf[4096]; char buf[4096];
cfdata = data; cfdata = data;
if (!cfdata->gui.o_fm) return; if (!cfdata->gui.o_fm) return;
selected = e_fm2_selected_list_get(cfdata->gui.o_fm);
if (selected) ici = selected->data;
realpath = e_fm2_real_path_get(cfdata->gui.o_fm); realpath = e_fm2_real_path_get(cfdata->gui.o_fm);
snprintf(buf, sizeof(buf), "%s/.order", realpath); snprintf(buf, sizeof(buf), "%s/.order", realpath);
if (cfdata->selected) free(cfdata->selected);
cfdata->selected = NULL;
if (ecore_file_exists(buf)) if (ecore_file_exists(buf))
{ {
if (cfdata->gui.o_move_up_button) if (cfdata->gui.o_move_up_button)
e_widget_disabled_set(cfdata->gui.o_move_up_button, 0); e_widget_disabled_set(cfdata->gui.o_move_up_button, 0);
if (cfdata->gui.o_move_down_button) if (cfdata->gui.o_move_down_button)
e_widget_disabled_set(cfdata->gui.o_move_down_button, 0); e_widget_disabled_set(cfdata->gui.o_move_down_button, 0);
if ((ici) && (ici->file))
cfdata->selected = strdup(ici->file);
} }
else else
{ {
@ -227,10 +237,21 @@ _cb_files_changed(void *data, Evas_Object *obj, void *event_info)
cfdata = data; cfdata = data;
if (!cfdata->gui.o_fm) return; if (!cfdata->gui.o_fm) return;
if (cfdata->gui.o_move_up_button) if (cfdata->selected)
e_widget_disabled_set(cfdata->gui.o_move_up_button, 1); {
if (cfdata->gui.o_move_down_button) if (cfdata->gui.o_move_up_button)
e_widget_disabled_set(cfdata->gui.o_move_down_button, 1); e_widget_disabled_set(cfdata->gui.o_move_up_button, 0);
if (cfdata->gui.o_move_down_button)
e_widget_disabled_set(cfdata->gui.o_move_down_button, 0);
e_fm2_select_set(cfdata->gui.o_fm, cfdata->selected, 1);
}
else
{
if (cfdata->gui.o_move_up_button)
e_widget_disabled_set(cfdata->gui.o_move_up_button, 1);
if (cfdata->gui.o_move_down_button)
e_widget_disabled_set(cfdata->gui.o_move_down_button, 1);
}
} }
static void static void
@ -261,7 +282,7 @@ _cb_button_create(void *data1, void *data2)
} }
static void static void
_cb_files_selected(void *data, Evas_Object *obj, void *event_info) _cb_files_selected_all(void *data, Evas_Object *obj, void *event_info)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
Evas_List *selected; Evas_List *selected;
@ -293,7 +314,7 @@ _cb_files_selected(void *data, Evas_Object *obj, void *event_info)
} }
static void static void
_cb_files_selection_change(void *data, Evas_Object *obj, void *event_info) _cb_files_selection_change_all(void *data, Evas_Object *obj, void *event_info)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
@ -302,7 +323,7 @@ _cb_files_selection_change(void *data, Evas_Object *obj, void *event_info)
} }
static void static void
_cb_files_files_changed(void *data, Evas_Object *obj, void *event_info) _cb_files_changed_all(void *data, Evas_Object *obj, void *event_info)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
@ -432,8 +453,6 @@ _cb_button_move_up(void *data1, void *data2)
evas_list_free(selected); evas_list_free(selected);
_move_file_up_in_order(realpath, ici->file); _move_file_up_in_order(realpath, ici->file);
e_fm2_refresh(cfdata->gui.o_fm); e_fm2_refresh(cfdata->gui.o_fm);
/* FIXME: This doesn't seem to work, maybe I need to call it in a callback after the refresh is done? */
e_fm2_select_set(cfdata->gui.o_fm, ici->file, 1);
} }
static void static void
@ -454,8 +473,6 @@ _cb_button_move_down(void *data1, void *data2)
evas_list_free(selected); evas_list_free(selected);
_move_file_down_in_order(realpath, ici->file); _move_file_down_in_order(realpath, ici->file);
e_fm2_refresh(cfdata->gui.o_fm); e_fm2_refresh(cfdata->gui.o_fm);
/* FIXME: This doesn't seem to work, maybe I need to call it in a callback after the refresh is done? */
e_fm2_select_set(cfdata->gui.o_fm, ici->file, 1);
} }
static void static void
@ -516,11 +533,11 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
evas_object_smart_callback_add(mt, "dir_changed", evas_object_smart_callback_add(mt, "dir_changed",
_cb_files_dir_changed_all, cfdata); _cb_files_dir_changed_all, cfdata);
evas_object_smart_callback_add(mt, "selected", evas_object_smart_callback_add(mt, "selected",
_cb_files_selected, cfdata); _cb_files_selected_all, cfdata);
evas_object_smart_callback_add(mt, "selection_change", evas_object_smart_callback_add(mt, "selection_change",
_cb_files_selection_change, cfdata); _cb_files_selection_change_all, cfdata);
evas_object_smart_callback_add(mt, "changed", evas_object_smart_callback_add(mt, "changed",
_cb_files_files_changed, cfdata); _cb_files_changed_all, cfdata);
e_fm2_icon_menu_start_extend_callback_set(mt, _cb_files_add_edited, cfdata); e_fm2_icon_menu_start_extend_callback_set(mt, _cb_files_add_edited, cfdata);
e_fm2_path_set(cfdata->gui.o_fm_all, cfdata->path_all, "/"); e_fm2_path_set(cfdata->gui.o_fm_all, cfdata->path_all, "/");
@ -603,7 +620,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
evas_object_smart_callback_add(mt, "dir_changed", evas_object_smart_callback_add(mt, "dir_changed",
_cb_files_dir_changed, cfdata); _cb_files_dir_changed, cfdata);
evas_object_smart_callback_add(mt, "selection_change", evas_object_smart_callback_add(mt, "selection_change",
_cb_files_sel_changed, cfdata); _cb_files_selection_change, cfdata);
evas_object_smart_callback_add(mt, "changed", evas_object_smart_callback_add(mt, "changed",
_cb_files_changed, cfdata); _cb_files_changed, cfdata);
e_fm2_path_set(cfdata->gui.o_fm, cfdata->path, "/"); e_fm2_path_set(cfdata->gui.o_fm, cfdata->path, "/");