summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2011-05-20 11:34:31 +1000
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2011-05-20 12:03:14 +1000
commit04e06bd134669152715ea52a33193c50f0ed0d87 (patch)
treec0f6d15353bff3ffd6eb70c1a6258235454719a7
parent9ce98f98818e2ef3d055185747dc540e2650309d (diff)
downloadempathy-04e06bd134669152715ea52a33193c50f0ed0d87.tar.gz
Add 'supersedes' property to EmpathyMessage
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.
-rw-r--r--libempathy/empathy-message.c42
-rw-r--r--libempathy/empathy-message.h2
2 files changed, 44 insertions, 0 deletions
diff --git a/libempathy/empathy-message.c b/libempathy/empathy-message.c
index 7bb26d0d0..4d25b30ae 100644
--- a/libempathy/empathy-message.c
+++ b/libempathy/empathy-message.c
@@ -47,6 +47,7 @@ typedef struct {
EmpathyContact *sender;
EmpathyContact *receiver;
gchar *token;
+ gchar *supersedes;
gchar *body;
gint64 timestamp;
gboolean is_backlog;
@@ -73,6 +74,7 @@ enum {
PROP_SENDER,
PROP_RECEIVER,
PROP_TOKEN,
+ PROP_SUPERSEDES,
PROP_BODY,
PROP_TIMESTAMP,
PROP_IS_BACKLOG,
@@ -122,6 +124,13 @@ empathy_message_class_init (EmpathyMessageClass *class)
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",
"Message Body",
@@ -194,6 +203,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);
@@ -222,6 +232,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;
@@ -269,6 +282,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);
@@ -465,6 +482,30 @@ empathy_message_get_token (EmpathyMessage *message)
}
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)
{
EmpathyMessagePriv *priv;
@@ -673,6 +714,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,
diff --git a/libempathy/empathy-message.h b/libempathy/empathy-message.h
index cbbc6e255..16c9e62e1 100644
--- a/libempathy/empathy-message.h
+++ b/libempathy/empathy-message.h
@@ -68,6 +68,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);