[tracker/tracker-0.10] tracker-miner-fs: Use XDG locations not static values for desktop files
- From: Martyn James Russell <mr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/tracker-0.10] tracker-miner-fs: Use XDG locations not static values for desktop files
- Date: Thu, 18 Aug 2011 13:45:37 +0000 (UTC)
commit ff9f075778f048e7e5be16c0494b7318c176dcca
Author: Martyn Russell <martyn lanedo com>
Date: Thu Aug 18 12:18:20 2011 +0100
tracker-miner-fs: Use XDG locations not static values for desktop files
We were using just $prefix/share/{applications|desktop-directories}. Now we
use {applications|desktop-directories} for all XDG system dirs and XDG user
dirs. This list can include for example:
: Setting up applications to iterate from XDG system directories
: Adding:'/usr/share/gnome-classic/applications'
: Adding:'/usr/share/gnome-classic/desktop-directories'
: Adding:'/usr/share/gnome/applications'
: Adding:'/usr/share/gnome/desktop-directories'
: Adding:'/usr/local/share/applications'
: Adding:'/usr/local/share/desktop-directories'
: Adding:'/usr/share/applications'
: Adding:'/usr/share/desktop-directories'
: Setting up applications to iterate from XDG user directories
: Adding:'/home/martyn/.local/share/applications'
: Adding:'/home/martyn/.local/share/desktop-directories'
: Setting up applications to iterate from MeegoTouch directories
: Adding:'/usr/lib/duicontrolpanel/'
Previously the list was 3 locations. So now more applications are indexed.
This fixes NB#256958
src/miners/fs/tracker-miner-applications.c | 64 +++++++++++++++++++++++----
1 files changed, 54 insertions(+), 10 deletions(-)
---
diff --git a/src/miners/fs/tracker-miner-applications.c b/src/miners/fs/tracker-miner-applications.c
index 1762f13..ee3fe52 100644
--- a/src/miners/fs/tracker-miner-applications.c
+++ b/src/miners/fs/tracker-miner-applications.c
@@ -106,14 +106,44 @@ miner_applications_initable_iface_init (GInitableIface *iface)
iface->init = miner_applications_initable_init;
}
+static void
+miner_applications_basedir_add (TrackerMinerFS *fs,
+ const gchar *basedir)
+{
+ GFile *file;
+ gchar *path;
+
+ /* Add $dir/applications */
+ path = g_build_filename (basedir, "applications", NULL);
+ file = g_file_new_for_path (path);
+ g_message (" Adding:'%s'", path);
+ tracker_miner_fs_directory_add (fs, file, TRUE);
+ g_object_unref (file);
+ g_free (path);
+
+ /* Add $dir/desktop-directories */
+ path = g_build_filename (basedir, "desktop-directories", NULL);
+ file = g_file_new_for_path (path);
+ g_message (" Adding:'%s'", path);
+ tracker_miner_fs_directory_add (fs, file, TRUE);
+ g_object_unref (file);
+ g_free (path);
+}
+
static gboolean
miner_applications_initable_init (GInitable *initable,
GCancellable *cancellable,
GError **error)
{
TrackerMinerFS *fs;
- GFile *file;
GError *inner_error = NULL;
+#ifdef HAVE_MEEGOTOUCH
+ GFile *file;
+ const gchar *path;
+#endif /* HAVE_MEEGOTOUCH */
+ const gchar * const *xdg_dirs;
+ const gchar *user_data_dir;
+ gint i;
fs = TRACKER_MINER_FS (initable);
@@ -123,23 +153,37 @@ miner_applications_initable_init (GInitable *initable,
return FALSE;
}
- file = g_file_new_for_path ("/usr/share/applications/");
- tracker_miner_fs_directory_add (fs, file, TRUE);
- g_object_unref (file);
+ g_message ("Setting up applications to iterate from XDG system directories");
- file = g_file_new_for_path ("/usr/share/desktop-directories/");
- tracker_miner_fs_directory_add (fs, file, TRUE);
- g_object_unref (file);
+ /* Add all XDG system and local dirs */
+ xdg_dirs = g_get_system_data_dirs ();
+
+ for (i = 0; xdg_dirs[i]; i++) {
+ miner_applications_basedir_add (fs, xdg_dirs[i]);
+ }
+
+ g_message ("Setting up applications to iterate from XDG user directories");
+
+ user_data_dir = g_get_user_data_dir ();
+ if (user_data_dir) {
+ miner_applications_basedir_add (fs, user_data_dir);
+ }
#ifdef HAVE_MEEGOTOUCH
- file = g_file_new_for_path ("/usr/lib/duicontrolpanel/");
+ /* NOTE: We don't use miner_applications_basedir_add() for
+ * this location because it is unique to MeeGoTouch.
+ */
+ path = "/usr/lib/duicontrolpanel/";
+
+ g_message ("Setting up applications to iterate from MeegoTouch directories");
+ g_message (" Adding:'%s'", path);
+
+ file = g_file_new_for_path (path);
tracker_miner_fs_directory_add (fs, file, TRUE);
g_object_unref (file);
tracker_miner_applications_meego_init ();
#endif /* HAVE_MEEGOTOUCH */
- /* FIXME: Check XDG_DATA_DIRS and also process applications in there */
-
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]