[gnome-launch-box] drop libgnomevfs from the files module
- From: Sven Herzberg <herzi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-launch-box] drop libgnomevfs from the files module
- Date: Thu, 11 Feb 2010 13:36:11 +0000 (UTC)
commit c69d4fa4b6aa2b0e923e40eabee3659034add802
Author: Sven Herzberg <herzi gnome-de org>
Date: Wed Feb 10 10:33:17 2010 +0100
drop libgnomevfs from the files module
* src/lb-modules-files.c: replaced the gnome-vfs code with gio
src/lb-module-files.c | 144 ++++++++++++++++++++++++++++---------------------
1 files changed, 82 insertions(+), 62 deletions(-)
---
diff --git a/src/lb-module-files.c b/src/lb-module-files.c
index e88296a..160cad3 100644
--- a/src/lb-module-files.c
+++ b/src/lb-module-files.c
@@ -28,9 +28,6 @@
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gtk/gtkicontheme.h>
#include <gconf/gconf-client.h>
-#include <libgnomevfs/gnome-vfs.h>
-#include <libgnomevfs/gnome-vfs-mime-handlers.h>
-#include <libgnomevfs/gnome-vfs-file-info.h>
#include "lb-item.h"
#include "lb-module-files.h"
@@ -160,32 +157,42 @@ static GList *
module_files_query (LbModule *module,
const gchar *match)
{
- LbModuleFilesPriv *priv = GET_PRIV (module);
- GnomeVFSDirectoryHandle *handle;
- GnomeVFSFileInfo *info;
- GnomeVFSResult r;
- GList *items = NULL;
-
- r = gnome_vfs_directory_open (&handle, priv->dir_uri,
- GNOME_VFS_FILE_INFO_GET_MIME_TYPE);
-
- if(r != GNOME_VFS_OK) {
- g_warning("error opening %s: %s", priv->dir_uri, gnome_vfs_result_to_string(r));
- return NULL;
- }
-
- info = gnome_vfs_file_info_new ();
-
- while (gnome_vfs_directory_read_next (handle, info) == GNOME_VFS_OK) {
- gchar *name;
- gchar *uri;
-
- name = g_filename_to_utf8 (info->name, -1, NULL, NULL, NULL);
- if (!name) {
- continue;
- }
-
- uri = g_build_filename (priv->dir_uri, name, NULL);
+ LbModuleFilesPriv* priv = GET_PRIV (module);
+ GFileEnumerator * enumerator;
+ GFileInfo * info;
+ GError * error;
+ GList * items = NULL;
+ GFile * parent;
+ GFile * file;
+
+ parent = g_file_new_for_uri (priv->dir_uri);
+ enumerator = g_file_enumerate_children (parent,
+ G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
+ G_FILE_ATTRIBUTE_STANDARD_NAME ","
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_QUERY_INFO_NONE, NULL,
+ &error);
+
+ for (info = g_file_enumerator_next_file (enumerator, NULL, NULL);
+ info;
+ info = g_file_enumerator_next_file (enumerator, NULL, NULL))
+ {
+ gchar const* name;
+ gchar * uri;
+
+
+ if (!info)
+ {
+ g_printerr ("error getting file information: %s",
+ error->message);
+ g_error_free (error);
+
+ continue;
+ }
+
+ name = g_file_info_get_display_name (info);
+ file = g_file_get_child (parent, g_file_info_get_name (info));
+ uri = g_file_get_uri (file);
if (name[0] != '.' && name[strlen (name) - 1] != '~') {
gchar *dot = strrchr (name, '.');
@@ -203,7 +210,7 @@ module_files_query (LbModule *module,
"name", name,
"icon-name", icon_name,
"uri", uri,
- "mime-type", info->mime_type,
+ "mime-type", g_file_info_get_content_type (info),
NULL);
g_free (icon_name);
@@ -212,12 +219,13 @@ module_files_query (LbModule *module,
}
}
- g_free (uri);
- g_free (name);
- gnome_vfs_file_info_clear (info);
- }
+ g_free (uri);
+ g_object_unref (file);
+ g_object_unref (info);
+ }
- gnome_vfs_directory_close (handle);
+ g_object_unref (enumerator);
+ g_object_unref (parent);
return items;
}
@@ -227,11 +235,11 @@ module_files_add_actions (LbModule *module,
LbItem *item)
{
LbItemFile *item_file;
+ GAppInfo * default_application;
GList *applications = NULL;
GList *actions = NULL;
GList *list = NULL;
const gchar *mime_type;
- GnomeVFSMimeApplication *default_application;
if (! LB_IS_ITEM_FILE (item)) {
return;
@@ -241,38 +249,49 @@ module_files_add_actions (LbModule *module,
mime_type = lb_item_file_get_mime_type (item_file);
- if (! mime_type) {
- GnomeVFSFileInfo *info;
+ if (!mime_type)
+ {
+ GFileInfo* info;
+ GFile* file;
- info = gnome_vfs_file_info_new ();
+ file = g_file_new_for_uri (lb_item_file_get_uri (item_file));
+ info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ 0, NULL,
+ NULL);
- if (gnome_vfs_get_file_info (lb_item_file_get_uri (item_file),
- info,
- GNOME_VFS_FILE_INFO_GET_MIME_TYPE) ==
- GNOME_VFS_OK) {
- lb_item_file_set_mime_type (item_file, info->mime_type);
- }
+ if (info)
+ {
+ lb_item_file_set_mime_type (item_file, g_file_info_get_content_type (info));
+ }
- gnome_vfs_file_info_unref (info);
+ g_object_unref (info);
+ g_object_unref (file);
- mime_type = lb_item_file_get_mime_type (item_file);
+ mime_type = lb_item_file_get_mime_type (item_file);
}
if (! mime_type) {
return;
}
- default_application = gnome_vfs_mime_get_default_application (mime_type);
- applications = gnome_vfs_mime_get_all_applications (mime_type);
+ default_application = g_app_info_get_default_for_type (mime_type, TRUE);
+ applications = g_app_info_get_all_for_type (mime_type);
for (list = applications; list ; list = list->next) {
- GnomeVFSMimeApplication *application = list->data;
+ GAppInfo *application = list->data;
LbAction *action;
const gchar *name;
- const gchar *icon;
+ const gchar *icon = NULL;
+ GIcon *gicon;
- icon = gnome_vfs_mime_application_get_icon (application);
- name = gnome_vfs_mime_application_get_name (application);
+ gicon = g_app_info_get_icon (application);
+ if (G_IS_THEMED_ICON (gicon))
+ {
+ gchar const* const* names = g_themed_icon_get_names (G_THEMED_ICON (gicon));
+
+ icon = names ? names[0] : NULL;
+ }
+ name = g_app_info_get_name (application);
action = g_object_new (LB_TYPE_ACTION,
"name", name,
@@ -281,7 +300,7 @@ module_files_add_actions (LbModule *module,
lb_action_set_data (action, application,
(GDestroyNotify)
- gnome_vfs_mime_application_free);
+ g_object_unref);
g_signal_connect (action, "activate",
G_CALLBACK (module_files_activate_action),
@@ -290,7 +309,7 @@ module_files_add_actions (LbModule *module,
// We want the default application to be the first action so
// we construct a list of actions with the default at the
// head. We add the actions to the item later.
- if (gnome_vfs_mime_application_equal (application, default_application)) {
+ if (g_app_info_equal (application, default_application)) {
actions = g_list_prepend (actions, action);
} else {
actions = g_list_append (actions, action);
@@ -313,18 +332,19 @@ static void
module_files_activate_action (LbAction *action,
LbModuleFiles *module)
{
- GnomeVFSMimeApplication *application;
- LbItemFile *item;
- GList list;
+ GdkAppLaunchContext* context;
+ GAppInfo * application;
+ LbItemFile* item;
+ GList list;
item = LB_ITEM_FILE (lb_action_get_item (action));
list.next = NULL;
list.data = (gpointer) lb_item_file_get_uri (item);
- application = (GnomeVFSMimeApplication *) lb_action_get_data (action);
-
- gnome_vfs_mime_application_launch (application, &list);
+ application = G_APP_INFO (lb_action_get_data (action));
- g_print ("activate me!\n");
+ context = gdk_app_launch_context_new ();
+ g_app_info_launch (application, &list, G_APP_LAUNCH_CONTEXT (context), NULL);
+ g_object_unref (context);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]