Maybe we should deprecate the ecore_file_*() functions which are 
replaced by eina_file_*() functions? ecore_file_ls f.ex.

Sebastian

On 09/09/2014 10:17 PM, Eduardo Lima (Etrunko) wrote:
> etrunko pushed a commit to branch master.
>
> http://git.enlightenment.org/apps/rage.git/commit/?id=7c80b9a131b729bd244b40c194dc36bf24dde661
>
> commit 7c80b9a131b729bd244b40c194dc36bf24dde661
> Author: Eduardo Lima (Etrunko) <ebl...@gmail.com>
> Date:   Mon Aug 25 15:36:44 2014 -0300
>
>      dnd: Recurse into directories
>
>      Signed-off-by: Eduardo Lima (Etrunko) <eduardo.l...@intel.com>
> ---
>   AUTHORS       |  1 +
>   src/bin/dnd.c | 66 
> +++++++++++++++++++++++++++++++++++++++++++++++++++++------
>   2 files changed, 61 insertions(+), 6 deletions(-)
>
> diff --git a/AUTHORS b/AUTHORS
> index b9a9404..230cb46 100644
> --- a/AUTHORS
> +++ b/AUTHORS
> @@ -1 +1,2 @@
>   Carsten Haitzler <ras...@rasterman.com>
> +Eduardo Lima (Etrunko) <ebl...@gmail.com>
> diff --git a/src/bin/dnd.c b/src/bin/dnd.c
> index f8faba4..1a8b9d2 100644
> --- a/src/bin/dnd.c
> +++ b/src/bin/dnd.c
> @@ -60,6 +60,39 @@ _escape_parse(const char *str)
>      return dest;
>   }
>
> +static Eina_Bool
> +_recurse_dir(Evas_Object *win, const char *path)
> +{
> +   Eina_Bool ret = EINA_FALSE;
> +   Eina_List *ls, *l;
> +   char *p, *escape;
> +   const char *full;
> +
> +   ls = ecore_file_ls(path);
> +   EINA_LIST_FOREACH(ls, l, p)
> +     {
> +        escape = _escape_parse(p);
> +        full = eina_stringshare_printf("%s/%s", path, escape);
> +        free(escape);
> +        if (ecore_file_is_dir(full))
> +          {
> +             ret = _recurse_dir(win, full);
> +             eina_stringshare_del(full);
> +             continue;
> +          }
> +
> +        printf("inserting '%s'\n", full);
> +        win_video_insert(win, full);
> +        eina_stringshare_del(full);
> +        ret = EINA_TRUE;
> +     }
> +
> +   EINA_LIST_FREE(ls, p)
> +     free(p);
> +
> +   return ret;
> +}
> +
>   Eina_Bool
>   _cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev)
>   {
> @@ -94,8 +127,15 @@ _cb_drop(void *data, Evas_Object *o EINA_UNUSED, 
> Elm_Selection_Data *ev)
>                               tt = _escape_parse(tb);
>                               if (tt)
>                                 {
> -                                 win_video_insert(win, tt);
> -                                 inserted = EINA_TRUE;
> +                                 if (ecore_file_is_dir(tt))
> +                                   {
> +                                      inserted = _recurse_dir(win, tt);
> +                                   }
> +                                 else
> +                                   {
> +                                      win_video_insert(win, tt);
> +                                      inserted = EINA_TRUE;
> +                                   }
>                                    free(tt);
>                                 }
>                            }
> @@ -108,8 +148,15 @@ _cb_drop(void *data, Evas_Object *o EINA_UNUSED, 
> Elm_Selection_Data *ev)
>                               tt = _escape_parse(tb);
>                               if (tt)
>                                 {
> -                                 win_video_insert(win, tt);
> -                                 inserted = EINA_TRUE;
> +                                 if (ecore_file_is_dir(tt))
> +                                   {
> +                                      inserted = _recurse_dir(win, tt);
> +                                   }
> +                                 else
> +                                   {
> +                                      win_video_insert(win, tt);
> +                                      inserted = EINA_TRUE;
> +                                   }
>                                    free(tt);
>                                 }
>                            }
> @@ -124,8 +171,15 @@ _cb_drop(void *data, Evas_Object *o EINA_UNUSED, 
> Elm_Selection_Data *ev)
>           char *tt = _escape_parse(ev->data);
>           if (tt)
>             {
> -             win_video_insert(win, tt);
> -             inserted = EINA_TRUE;
> +             if (ecore_file_is_dir(tt))
> +               {
> +                  inserted = _recurse_dir(win, tt);
> +               }
> +             else
> +               {
> +                  win_video_insert(win, tt);
> +                  inserted = EINA_TRUE;
> +               }
>                free(tt);
>             }
>        }
>


------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to