Tomas Bzatek 920f2d4
diff --git a/daemon/gvfsbackendhttp.c b/daemon/gvfsbackendhttp.c
Tomas Bzatek 920f2d4
index 45ea54d..97c6ce7 100644
Tomas Bzatek 920f2d4
--- a/daemon/gvfsbackendhttp.c
Tomas Bzatek 920f2d4
+++ b/daemon/gvfsbackendhttp.c
Tomas Bzatek 920f2d4
@@ -47,6 +47,7 @@
Tomas Bzatek 920f2d4
 #include "gvfsjobqueryattributes.h"
Tomas Bzatek 920f2d4
 #include "gvfsjobenumerate.h"
Tomas Bzatek 920f2d4
 #include "gvfsdaemonprotocol.h"
Tomas Bzatek 920f2d4
+#include "gvfsdaemonutils.h"
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
 #include "soup-input-stream.h"
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
@@ -539,10 +540,12 @@ query_info_ready (SoupSession *session,
Tomas Bzatek 920f2d4
   const char            *text;
Tomas Bzatek 920f2d4
   GFileInfo             *info;
Tomas Bzatek 920f2d4
   char                  *basename;
Tomas Bzatek 920f2d4
+  char                  *ed_name;
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
   job     = G_VFS_JOB_QUERY_INFO (user_data);
Tomas Bzatek 920f2d4
   info    = job->file_info;
Tomas Bzatek 920f2d4
   matcher = job->attribute_matcher;
Tomas Bzatek 920f2d4
+  ed_name = NULL;
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
   if (! SOUP_STATUS_IS_SUCCESSFUL (msg->status_code))
Tomas Bzatek 920f2d4
     {
Tomas Bzatek 920f2d4
@@ -562,30 +565,18 @@ query_info_ready (SoupSession *session,
Tomas Bzatek 920f2d4
       g_file_attribute_matcher_matches (matcher,
Tomas Bzatek 920f2d4
                                         G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME))
Tomas Bzatek 920f2d4
     {
Tomas Bzatek 920f2d4
-      char *display_name = g_filename_display_name (basename);
Tomas Bzatek 920f2d4
-
Tomas Bzatek 920f2d4
-      if (strstr (display_name, "\357\277\275") != NULL)
Tomas Bzatek 920f2d4
-        {
Tomas Bzatek 920f2d4
-          char *p = display_name;
Tomas Bzatek 920f2d4
-          display_name = g_strconcat (display_name, _(" (invalid encoding)"), NULL);
Tomas Bzatek 920f2d4
-          g_free (p);
Tomas Bzatek 920f2d4
-        }
Tomas Bzatek 920f2d4
-
Tomas Bzatek 920f2d4
-      g_file_info_set_display_name (info, display_name);
Tomas Bzatek 920f2d4
-      g_free (display_name);
Tomas Bzatek 920f2d4
+      ed_name = gvfs_file_info_populate_names_as_local (info, basename);
Tomas Bzatek 920f2d4
     }
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
-  if (basename != NULL &&
Tomas Bzatek 920f2d4
+  if (ed_name != NULL &&
Tomas Bzatek 920f2d4
       g_file_attribute_matcher_matches (matcher,
Tomas Bzatek 920f2d4
                                         G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME))
Tomas Bzatek 920f2d4
     {
Tomas Bzatek 920f2d4
-      char *edit_name = g_filename_display_name (basename);
Tomas Bzatek 920f2d4
-      g_file_info_set_edit_name (info, edit_name);
Tomas Bzatek 920f2d4
-      g_free (edit_name);
Tomas Bzatek 920f2d4
-    } 
Tomas Bzatek 920f2d4
+      g_file_info_set_edit_name (info, ed_name);
Tomas Bzatek 920f2d4
+    }
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
   g_free (basename);
Tomas Bzatek 920f2d4
-
Tomas Bzatek 920f2d4
+  g_free (ed_name);
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
   text = soup_message_headers_get (msg->response_headers,
Tomas Bzatek 920f2d4
                                    "Content-Length");
Tomas Bzatek 920f2d4
@@ -601,15 +592,22 @@ query_info_ready (SoupSession *session,
Tomas Bzatek 920f2d4
   if (text)
Tomas Bzatek 920f2d4
     {
Tomas Bzatek 920f2d4
       char *p = strchr (text, ';');
Tomas Bzatek 920f2d4
+      char *tmp = NULL;
Tomas Bzatek 920f2d4
+      GIcon *icon;
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4
       if (p != NULL)
Tomas Bzatek 920f2d4
-        {
Tomas Bzatek 920f2d4
-          char *tmp = g_strndup (text, p - text);
Tomas Bzatek 920f2d4
-          g_file_info_set_content_type (info, tmp);
Tomas Bzatek 920f2d4
-          g_free (tmp);
Tomas Bzatek 920f2d4
-        }
Tomas Bzatek 920f2d4
-      else
Tomas Bzatek 920f2d4
-        g_file_info_set_content_type (info, text);
Tomas Bzatek 920f2d4
+        text = tmp = g_strndup (text, p - text);
Tomas Bzatek 920f2d4
+
Tomas Bzatek 920f2d4
+      g_file_info_set_file_type (info, G_FILE_TYPE_REGULAR);
Tomas Bzatek 920f2d4
+      g_file_info_set_content_type (info, text);
Tomas Bzatek 920f2d4
+      g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE, text);
Tomas Bzatek 920f2d4
+
Tomas Bzatek 920f2d4
+      icon = g_content_type_get_icon (text);
Tomas Bzatek 920f2d4
+      g_file_info_set_icon (info, icon);
Tomas Bzatek 920f2d4
+      g_object_unref (icon);
Tomas Bzatek 920f2d4
+
Tomas Bzatek 920f2d4
+      g_free (tmp);
Tomas Bzatek 920f2d4
+
Tomas Bzatek 920f2d4
     }
Tomas Bzatek 920f2d4
 
Tomas Bzatek 920f2d4