another user request: sorting by size in efm

SVN revision: 76124
This commit is contained in:
Mike Blumenkrantz 2012-09-04 10:47:39 +00:00
parent 22de6ede9b
commit 1fca248c55
6 changed files with 42 additions and 1 deletions

View File

@ -7710,6 +7710,21 @@ _e_fm2_cb_icon_sort(const void *data1, const void *data2)
else if (f1) return 1; else if (f1) return 1;
else if (f2) return -1; else if (f2) return -1;
} }
if (ic1->sd->config->list.sort.size)
{
if (ic1->info.link)
{
if (!ic2->info.link) return 1;
}
else
{
if (ic2->info.link) return -1;
if (ic1->info.statinfo.st_size > ic2->info.statinfo.st_size)
return -1;
else if (ic1->info.statinfo.st_size < ic2->info.statinfo.st_size)
return 1;
}
}
if (ic1->sd->config->list.sort.no_case) if (ic1->sd->config->list.sort.no_case)
return strcasecmp(l1, l2); return strcasecmp(l1, l2);
return strcmp(l1, l2); return strcmp(l1, l2);
@ -8661,6 +8676,15 @@ _e_fm2_view_menu_sorting_change_case(void *data, E_Menu *m __UNUSED__, E_Menu_It
_e_fm2_refresh(sd, NULL, NULL); _e_fm2_refresh(sd, NULL, NULL);
} }
static void
_e_fm2_view_menu_sorting_change_size(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi)
{
E_Fm2_Smart_Data *sd = data;
sd->config->list.sort.size = mi->toggle;
_e_fm2_refresh(sd, NULL, NULL);
}
static void static void
_e_fm2_view_menu_sorting_change_extension(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi) _e_fm2_view_menu_sorting_change_extension(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi)
{ {
@ -8711,6 +8735,12 @@ _e_fm2_view_menu_sorting_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi)
e_menu_item_toggle_set(mi, sd->config->list.sort.extension); e_menu_item_toggle_set(mi, sd->config->list.sort.extension);
e_menu_item_callback_set(mi, _e_fm2_view_menu_sorting_change_extension, sd); e_menu_item_callback_set(mi, _e_fm2_view_menu_sorting_change_extension, sd);
mi = e_menu_item_new(subm);
e_menu_item_label_set(mi, _("Sort By Size"));
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, sd->config->list.sort.size);
e_menu_item_callback_set(mi, _e_fm2_view_menu_sorting_change_size, sd);
mi = e_menu_item_new(subm); mi = e_menu_item_new(subm);
e_menu_item_separator_set(mi, 1); e_menu_item_separator_set(mi, 1);

View File

@ -96,6 +96,7 @@ struct _E_Fm2_Config
struct struct
{ {
Eina_Bool no_case : 1; Eina_Bool no_case : 1;
Eina_Bool size : 1;
Eina_Bool extension : 1; Eina_Bool extension : 1;
struct struct
{ {

View File

@ -1305,6 +1305,7 @@ _e_fwin_config_set(E_Fwin_Page *page)
fmc.icon.extension.show = fileman_config->icon.extension.show; fmc.icon.extension.show = fileman_config->icon.extension.show;
fmc.list.sort.no_case = fileman_config->list.sort.no_case; fmc.list.sort.no_case = fileman_config->list.sort.no_case;
fmc.list.sort.extension = fileman_config->list.sort.extension; fmc.list.sort.extension = fileman_config->list.sort.extension;
fmc.list.sort.size = fileman_config->list.sort.size;
fmc.list.sort.dirs.first = fileman_config->list.sort.dirs.first; fmc.list.sort.dirs.first = fileman_config->list.sort.dirs.first;
fmc.list.sort.dirs.last = fileman_config->list.sort.dirs.last; fmc.list.sort.dirs.last = fileman_config->list.sort.dirs.last;
fmc.selection.single = fileman_config->selection.single; fmc.selection.single = fileman_config->selection.single;

View File

@ -52,6 +52,7 @@ struct _E_Config_Dialog_Data
{ {
int case_sen; int case_sen;
int extension; int extension;
int size;
struct struct
{ {
int first, last; int first, last;
@ -150,6 +151,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->list.sort.dirs.first = fileman_config->list.sort.dirs.first; cfdata->list.sort.dirs.first = fileman_config->list.sort.dirs.first;
cfdata->list.sort.case_sen = !(fileman_config->list.sort.no_case); cfdata->list.sort.case_sen = !(fileman_config->list.sort.no_case);
cfdata->list.sort.extension = fileman_config->list.sort.extension; cfdata->list.sort.extension = fileman_config->list.sort.extension;
cfdata->list.sort.size = fileman_config->list.sort.size;
cfdata->dbus.desktop = e_config->device_desktop; cfdata->dbus.desktop = e_config->device_desktop;
cfdata->dbus.auto_mount = e_config->device_auto_mount; cfdata->dbus.auto_mount = e_config->device_auto_mount;
cfdata->dbus.auto_open = e_config->device_auto_open; cfdata->dbus.auto_open = e_config->device_auto_open;
@ -191,6 +193,7 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__,
fileman_config->list.sort.dirs.first = cfdata->list.sort.dirs.first; fileman_config->list.sort.dirs.first = cfdata->list.sort.dirs.first;
fileman_config->list.sort.dirs.last = !(cfdata->list.sort.dirs.first); fileman_config->list.sort.dirs.last = !(cfdata->list.sort.dirs.first);
fileman_config->list.sort.extension = cfdata->list.sort.extension; fileman_config->list.sort.extension = cfdata->list.sort.extension;
fileman_config->list.sort.size = cfdata->list.sort.size;
fileman_config->list.sort.no_case = !(cfdata->list.sort.case_sen); fileman_config->list.sort.no_case = !(cfdata->list.sort.case_sen);
e_config->device_desktop = cfdata->dbus.desktop; e_config->device_desktop = cfdata->dbus.desktop;
@ -228,6 +231,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__,
(fileman_config->icon.icon.h != cfdata->icon.icon.w) || (fileman_config->icon.icon.h != cfdata->icon.icon.w) ||
(fileman_config->list.sort.dirs.first != cfdata->list.sort.dirs.first) || (fileman_config->list.sort.dirs.first != cfdata->list.sort.dirs.first) ||
(fileman_config->list.sort.dirs.last != !(cfdata->list.sort.dirs.first)) || (fileman_config->list.sort.dirs.last != !(cfdata->list.sort.dirs.first)) ||
(fileman_config->list.sort.size != cfdata->list.sort.size) ||
(fileman_config->list.sort.extension != cfdata->list.sort.extension) || (fileman_config->list.sort.extension != cfdata->list.sort.extension) ||
(fileman_config->list.sort.no_case != !(cfdata->list.sort.case_sen)) || (fileman_config->list.sort.no_case != !(cfdata->list.sort.case_sen)) ||
(fileman_config->tooltip.delay != !(cfdata->tooltip.delay)) || (fileman_config->tooltip.delay != !(cfdata->tooltip.delay)) ||
@ -321,6 +325,9 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__,
ob = e_widget_check_add(evas, _("Sort By Extension"), ob = e_widget_check_add(evas, _("Sort By Extension"),
&(cfdata->list.sort.extension)); &(cfdata->list.sort.extension));
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Sort By Size"),
&(cfdata->list.sort.size));
e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Use Single Click"), ob = e_widget_check_add(evas, _("Use Single Click"),
&(cfdata->view.single_click)); &(cfdata->view.single_click));
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);

View File

@ -689,6 +689,7 @@ _e_mod_fileman_config_load(void)
E_CONFIG_VAL(D, T, icon.extension.show, UCHAR); E_CONFIG_VAL(D, T, icon.extension.show, UCHAR);
E_CONFIG_VAL(D, T, list.sort.no_case, UCHAR); E_CONFIG_VAL(D, T, list.sort.no_case, UCHAR);
E_CONFIG_VAL(D, T, list.sort.extension, UCHAR); E_CONFIG_VAL(D, T, list.sort.extension, UCHAR);
E_CONFIG_VAL(D, T, list.sort.size, UCHAR);
E_CONFIG_VAL(D, T, list.sort.dirs.first, UCHAR); E_CONFIG_VAL(D, T, list.sort.dirs.first, UCHAR);
E_CONFIG_VAL(D, T, list.sort.dirs.last, UCHAR); E_CONFIG_VAL(D, T, list.sort.dirs.last, UCHAR);
E_CONFIG_VAL(D, T, selection.single, UCHAR); E_CONFIG_VAL(D, T, selection.single, UCHAR);

View File

@ -4,7 +4,7 @@
/* Increment for Major Changes */ /* Increment for Major Changes */
#define MOD_CONFIG_FILE_EPOCH 0x0001 #define MOD_CONFIG_FILE_EPOCH 0x0001
/* Increment for Minor Changes (ie: user doesn't need a new config) */ /* Increment for Minor Changes (ie: user doesn't need a new config) */
#define MOD_CONFIG_FILE_GENERATION 0x0110 #define MOD_CONFIG_FILE_GENERATION 0x0111
#define MOD_CONFIG_FILE_VERSION ((MOD_CONFIG_FILE_EPOCH << 16) | MOD_CONFIG_FILE_GENERATION) #define MOD_CONFIG_FILE_VERSION ((MOD_CONFIG_FILE_EPOCH << 16) | MOD_CONFIG_FILE_GENERATION)
typedef struct _Config Config; typedef struct _Config Config;
@ -77,6 +77,7 @@ struct _Config
{ {
unsigned char no_case; unsigned char no_case;
unsigned char extension; unsigned char extension;
unsigned char size;
struct struct
{ {
unsigned char first; unsigned char first;