]> git.0d.be Git - empathy.git/commitdiff
Add 'supersedes' property to EmpathyMessage
authorDanielle Madeley <danielle.madeley@collabora.co.uk>
Fri, 20 May 2011 01:34:31 +0000 (11:34 +1000)
committerDanielle Madeley <danielle.madeley@collabora.co.uk>
Sun, 12 Jun 2011 06:56:47 +0000 (07:56 +0100)
It would be nice to remove EmpathyMessage, because now that TpMessages are a
GObject, EmpathyMessage is just an empty abstraction layer that we have to
keep punching through.

libempathy/empathy-message.c
libempathy/empathy-message.h

index 79625dd61cfa11e6137972a56fe5eb72f1c25089..d68309bb3b7fa705155420bb321ff366b6daef21 100644 (file)
@@ -50,6 +50,7 @@ typedef struct {
        EmpathyContact           *sender;
        EmpathyContact           *receiver;
        gchar                    *token;
+       gchar                    *supersedes;
        gchar                    *body;
        gint64                    timestamp;
        gboolean                  is_backlog;
@@ -76,6 +77,7 @@ enum {
        PROP_SENDER,
        PROP_RECEIVER,
        PROP_TOKEN,
+       PROP_SUPERSEDES,
        PROP_BODY,
        PROP_TIMESTAMP,
        PROP_IS_BACKLOG,
@@ -125,6 +127,13 @@ empathy_message_class_init (EmpathyMessageClass *class)
                                                              "The message-token",
                                                              NULL,
                                                              G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY));
+       g_object_class_install_property (object_class,
+                                        PROP_SUPERSEDES,
+                                        g_param_spec_string ("supersedes",
+                                                             "Supersedes Token",
+                                                             "The message-token this message supersedes",
+                                                             NULL,
+                                                             G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY));
        g_object_class_install_property (object_class,
                                         PROP_BODY,
                                         g_param_spec_string ("body",
@@ -211,6 +220,7 @@ empathy_message_finalize (GObject *object)
        }
 
        g_free (priv->token);
+       g_free (priv->supersedes);
        g_free (priv->body);
 
        G_OBJECT_CLASS (empathy_message_parent_class)->finalize (object);
@@ -239,6 +249,9 @@ message_get_property (GObject    *object,
        case PROP_TOKEN:
                g_value_set_string (value, priv->token);
                break;
+       case PROP_SUPERSEDES:
+               g_value_set_string (value, priv->supersedes);
+               break;
        case PROP_BODY:
                g_value_set_string (value, priv->body);
                break;
@@ -289,6 +302,10 @@ message_set_property (GObject      *object,
                g_assert (priv->token == NULL); /* construct only */
                priv->token = g_value_dup_string (value);
                break;
+       case PROP_SUPERSEDES:
+               g_assert (priv->supersedes == NULL); /* construct only */
+               priv->supersedes = g_value_dup_string (value);
+               break;
        case PROP_BODY:
                g_assert (priv->body == NULL); /* construct only */
                priv->body = g_value_dup_string (value);
@@ -501,6 +518,30 @@ empathy_message_get_token (EmpathyMessage *message)
        return priv->token;
 }
 
+const gchar *
+empathy_message_get_supersedes (EmpathyMessage *message)
+{
+       EmpathyMessagePriv *priv;
+
+       g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), NULL);
+
+       priv = GET_PRIV (message);
+
+       return priv->supersedes;
+}
+
+gboolean
+empathy_message_is_edit (EmpathyMessage *message)
+{
+       EmpathyMessagePriv *priv;
+
+       g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), FALSE);
+
+       priv = GET_PRIV (message);
+
+       return !tp_str_empty (priv->supersedes);
+}
+
 const gchar *
 empathy_message_get_body (EmpathyMessage *message)
 {
@@ -698,6 +739,7 @@ empathy_message_new_from_tp_message (TpMessage *tp_msg,
        message = g_object_new (EMPATHY_TYPE_MESSAGE,
                "body", body,
                "token", tp_message_get_token (tp_msg),
+               "supersedes", tp_message_get_supersedes (tp_msg),
                "type", tp_message_get_message_type (tp_msg),
                "timestamp", tp_message_get_received_timestamp (tp_msg),
                "flags", flags,
index f6c57ed2a23c436d9cce050fe6b054916ee68d21..cb0596702b99347274ca69fc3788970cc417e726 100644 (file)
@@ -70,6 +70,8 @@ void                     empathy_message_set_receiver      (EmpathyMessage
                                                            EmpathyContact           *contact);
 const gchar *            empathy_message_get_body          (EmpathyMessage           *message);
 const gchar *            empathy_message_get_token         (EmpathyMessage           *message);
+const gchar *            empathy_message_get_supersedes    (EmpathyMessage           *message);
+gboolean                 empathy_message_is_edit           (EmpathyMessage           *message);
 gint64                   empathy_message_get_timestamp     (EmpathyMessage           *message);
 gboolean                 empathy_message_is_backlog        (EmpathyMessage           *message);
 gboolean                 empathy_message_is_incoming       (EmpathyMessage           *message);