Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        Makefile.am e_fm.c e_includes.h 
Added Files:
        e_fm_mime.c e_fm_mime.h 


Log Message:


add mime type parser for system mime types (old mime.types and new xdg shared
mimeinfo) as well as pasring user versions of thoses files - use them in fm2.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/Makefile.am,v
retrieving revision 1.130
retrieving revision 1.131
diff -u -3 -r1.130 -r1.131
--- Makefile.am 23 Jul 2006 10:24:30 -0000      1.130
+++ Makefile.am 30 Jul 2006 16:58:38 -0000      1.131
@@ -166,7 +166,8 @@
 e_fm.h \
 e_widget_scrollframe.h \
 e_sha1.h \
-e_widget_fsel.h
+e_widget_fsel.h \
+e_fm_mime.h
 
 enlightenment_src = \
 e_user.c \
@@ -309,6 +310,7 @@
 e_widget_scrollframe.c \
 e_sha1.c \
 e_widget_fsel.c \
+e_fm_mime.c \
 $(ENLIGHTENMENTHEADERS)
 
 enlightenment_SOURCES = \
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- e_fm.c      29 Jul 2006 16:27:54 -0000      1.22
+++ e_fm.c      30 Jul 2006 16:58:38 -0000      1.23
@@ -1107,6 +1107,7 @@
    Evas_Coord mw = 0, mh = 0;
    Evas_Object *obj, *obj2;
    char buf[4096], *lnk;
+   const char *mime;
    
    /* create icon */
    ic = E_NEW(E_Fm2_Icon, 1);
@@ -1124,10 +1125,17 @@
        ic->info.link = evas_stringshare_add(lnk);
        free(lnk);
      }
-   evas_event_freeze(evas_object_evas_get(sd->obj));
-   edje_freeze();
+   
+   if (!ic->info.mime)
+     {
+       mime = e_fm_mime_filename_get(ic->info.file);
+       if (mime) ic->info.mime = evas_stringshare_add(mime);
+     }
+   
    if (e_util_glob_case_match(ic->info.file, "*.desktop"))
      _e_fm2_icon_desktop_load(ic);
+   evas_event_freeze(evas_object_evas_get(sd->obj));
+   edje_freeze();
    switch (sd->config->view.mode)
      {
       case E_FM2_VIEW_MODE_ICONS:
@@ -1360,7 +1368,7 @@
 static void
 _e_fm2_icon_icon_set(E_Fm2_Icon *ic)
 {
-   char buf[4096];
+   char buf[4096], *p;
    
    if (!ic->realized) return;
    if (ic->info.icon)
@@ -1383,6 +1391,39 @@
    if (ic->info.mime)
      {
        /* use mime type to select icon */
+       if (
+           (!strcmp(ic->info.mime, "image/jpeg")) ||
+           (!strcmp(ic->info.mime, "image/png")) ||
+           (!strcmp(ic->info.mime, "image/gif")) ||
+           (!strcmp(ic->info.mime, "image/tiff"))
+           )
+         {
+            snprintf(buf, sizeof(buf), "%s/%s", ic->sd->realpath, 
ic->info.file);
+            ic->obj_icon = e_thumb_icon_add(evas_object_evas_get(ic->sd->obj));
+            e_thumb_icon_file_set(ic->obj_icon, buf, NULL);
+            e_thumb_icon_size_set(ic->obj_icon, 64, 48);
+            evas_object_smart_callback_add(ic->obj_icon, "e_thumb_gen", 
_e_fm2_cb_icon_thumb_gen, ic);
+            _e_fm2_icon_thumb(ic);
+            edje_object_part_swallow(ic->obj, "icon_swallow", ic->obj_icon);
+            evas_object_show(ic->obj_icon);
+         }
+       else
+         {
+            /* fixme: quick hack to get some icons - need to have a proper
+             * mime -> icon mapping users can edit
+             */
+            p = strchr(ic->info.mime, '/');
+            if (p) p++;
+            else p = ic->info.mime;
+            snprintf(buf, sizeof(buf), "icons/fileman/%s", p);
+            ic->obj_icon = edje_object_add(evas_object_evas_get(ic->sd->obj));
+            if (!e_theme_edje_object_set(ic->obj_icon, "base/theme/fileman",
+                                         buf))
+              e_theme_edje_object_set(ic->obj_icon, "base/theme/fileman",
+                                      "icons/fileman/file");
+            edje_object_part_swallow(ic->obj, "icon_swallow", ic->obj_icon);
+            evas_object_show(ic->obj_icon);
+         }
        return;
      }
    /* fallback */
@@ -1397,28 +1438,8 @@
    else
      {
        if (
-           (e_util_glob_case_match(ic->info.file, "*.jpg")) ||
-           (e_util_glob_case_match(ic->info.file, "*.jpeg")) ||
-           (e_util_glob_case_match(ic->info.file, "*.jfif")) ||
-           (e_util_glob_case_match(ic->info.file, "*.jpe")) ||
-           (e_util_glob_case_match(ic->info.file, "*.png")) ||
-           (e_util_glob_case_match(ic->info.file, "*.gif")) ||
-           (e_util_glob_case_match(ic->info.file, "*.tif")) ||
-           (e_util_glob_case_match(ic->info.file, "*.tiff"))
+           (e_util_glob_case_match(ic->info.file, "*.edj"))
            )
-         {
-            snprintf(buf, sizeof(buf), "%s/%s", ic->sd->realpath, 
ic->info.file);
-            ic->obj_icon = e_thumb_icon_add(evas_object_evas_get(ic->sd->obj));
-            e_thumb_icon_file_set(ic->obj_icon, buf, NULL);
-            e_thumb_icon_size_set(ic->obj_icon, 64, 64);
-            evas_object_smart_callback_add(ic->obj_icon, "e_thumb_gen", 
_e_fm2_cb_icon_thumb_gen, ic);
-            _e_fm2_icon_thumb(ic);
-            edje_object_part_swallow(ic->obj, "icon_swallow", ic->obj_icon);
-            evas_object_show(ic->obj_icon);
-         }
-       else if (
-                (e_util_glob_case_match(ic->info.file, "*.edj"))
-                )
          {
             snprintf(buf, sizeof(buf), "%s/%s", ic->sd->realpath, 
ic->info.file);
             ic->obj_icon = e_thumb_icon_add(evas_object_evas_get(ic->sd->obj));
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_includes.h,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -3 -r1.109 -r1.110
--- e_includes.h        23 Jul 2006 11:22:13 -0000      1.109
+++ e_includes.h        30 Jul 2006 16:58:38 -0000      1.110
@@ -143,3 +143,4 @@
 #include "e_sha1.h"
 #include "e_widget_framelist.h"
 #include "e_widget_fsel.h"
+#include "e_fm_mime.h"



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to