[tracker/firefox] tracker-search: Add support for -b, --bookmarks
- From: Martyn James Russell <mr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/firefox] tracker-search: Add support for -b, --bookmarks
- Date: Thu, 28 Jul 2011 16:01:41 +0000 (UTC)
commit 069fa0583b2f09305fb1877a045f0dda53cd941c
Author: Martyn Russell <martyn lanedo com>
Date: Thu Jul 28 17:00:42 2011 +0100
tracker-search: Add support for -b, --bookmarks
docs/manpages/tracker-search.1 | 16 ++++++
src/tracker-utils/tracker-search.c | 97 ++++++++++++++++++++++++++++++++++++
2 files changed, 113 insertions(+), 0 deletions(-)
---
diff --git a/docs/manpages/tracker-search.1 b/docs/manpages/tracker-search.1
index 2c29871..72f0bbb 100644
--- a/docs/manpages/tracker-search.1
+++ b/docs/manpages/tracker-search.1
@@ -79,6 +79,22 @@ of subjects for emails found.
Search for contacts matching \fIEXPRESSION\fR (optional). Returns a list
of names and email addresses found.
.TP
+.B \-\-software=EXPRESSION
+Search for software installed matching \fIEXPRESSION\fR (optional). Returns a list
+of desktop files and application titles found.
+.TP
+.B \-\-software-categories=EXPRESSION
+Search for software categories matching \fIEXPRESSION\fR (optional). Returns a list
+of urns and their categories (e.g. Settings, Video, Utility, etc).
+.TP
+.B \-\-feeds=EXPRESSION
+Search through RSS feed information matching \fIEXPRESSION\fR (optional). Returns a list
+of those found.
+.TP
+.B \-b, \-\-bookmarks=EXPRESSION
+Search through bookmarks matching \fIEXPRESSION\fR (optional). Returns a list
+titles and links for each bookmark found.
+.TP
.B \-V, \-\-version
Print version.
diff --git a/src/tracker-utils/tracker-search.c b/src/tracker-utils/tracker-search.c
index 8434f4d..25b5e58 100644
--- a/src/tracker-utils/tracker-search.c
+++ b/src/tracker-utils/tracker-search.c
@@ -60,6 +60,7 @@ static gboolean contacts;
static gboolean feeds;
static gboolean software;
static gboolean software_categories;
+static gboolean bookmarks;
static gboolean print_version;
static GOptionEntry entries[] = {
@@ -135,6 +136,10 @@ static GOptionEntry entries[] = {
N_("Search for feeds (--all has no effect on this)"),
NULL
},
+ { "bookmarks", 'b', 0, G_OPTION_ARG_NONE, &bookmarks,
+ N_("Search for bookmarks (--all has no effect on this)"),
+ NULL
+ },
{ "version", 'V', 0, G_OPTION_ARG_NONE, &print_version,
N_("Print version"),
NULL
@@ -845,6 +850,88 @@ get_music_albums (TrackerSparqlConnection *connection,
}
static gboolean
+get_bookmarks (TrackerSparqlConnection *connection,
+ GStrv search_terms,
+ gint search_offset,
+ gint search_limit,
+ gboolean use_or_operator)
+{
+ GError *error = NULL;
+ TrackerSparqlCursor *cursor;
+ gchar *fts;
+ gchar *query;
+
+ fts = get_fts_string (search_terms, use_or_operator);
+
+ if (fts) {
+ query = g_strdup_printf ("SELECT nie:title(?urn) nie:url(?bookmark) "
+ "WHERE {"
+ " ?urn a nfo:Bookmark ;"
+ " nfo:bookmarks ?bookmark ."
+ " ?urn fts:match \"%s\" . "
+ "} "
+ "ORDER BY ASC(nie:title(?urn)) "
+ "OFFSET %d "
+ "LIMIT %d",
+ fts,
+ search_offset,
+ search_limit);
+ } else {
+ query = g_strdup_printf ("SELECT nie:title(?urn) nie:url(?bookmark) "
+ "WHERE {"
+ " ?urn a nfo:Bookmark ;"
+ " nfo:bookmarks ?bookmark ."
+ "} "
+ "ORDER BY ASC(nie:title(?urn)) "
+ "OFFSET %d "
+ "LIMIT %d",
+ search_offset,
+ search_limit);
+ }
+
+ g_free (fts);
+
+ cursor = tracker_sparql_connection_query (connection, query, NULL, &error);
+ g_free (query);
+
+ if (error) {
+ g_printerr ("%s, %s\n",
+ _("Could not get search results"),
+ error->message);
+ g_error_free (error);
+
+ return FALSE;
+ }
+
+ if (!cursor) {
+ g_print ("%s\n",
+ _("No bookmarks were found"));
+ } else {
+ gint count = 0;
+
+ g_print ("%s:\n", _("Bookmarks"));
+
+ while (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
+ g_print (" %s (%s)\n",
+ tracker_sparql_cursor_get_string (cursor, 0, NULL),
+ tracker_sparql_cursor_get_string (cursor, 1, NULL));
+
+ count++;
+ }
+
+ g_print ("\n");
+
+ if (count >= search_limit) {
+ show_limit_warning ();
+ }
+
+ g_object_unref (cursor);
+ }
+
+ return TRUE;
+}
+
+static gboolean
get_feeds (TrackerSparqlConnection *connection,
GStrv search_terms,
gint search_offset,
@@ -1352,6 +1439,7 @@ main (int argc, char **argv)
}
if (!music_albums && !music_artists && !music_files &&
+ !bookmarks &&
!feeds &&
!software &&
!software_categories &&
@@ -1565,6 +1653,15 @@ main (int argc, char **argv)
return success ? EXIT_SUCCESS : EXIT_FAILURE;
}
+ if (bookmarks) {
+ gboolean success;
+
+ success = get_bookmarks (connection, terms, offset, limit, or_operator);
+ g_object_unref (connection);
+
+ return success ? EXIT_SUCCESS : EXIT_FAILURE;
+ }
+
if (terms) {
gboolean success;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]