[epiphany/wip/sync-rebase: 26/74] ephy-bookmark: Implement JsonSerializable interface
- From: Gabriel - Cristian Ivascu <gabrielivascu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/sync-rebase: 26/74] ephy-bookmark: Implement JsonSerializable interface
- Date: Thu, 29 Sep 2016 17:44:59 +0000 (UTC)
commit 0580e9cd44b9a2c85ef50a685083eece4b0935e0
Author: Gabriel Ivascu <ivascu gabriel59 gmail com>
Date: Thu Sep 29 15:04:57 2016 +0300
ephy-bookmark: Implement JsonSerializable interface
src/bookmarks/Makefile.am | 2 +
src/bookmarks/ephy-bookmark.c | 46 ++++++++++++++++++++++++++++++++++++++++-
2 files changed, 47 insertions(+), 1 deletions(-)
---
diff --git a/src/bookmarks/Makefile.am b/src/bookmarks/Makefile.am
index f71a17f..64cff1e 100644
--- a/src/bookmarks/Makefile.am
+++ b/src/bookmarks/Makefile.am
@@ -30,6 +30,7 @@ libephybookmarks_la_CPPFLAGS = \
-DLOCALEDIR=\"$(localedir)\" \
$(GLIB_CFLAGS) \
$(GTK_CFLAGS) \
+ $(JSON_GLIB_CFLAGS) \
$(LIBSECRET_CFLAGS) \
$(LIBSOUP_CFLAGS) \
$(WEBKIT2GTK_CFLAGS)
@@ -40,6 +41,7 @@ libephybookmarks_la_LIBADD = \
$(top_builddir)/lib/widgets/libephywidgets.la \
$(GLIB_LIBS) \
$(GTK_LIBS) \
+ $(JSON_GLIB_LIBS) \
$(LIBSECRET_LIBS) \
$(LIBSOUP_LIBS) \
$(WEBKIT2GTK_LIBS)
diff --git a/src/bookmarks/ephy-bookmark.c b/src/bookmarks/ephy-bookmark.c
index 559a1c2..44c4472 100644
--- a/src/bookmarks/ephy-bookmark.c
+++ b/src/bookmarks/ephy-bookmark.c
@@ -20,6 +20,8 @@
#include "ephy-bookmark.h"
+#include <json-glib/json-glib.h>
+
struct _EphyBookmark {
GObject parent_instance;
@@ -29,7 +31,12 @@ struct _EphyBookmark {
gint64 time_added;
};
-G_DEFINE_TYPE (EphyBookmark, ephy_bookmark, G_TYPE_OBJECT)
+static JsonSerializableIface *serializable_iface = NULL;
+
+static void json_serializable_iface_init (gpointer g_iface);
+
+G_DEFINE_TYPE_EXTENDED (EphyBookmark, ephy_bookmark, G_TYPE_OBJECT, 0,
+ G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE, json_serializable_iface_init))
enum {
PROP_0,
@@ -177,6 +184,43 @@ ephy_bookmark_init (EphyBookmark *self)
{
}
+static JsonNode *
+ephy_bookmark_json_serializable_serialize_property (JsonSerializable *serializable,
+ const gchar *property_name,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ return serializable_iface->serialize_property (serializable,
+ property_name,
+ value,
+ pspec);
+}
+
+static gboolean
+ephy_bookmark_json_serializable_deserialize_property (JsonSerializable *serializable,
+ const gchar *property_name,
+ GValue *value,
+ GParamSpec *pspec,
+ JsonNode *property_node)
+{
+ return serializable_iface->deserialize_property (serializable,
+ property_name,
+ value,
+ pspec,
+ property_node);
+}
+
+static void
+json_serializable_iface_init (gpointer g_iface)
+{
+ JsonSerializableIface *iface = g_iface;
+
+ serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
+
+ iface->serialize_property = ephy_bookmark_json_serializable_serialize_property;
+ iface->deserialize_property = ephy_bookmark_json_serializable_deserialize_property;
+}
+
EphyBookmark *
ephy_bookmark_new (const char *url, const char *title, GSequence *tags)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]