From 74547883dfc4c9267ed87ab65b3a8d3393e250f5 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Mon, 24 May 2010 12:27:10 +0000 Subject: [PATCH] added F1, F2 bindings for name/date sorting in files plugin SVN revision: 49181 --- src/modules/everything-files/e_mod_main.c | 85 +++++++++++++++++------ src/modules/everything/evry.c | 7 +- 2 files changed, 66 insertions(+), 26 deletions(-) diff --git a/src/modules/everything-files/e_mod_main.c b/src/modules/everything-files/e_mod_main.c index f9e73700a..79128aefe 100644 --- a/src/modules/everything-files/e_mod_main.c +++ b/src/modules/everything-files/e_mod_main.c @@ -1286,41 +1286,78 @@ _file_copy_action(Evry_Action *act) return 0; } -static int -_file_sort_action(Evry_Action *act) +static void +_sort_by_date(Plugin *p) { Eina_List *l; Evry_Item_File *file; struct stat s; + EINA_LIST_FOREACH(p->files, l, file) + { + if (file->modified) + continue; + + if (lstat(file->path, &s) == 0) + file->modified = s.st_mtime; + + EVRY_ITEM(file)->usage = -1; + } + + p->files = eina_list_sort(p->files, -1, _cb_sort_date); + _append_files(p); + + EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD); + +} +static void +_sort_by_name(Plugin *p) +{ + Eina_List *l; + Evry_Item *it; + + EINA_LIST_FOREACH(p->files, l, it) + it->usage = 0; + + p->files = eina_list_sort(p->files, -1, _cb_sort); + _append_files(p); + + EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD); + +} + +static int +_file_sort_action(Evry_Action *act) +{ + GET_PLUGIN(p, act->it1.item); + if (!p) return 0; + if (EVRY_ITEM_DATA_INT_GET(act) == ACT_SORT_DATE) { - GET_PLUGIN(p, act->it1.item); - if (!p) return 0; - - EINA_LIST_FOREACH(p->files, l, file) - { - if (file->modified) - continue; - - if (lstat(file->path, &s) == 0) - file->modified = s.st_mtime; - } - - p->files = eina_list_sort(p->files, -1, _cb_sort_date); - _append_files(p); - - EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD); + _sort_by_date(p); } else { - GET_PLUGIN(p, act->it1.item); - if (!p) return 0; + _sort_by_name(p); + } - p->files = eina_list_sort(p->files, -1, _cb_sort); - _append_files(p); + return 0; +} - EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD); +static int +_cb_key_down(Evry_Plugin *plugin, const Ecore_Event_Key *ev) +{ + GET_PLUGIN(p, plugin); + + if (!strcmp(ev->key, "F1")) + { + _sort_by_name(p); + return 1; + } + if (!strcmp(ev->key, "F2")) + { + _sort_by_date(p); + return 1; } return 0; @@ -1390,6 +1427,7 @@ _plugins_init(const Evry_API *api) PLUGIN_NEW(N_("Files"), _module_icon, _begin, _finish, _fetch, _browse); p->input_type = EVRY_TYPE_FILE; + p->cb_key_down = &_cb_key_down; p->actions = eina_list_append(p->actions, act_sort_date); p->actions = eina_list_append(p->actions, act_sort_name); if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 2)) @@ -1397,6 +1435,7 @@ _plugins_init(const Evry_API *api) PLUGIN_NEW(N_("Files"), _module_icon, _begin, _finish, _fetch, _browse); + p->cb_key_down = &_cb_key_down; p->actions = eina_list_append(p->actions, act_sort_date); p->actions = eina_list_append(p->actions, act_sort_name); evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 2); diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c index 56999cd66..754bac45a 100644 --- a/src/modules/everything/evry.c +++ b/src/modules/everything/evry.c @@ -96,9 +96,10 @@ _evry_aggregator_fetch(Evry_Selector *sel, const char *input) if ((sel->aggregator->fetch(sel->aggregator, input)) && (!eina_list_data_find(s->cur_plugins, sel->aggregator))) - - s->cur_plugins = eina_list_prepend(s->cur_plugins, sel->aggregator); - + { + s->cur_plugins = eina_list_prepend(s->cur_plugins, sel->aggregator); + } + sel->aggregator->state = s; return 1;