[epiphany/wip/ephy-sync: 104/126] bookmarks-manager: Add function to get bookmark by id



commit 51007942338e00085084526129389e8816740f0f
Author: Gabriel Ivascu <ivascu gabriel59 gmail com>
Date:   Mon Aug 8 21:11:34 2016 +0300

    bookmarks-manager: Add function to get bookmark by id

 src/ephy-bookmarks-manager.c |   32 ++++++++++++++++++++++++++++++++
 src/ephy-bookmarks-manager.h |    2 ++
 2 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/src/ephy-bookmarks-manager.c b/src/ephy-bookmarks-manager.c
index b6ec82e..39f4413 100644
--- a/src/ephy-bookmarks-manager.c
+++ b/src/ephy-bookmarks-manager.c
@@ -361,6 +361,38 @@ ephy_bookmarks_manager_get_bookmark_by_url (EphyBookmarksManager *self,
   return NULL;
 }
 
+static int
+bookmark_with_id_compare (gpointer      *ebookmark,
+                          gconstpointer  id)
+{
+  EphyBookmark *bookmark = EPHY_BOOKMARK (ebookmark);
+  const char *bookmark_id;
+
+  bookmark_id = ephy_bookmark_get_id (bookmark);
+
+  return g_strcmp0 (bookmark_id, id);
+}
+
+EphyBookmark *
+ephy_bookmarks_manager_get_bookmark_by_id (EphyBookmarksManager *self,
+                                           const char           *id)
+{
+  GSequenceIter *iter;
+
+  g_return_val_if_fail (EPHY_IS_BOOKMARKS_MANAGER (self), FALSE);
+  g_return_val_if_fail (id != NULL, FALSE);
+
+  iter = g_sequence_lookup (self->bookmarks,
+                            (gpointer)id,
+                            (GCompareDataFunc)bookmark_with_id_compare,
+                            NULL);
+
+  if (iter == NULL)
+    return NULL;
+
+  return g_sequence_get (iter);
+}
+
 void
 ephy_bookmarks_manager_add_tag (EphyBookmarksManager *self, const char *tag)
 {
diff --git a/src/ephy-bookmarks-manager.h b/src/ephy-bookmarks-manager.h
index 2928d3a..3c5b2bd 100644
--- a/src/ephy-bookmarks-manager.h
+++ b/src/ephy-bookmarks-manager.h
@@ -36,6 +36,8 @@ void         ephy_bookmarks_manager_remove_bookmark        (EphyBookmarksManager
                                                             EphyBookmark         *bookmark);
 EphyBookmark *ephy_bookmarks_manager_get_bookmark_by_url   (EphyBookmarksManager *self,
                                                             const char           *url);
+EphyBookmark *ephy_bookmarks_manager_get_bookmark_by_id    (EphyBookmarksManager *self,
+                                                            const char           *id);
 
 void         ephy_bookmarks_manager_add_tag                (EphyBookmarksManager *self,
                                                             const char           *tag);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]