[epiphany/wip/sync] synchronizable: Add more methods



commit 27cac02031dfabece410f230e68ef2269e46fd6c
Author: Gabriel Ivascu <ivascu gabriel59 gmail com>
Date:   Tue Mar 21 13:33:41 2017 +0200

    synchronizable: Add more methods

 src/sync/ephy-synchronizable.c |   99 ++++++++++++++++++++++++++++++++++++++++
 src/sync/ephy-synchronizable.h |   36 +++++++++++----
 2 files changed, 126 insertions(+), 9 deletions(-)
---
diff --git a/src/sync/ephy-synchronizable.c b/src/sync/ephy-synchronizable.c
index 6a722b1..be305fb 100644
--- a/src/sync/ephy-synchronizable.c
+++ b/src/sync/ephy-synchronizable.c
@@ -33,6 +33,10 @@ static void
 ephy_synchronizable_default_init (EphySynchronizableInterface *iface)
 {
   iface->get_id = ephy_synchronizable_get_id;
+  iface->get_modification_time = ephy_synchronizable_get_modification_time;
+  iface->set_modification_time = ephy_synchronizable_set_modification_time;
+  iface->is_uploaded = ephy_synchronizable_is_uploaded;
+  iface->set_is_uploaded = ephy_synchronizable_set_is_uploaded;
   iface->to_bso = ephy_synchronizable_to_bso;
 
   g_object_interface_install_property (iface,
@@ -63,6 +67,101 @@ ephy_synchronizable_get_id (EphySynchronizable *synchronizable)
 }
 
 /**
+ * ephy_synchronizable_set_id:
+ * @synchronizable: an #EphySynchronizable
+ * @id: @synchronizable's new id
+ *
+ * Sets @id as @synchronizable's id.
+ **/
+void
+ephy_synchronizable_set_id (EphySynchronizable *synchronizable,
+                            const char         *id)
+{
+  EphySynchronizableInterface *iface;
+
+  g_return_if_fail (EPHY_IS_SYNCHRONIZABLE (synchronizable));
+
+  iface = EPHY_SYNCHRONIZABLE_GET_IFACE (synchronizable);
+  return iface->set_id (synchronizable, id);
+}
+
+/**
+ * ephy_synchronizable_get_modification_time:
+ * @synchronizable: an #EphySynchronizable
+ *
+ * Returns @synchronizable's last modification time.
+ *
+ * Return value: @synchronizable's last modification time
+ **/
+double
+ephy_synchronizable_get_modification_time (EphySynchronizable *synchronizable)
+{
+  EphySynchronizableInterface *iface;
+
+  g_return_val_if_fail (EPHY_IS_SYNCHRONIZABLE (synchronizable), 0);
+
+  iface = EPHY_SYNCHRONIZABLE_GET_IFACE (synchronizable);
+  return iface->get_modification_time (synchronizable);
+}
+
+/**
+ * ephy_synchronizable_set_modification_time:
+ * @synchronizable: an #EphySynchronizable
+ * @modified: the last modification time
+ *
+ * Sets @modified as @synchronizable's last modification time.
+ **/
+void
+ephy_synchronizable_set_modification_time (EphySynchronizable *synchronizable,
+                                           double              modified)
+{
+  EphySynchronizableInterface *iface;
+
+  g_return_if_fail (EPHY_IS_SYNCHRONIZABLE (synchronizable));
+
+  iface = EPHY_SYNCHRONIZABLE_GET_IFACE (synchronizable);
+  return iface->set_modification_time (synchronizable, modified);
+}
+
+/**
+ * ephy_synchronizable_is_uploaded:
+ * @synchronizable: an #EphySynchronizable
+ *
+ * Returns TRUE is @synchronizable is uploaded to server, FALSE otherwise.
+ *
+ * Return value: TRUE if @synchronizable is uploaded, FALSE otherwise
+ **/
+gboolean
+ephy_synchronizable_is_uploaded (EphySynchronizable *synchronizable)
+{
+  EphySynchronizableInterface *iface;
+
+  g_return_val_if_fail (EPHY_IS_SYNCHRONIZABLE (synchronizable), FALSE);
+
+  iface = EPHY_SYNCHRONIZABLE_GET_IFACE (synchronizable);
+  return iface->is_uploaded (synchronizable);
+}
+
+/**
+ * ephy_synchronizable_set_is_uploaded:
+ * @synchronizable: an #EphySynchronizable
+ * @uploaded: TRUE if @synchronizable is uploaded to server, FALSE otherwise
+ *
+ * Sets @synchronizable's uploaded flag.
+ **/
+void
+ephy_synchronizable_set_is_uploaded (EphySynchronizable *synchronizable,
+                                     gboolean            uploaded)
+{
+  EphySynchronizableInterface *iface;
+
+  g_return_if_fail (EPHY_IS_SYNCHRONIZABLE (synchronizable));
+
+  iface = EPHY_SYNCHRONIZABLE_GET_IFACE (synchronizable);
+  return iface->set_is_uploaded (synchronizable, uploaded);
+}
+
+/**
  * ephy_synchronizable_to_bso:
  * @synchronizable: an #EphySynchronizable
  * @error: return location for a #GError, or %NULL
diff --git a/src/sync/ephy-synchronizable.h b/src/sync/ephy-synchronizable.h
index 6263d4e..4a4a4dd 100644
--- a/src/sync/ephy-synchronizable.h
+++ b/src/sync/ephy-synchronizable.h
@@ -36,19 +36,37 @@ G_DECLARE_INTERFACE (EphySynchronizable, ephy_synchronizable, EPHY, SYNCHRONIZAB
 struct _EphySynchronizableInterface {
   GTypeInterface parent_iface;
 
-  const char * (*get_id)  (EphySynchronizable  *synchronizable);
+  const char * (*get_id)                  (EphySynchronizable  *synchronizable);
+  void         (*set_id)                  (EphySynchronizable  *synchronizable,
+                                           const char          *id);
 
-  char *       (*to_bso)  (EphySynchronizable  *synchronizable,
-                           GError             **error);
+  double       (*get_modification_time)   (EphySynchronizable  *synchronizable);
+  void         (*set_modification_time)   (EphySynchronizable  *synchronizable,
+                                           double               modified);
+
+  gboolean     (*is_uploaded)             (EphySynchronizable  *synchronizable);
+  void         (*set_is_uploaded)         (EphySynchronizable  *synchronizable,
+                                           gboolean             uploaded);
+
+  char *       (*to_bso)                  (EphySynchronizable  *synchronizable,
+                                           GError             **error);
 };
 
-const char          *ephy_synchronizable_get_id   (EphySynchronizable  *synchronizable);
-char                *ephy_synchronizable_to_bso   (EphySynchronizable  *synchronizable,
-                                                   GError             **error);
+const char          *ephy_synchronizable_get_id                 (EphySynchronizable  *synchronizable);
+void                 ephy_synchronizable_set_id                 (EphySynchronizable  *synchronizable,
+                                                                 const char          *id);
+double               ephy_synchronizable_get_modification_time  (EphySynchronizable  *synchronizable);
+void                 ephy_synchronizable_set_modification_time  (EphySynchronizable  *synchronizable,
+                                                                 double               modified);
+gboolean             ephy_synchronizable_is_uploaded            (EphySynchronizable  *synchronizable);
+void                 ephy_synchronizable_set_is_uploaded        (EphySynchronizable  *synchronizable,
+                                                                 gboolean             uploaded);
+char                *ephy_synchronizable_to_bso                 (EphySynchronizable  *synchronizable,
+                                                                 GError             **error);
 /* This can't be an interface method because we lack the EphySynchronizable object.
  * Think of it as more of an utility function. */
-GObject             *ephy_synchronizable_from_bso (JsonObject          *bso,
-                                                   GType                gtype,
-                                                   GError             **error);
+GObject             *ephy_synchronizable_from_bso   (JsonObject  *bso,
+                                                     GType        gtype,
+                                                     GError     **error);
 
 G_END_DECLS


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