On Thu, 11 Aug 2011 12:48:52 +0200 (CEST) Vincent Torri <vto...@univ-evry.fr>
said:

probably eina_str_has_extension now i look at it

> 
> usee eina_str_sufix() instead ?
> 
> Vincent
> 
> On Thu, 11 Aug 2011, Enlightenment SVN wrote:
> 
> > Log:
> > ... allow non edj files as wallpapers... if u try. :)
> >
> >
> >
> > Author:       raster
> > Date:         2011-08-11 03:39:37 -0700 (Thu, 11 Aug 2011)
> > New Revision: 62340
> > Trac:         http://trac.enlightenment.org/e/changeset/62340
> >
> > Modified:
> >  trunk/e/src/bin/e_bg.c trunk/e/src/bin/e_icon.c
> > trunk/e/src/bin/e_widget_preview.c
> > trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c
> >
> > Modified: trunk/e/src/bin/e_bg.c
> > ===================================================================
> > --- trunk/e/src/bin/e_bg.c  2011-08-11 10:30:35 UTC (rev 62339)
> > +++ trunk/e/src/bin/e_bg.c  2011-08-11 10:39:37 UTC (rev 62340)
> > @@ -118,7 +118,8 @@
> >     EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg)
> >       {
> >          int spec;
> > -
> > +             const char *ext;
> > +
> >          if (!cfbg) continue;
> >          spec = 0;
> >          if (cfbg->container == container_num) spec++;
> > @@ -142,19 +143,28 @@
> >                    if (bf) bgfile = bf;
> >                 }
> >            }
> > -        entries = edje_file_collection_list(bgfile);
> > -        if (entries)
> > -          {
> > -             EINA_LIST_FOREACH(entries, ll, entry)
> > -               {
> > -                  if (!strcmp(entry, "e/desktop/background"))
> > -                    {
> > -                       bg = cfbg;
> > -                       current_spec = spec;
> > -                    }
> > -               }
> > -             edje_file_collection_list_free(entries);
> > -          }
> > +             ext = strrchr(bgfile, '.');
> > +             if ((ext) && (!strcasecmp(ext, ".edj")))
> > +               {
> > +                  entries = edje_file_collection_list(bgfile);
> > +                  if (entries)
> > +                    {
> > +                       EINA_LIST_FOREACH(entries, ll, entry)
> > +                         {
> > +                            if (!strcmp(entry, "e/desktop/background"))
> > +                              {
> > +                                 bg = cfbg;
> > +                                 current_spec = spec;
> > +                              }
> > +                         }
> > +                       edje_file_collection_list_free(entries);
> > +                    }
> > +               }
> > +             else
> > +               {
> > +                  bg = cfbg;
> > +                  current_spec = spec;
> > +               }
> >       }
> >      }
> >    return bg;
> > @@ -188,6 +198,8 @@
> >      }
> >    else
> >      {
> > +        const char *ext;
> > +
> >     bgfile = e_config->desktop_default_background;
> >     if (bgfile)
> >       {
> > @@ -199,19 +211,24 @@
> >               if (bf) bgfile = bf;
> >            }
> >       }
> > -   entries = edje_file_collection_list(bgfile);
> > -   if (entries)
> > -     {
> > -        EINA_LIST_FOREACH(entries, l, entry)
> > -          {
> > -             if (!strcmp(entry, "e/desktop/background"))
> > -               {
> > -                  ok = 1;
> > -                  break;
> > -               }
> > -          }
> > -        edje_file_collection_list_free(entries);
> > -     }
> > +        ext = strrchr(bgfile, '.');
> > +        if ((ext) && (!strcasecmp(ext, ".edj")))
> > +          {
> > +             entries = edje_file_collection_list(bgfile);
> > +             if (entries)
> > +               {
> > +                  EINA_LIST_FOREACH(entries, l, entry)
> > +                    {
> > +                       if (!strcmp(entry, "e/desktop/background"))
> > +                         {
> > +                            ok = 1;
> > +                            break;
> > +                         }
> > +                    }
> > +                  edje_file_collection_list_free(entries);
> > +               }
> > +          }
> > +        else ok = 1;
> >     if (!ok)
> >       bgfile = e_theme_edje_file_get("base/theme/background",
> >                                      "e/desktop/background");
> > @@ -226,6 +243,7 @@
> >    Evas_Object *o;
> >    const char *bgfile = "";
> >    const char *trans = "";
> > +   const char *ext;
> >    E_Desk *desk;
> >
> >    if (transition == E_BG_TRANSITION_START) trans =
> > e_config->transition_start; @@ -283,10 +301,21 @@
> >     evas_object_clip_set(o, zone->bg_clip_object);
> >     evas_object_show(o);
> >      }
> > -   o = edje_object_add(zone->container->bg_evas);
> > +   ext = strrchr(bgfile, '.');
> > +   if ((ext) && (!strcasecmp(ext, ".edj")))
> > +     {
> > +        o = edje_object_add(zone->container->bg_evas);
> > +        evas_object_data_set(o, "e_zone", zone);
> > +        edje_object_file_set(o, bgfile, "e/desktop/background");
> > +     }
> > +   else
> > +     {
> > +        o = e_icon_add(zone->container->bg_evas);
> > +        evas_object_data_set(o, "e_zone", zone);
> > +        e_icon_file_key_set(o, bgfile, NULL);
> > +        e_icon_fill_inside_set(o, 0);
> > +     }
> >    zone->bg_object = o;
> > -   evas_object_data_set(o, "e_zone", zone);
> > -   edje_object_file_set(o, bgfile, "e/desktop/background");
> >    if (transition == E_BG_TRANSITION_NONE)
> >      {
> >     evas_object_move(o, zone->x, zone->y);
> >
> > Modified: trunk/e/src/bin/e_icon.c
> > ===================================================================
> > --- trunk/e/src/bin/e_icon.c        2011-08-11 10:30:35 UTC (rev 62339)
> > +++ trunk/e/src/bin/e_icon.c        2011-08-11 10:39:37 UTC (rev 62340)
> > @@ -7,7 +7,9 @@
> >    Evas_Coord x, y, w, h;
> >    Evas_Object *obj;
> >    Evas_Object *eventarea;
> > +   Ecore_Timer *timer;
> >    int size;
> > +   int frame, frame_count;
> >    const char *fdo;
> >    unsigned char fill_inside : 1;
> >    unsigned char scale_up : 1;
> > @@ -61,6 +63,47 @@
> >      }
> > }
> >
> > +static Eina_Bool
> > +_frame_anim(void *data)
> > +{
> > +   E_Smart_Data *sd = data;
> > +   double t;
> > +   int fr;
> > +
> > +   sd->frame++;
> > +   fr = (sd->frame % (sd->frame_count)) + 1;
> > +   evas_object_image_animated_frame_set(sd->obj, fr);
> > +   t = evas_object_image_animated_frame_duration_get(sd->obj, fr, 0);
> > +   sd->timer = ecore_timer_add(t, _frame_anim, sd);
> > +   return EINA_FALSE;
> > +}
> > +
> > +static int
> > +_handle_anim(E_Smart_Data *sd)
> > +{
> > +   double t;
> > +
> > +   if (sd->timer) ecore_timer_del(sd->timer);
> > +   sd->timer = NULL;
> > +   sd->frame = 0;
> > +   sd->frame_count = 0;
> > +   if (!evas_object_image_animated_get(sd->obj)) return 0;
> > +   // FIXME: hack around jiyouns BUG!!!!!!!!
> > +     {
> > +        const char *file;
> > +        char buf[256];
> > +        snprintf(buf, sizeof(buf), "%ld", (long)sd);
> > +        evas_object_image_file_get(sd->obj, &file, NULL);
> > +        evas_object_image_file_set(sd->obj, file, buf);
> > +     }
> > +   sd->frame_count = evas_object_image_animated_frame_count_get(sd->obj);
> > +   if (sd->frame_count < 2) return 0;
> > +   evas_object_show(sd->obj);
> > +   t = evas_object_image_animated_frame_duration_get(sd->obj, sd->frame,
> > 0);
> > +   sd->timer = ecore_timer_add(t, _frame_anim, sd);
> > +   return 1;
> > +}
> > +
> > EAPI Eina_Bool
> > e_icon_file_set(Evas_Object *obj, const char *file)
> > {
> > @@ -85,19 +128,27 @@
> >         sd->fdo = NULL;
> >      }
> >
> > +   if (sd->timer) ecore_timer_del(sd->timer);
> > +   sd->timer = NULL;
> > +   sd->frame = 0;
> > +   sd->frame_count = 0;
> > +
> >    if (sd->size != 0)
> >      evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
> >    if (sd->preload) evas_object_hide(sd->obj);
> >    evas_object_image_file_set(sd->obj, file, NULL);
> >    if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
> >      return EINA_FALSE;
> > -   if (sd->preload)
> > +   if (!_handle_anim(sd))
> >      {
> > -        sd->loading = 1;
> > -        evas_object_image_preload(sd->obj, EINA_FALSE);
> > +        if (sd->preload)
> > +          {
> > +             sd->loading = 1;
> > +             evas_object_image_preload(sd->obj, EINA_FALSE);
> > +          }
> > +        else if (evas_object_visible_get(obj))
> > +           evas_object_show(sd->obj);
> >      }
> > -   else if (evas_object_visible_get(obj))
> > -     evas_object_show(sd->obj);
> >
> >    _e_icon_smart_reconfigure(sd);
> >    return EINA_TRUE;
> > @@ -118,6 +169,12 @@
> >         eina_stringshare_del(sd->fdo);
> >         sd->fdo = NULL;
> >      }
> > +
> > +   if (sd->timer) ecore_timer_del(sd->timer);
> > +   sd->timer = NULL;
> > +   sd->frame = 0;
> > +   sd->frame_count = 0;
> > +
> >    _e_icon_obj_prepare(obj, sd);
> >    if (sd->size != 0)
> >      evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
> > @@ -125,13 +182,16 @@
> >    evas_object_image_file_set(sd->obj, file, key);
> >    if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
> >      return EINA_FALSE;
> > -   if (sd->preload)
> > +   if (!_handle_anim(sd))
> >      {
> > -        sd->loading = 1;
> > -        evas_object_image_preload(sd->obj, 0);
> > +        if (sd->preload)
> > +          {
> > +             sd->loading = 1;
> > +             evas_object_image_preload(sd->obj, 0);
> > +          }
> > +        else if (evas_object_visible_get(obj))
> > +           evas_object_show(sd->obj);
> >      }
> > -   else if (evas_object_visible_get(obj))
> > -     evas_object_show(sd->obj);
> >    _e_icon_smart_reconfigure(sd);
> >    return EINA_TRUE;
> > }
> > @@ -152,6 +212,12 @@
> >         eina_stringshare_del(sd->fdo);
> >         sd->fdo = NULL;
> >      }
> > +
> > +   if (sd->timer) ecore_timer_del(sd->timer);
> > +   sd->timer = NULL;
> > +   sd->frame = 0;
> > +   sd->frame_count = 0;
> > +
> >    sd->obj = edje_object_add(evas_object_evas_get(obj));
> >    edje_object_file_set(sd->obj, file, part);
> >    if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
> > @@ -175,6 +241,11 @@
> >    if (!(sd = evas_object_smart_data_get(obj)))
> >      return EINA_FALSE;
> >
> > +   if (sd->timer) ecore_timer_del(sd->timer);
> > +   sd->timer = NULL;
> > +   sd->frame = 0;
> > +   sd->frame_count = 0;
> > +
> >    eina_stringshare_replace(&sd->fdo, icon);
> >    if (!sd->fdo) return EINA_FALSE;
> >
> > @@ -212,6 +283,11 @@
> >
> >    if (!(sd = evas_object_smart_data_get(obj))) return;
> >
> > +   if (sd->timer) ecore_timer_del(sd->timer);
> > +   sd->timer = NULL;
> > +   sd->frame = 0;
> > +   sd->frame_count = 0;
> > +
> >    /* smart code here */
> >    if (sd->obj) evas_object_del(sd->obj);
> >    sd->loading = 0;
> > @@ -539,6 +615,7 @@
> >    evas_object_del(sd->obj);
> >    evas_object_del(sd->eventarea);
> >    if (sd->fdo) eina_stringshare_del(sd->fdo);
> > +   if (sd->timer) ecore_timer_del(sd->timer);
> >    free(sd);
> > }
> >
> >
> > Modified: trunk/e/src/bin/e_widget_preview.c
> > ===================================================================
> > --- trunk/e/src/bin/e_widget_preview.c      2011-08-11 10:30:35 UTC (rev
> > 62339) +++ trunk/e/src/bin/e_widget_preview.c       2011-08-11 10:39:37
> > UTC (rev 62340) @@ -78,6 +78,7 @@
> >    if (wd->o_thumb) evas_object_del(wd->o_thumb);
> >
> >    wd->o_thumb = e_icon_add(e_livethumb_evas_get(wd->img));
> > +   e_icon_fill_inside_set(wd->o_thumb, 0);
> >    e_icon_file_key_set(wd->o_thumb, file, key);
> >    evas_object_show(wd->o_thumb);
> >    e_livethumb_thumb_set(wd->img, wd->o_thumb);
> >
> > Modified: trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c
> > ===================================================================
> > --- trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c
> > 2011-08-11 10:30:35 UTC (rev 62339) +++
> > trunk/e/src/modules/conf_theme/e_int_config_wallpaper.c     2011-08-11
> > 10:39:37 UTC (rev 62340) @@ -108,6 +108,32 @@ return cfd;
> > }
> >
> > +static void
> > +_bg_set(E_Config_Dialog_Data *cfdata)
> > +{
> > +   if (!cfdata->o_preview) return;
> > +   if (cfdata->bg)
> > +     {
> > +        const char *ext = strrchr(cfdata->bg, '.');
> > +
> > +        if ((ext) && (!strcasecmp(ext, ".edj")))
> > +           e_widget_preview_edje_set(cfdata->o_preview, cfdata->bg,
> > +                                     "e/desktop/background");
> > +        else
> > +           e_widget_preview_file_set(cfdata->o_preview, cfdata->bg,
> > +                                     NULL);
> > +     }
> > +   else
> > +     {
> > +        const char *f;
> > +
> > +        f = e_theme_edje_file_get("base/theme/backgrounds",
> > +                                  "e/desktop/background");
> > +        e_widget_preview_edje_set(cfdata->o_preview, f,
> > +                                  "e/desktop/background");
> > +     }
> > +}
> > +
> > void
> > e_int_config_wallpaper_update(E_Config_Dialog *dia, char *file)
> > {
> > @@ -124,9 +150,7 @@
> >    if (cfdata->o_theme_bg)
> >      e_widget_check_checked_set(cfdata->o_theme_bg, cfdata->use_theme_bg);
> >    if (cfdata->o_fm) e_widget_flist_path_set(cfdata->o_fm, path, "/");
> > -   if (cfdata->o_preview)
> > -     e_widget_preview_edje_set(cfdata->o_preview, cfdata->bg,
> > -                               "e/desktop/background");
> > +   _bg_set(cfdata);
> >    if (cfdata->o_fm) e_widget_change(cfdata->o_fm);
> > }
> >
> > @@ -195,8 +219,7 @@
> >    E_FREE(cfdata->bg);
> >
> >    cfdata->bg = strdup(buf);
> > -   if (cfdata->o_preview)
> > -     e_widget_preview_edje_set(cfdata->o_preview, buf,
> > "e/desktop/background");
> > +   _bg_set(cfdata);
> >    if (cfdata->o_theme_bg)
> >      e_widget_check_checked_set(cfdata->o_theme_bg, 0);
> >    cfdata->use_theme_bg = 0;
> > @@ -281,20 +304,13 @@
> >                                   "e/desktop/background");
> >     E_FREE(cfdata->bg);
> >     cfdata->bg = strdup(f);
> > -   if (cfdata->o_preview)
> > -     e_widget_preview_edje_set(cfdata->o_preview, f,
> > -                                    "e/desktop/background");
> > +        _bg_set(cfdata);
> >      }
> >    else
> >      {
> >     evas_object_smart_callback_call(cfdata->o_fm, "selection_change",
> >                                         cfdata);
> > -   if (cfdata->bg)
> > -     {
> > -        if (cfdata->o_preview)
> > -          e_widget_preview_edje_set(cfdata->o_preview, cfdata->bg,
> > -                                         "e/desktop/background");
> > -     }
> > +        _bg_set(cfdata);
> >      }
> > }
> >
> > @@ -434,7 +450,6 @@
> >    E_Radio_Group *rg;
> >    char path[PATH_MAX];
> >    int mw, mh, online;
> > -   const char *f;
> >
> >    online = ecore_file_download_protocol_available("http://";);
> >
> > @@ -506,11 +521,7 @@
> >    oa = e_widget_aspect_add(evas, mw, mh);
> >    ow = e_widget_preview_add(evas, mw, mh);
> >    cfdata->o_preview = ow;
> > -   if (cfdata->bg)
> > -     f = cfdata->bg;
> > -   else
> > -     f = e_theme_edje_file_get("base/theme/backgrounds",
> > "e/desktop/background");
> > -   e_widget_preview_edje_set(ow, f, "e/desktop/background");
> > +   _bg_set(cfdata);
> >    e_widget_aspect_child_set(oa, ow);
> >    evas_object_show(ow);
> >    evas_object_show(oa);
> > @@ -564,7 +575,6 @@
> >    E_Radio_Group *rg;
> >    char path[PATH_MAX];
> >    int mw, mh, online;
> > -   const char *f;
> >
> >    online = ecore_file_download_protocol_available("http://";);
> >
> > @@ -634,11 +644,7 @@
> >    oa = e_widget_aspect_add(evas, mw, mh);
> >    ow = e_widget_preview_add(evas, mw, mh);
> >    cfdata->o_preview = ow;
> > -   if (cfdata->bg)
> > -     f = cfdata->bg;
> > -   else
> > -     f = e_theme_edje_file_get("base/theme/backgrounds",
> > "e/desktop/background");
> > -   e_widget_preview_edje_set(ow, f, "e/desktop/background");
> > +   _bg_set(cfdata);
> >    e_widget_aspect_child_set(oa, ow);
> >    e_widget_table_object_append(ot, oa, 0, 2, 2 + online, 1, 1, 1, 1, 1);
> >
> >
> >
> > ------------------------------------------------------------------------------
> > Get a FREE DOWNLOAD! and learn more about uberSVN rich system,
> > user administration capabilities and model configuration. Take
> > the hassle out of deploying and managing Subversion and the
> > tools developers use with it.
> > http://p.sf.net/sfu/wandisco-dev2dev
> > _______________________________________________
> > enlightenment-svn mailing list
> > enlightenment-...@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
> >
> >
> 
> ------------------------------------------------------------------------------
> Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
> user administration capabilities and model configuration. Take 
> the hassle out of deploying and managing Subversion and the 
> tools developers use with it. 
> http://p.sf.net/sfu/wandisco-dev2dev
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
user administration capabilities and model configuration. Take 
the hassle out of deploying and managing Subversion and the 
tools developers use with it. 
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to