time_t timestamp;
gboolean is_backlog;
guint id;
+ gboolean incoming;
} EmpathyMessagePriv;
static void empathy_message_finalize (GObject *object);
PROP_BODY,
PROP_TIMESTAMP,
PROP_IS_BACKLOG,
+ PROP_INCOMING,
};
static void
empathy_message_class_init (EmpathyMessageClass *class)
{
GObjectClass *object_class;
+ GParamSpec *pspec;
object_class = G_OBJECT_CLASS (class);
object_class->finalize = empathy_message_finalize;
G_PARAM_READWRITE));
+ pspec = g_param_spec_boolean ("incoming",
+ "Incoming",
+ "If this is an incoming (as opposed to sent) message",
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (object_class, PROP_INCOMING, pspec);
+
g_type_class_add_private (object_class, sizeof (EmpathyMessagePriv));
}
case PROP_BODY:
g_value_set_string (value, priv->body);
break;
+ case PROP_INCOMING:
+ g_value_set_boolean (value, priv->incoming);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
empathy_message_set_body (EMPATHY_MESSAGE (object),
g_value_get_string (value));
break;
+ case PROP_INCOMING:
+ priv->incoming = g_value_get_boolean (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
priv->id = id;
}
+void
+empathy_message_set_incoming (EmpathyMessage *message, gboolean incoming)
+{
+ g_object_set (message, "incoming", incoming, NULL);
+}
+
+gboolean
+empathy_message_is_incoming (EmpathyMessage *message)
+{
+ EmpathyMessagePriv *priv = GET_PRIV (message);
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), FALSE);
+
+ return priv->incoming;
+}
+
gboolean
empathy_message_equal (EmpathyMessage *message1, EmpathyMessage *message2)
{
gboolean empathy_message_is_backlog (EmpathyMessage *message);
void empathy_message_set_is_backlog (EmpathyMessage *message,
gboolean is_backlog);
+gboolean empathy_message_is_incoming (EmpathyMessage *message);
+void empathy_message_set_incoming (EmpathyMessage *message,
+ gboolean incoming);
+
gboolean empathy_message_should_highlight (EmpathyMessage *message);
TpChannelTextMessageType empathy_message_type_from_str (const gchar *type_str);
const gchar * empathy_message_type_to_str (TpChannelTextMessageType type);
static void
tp_chat_build_message (EmpathyTpChat *chat,
+ gboolean incoming,
guint id,
guint type,
guint timestamp,
empathy_message_set_receiver (message, priv->user);
empathy_message_set_timestamp (message, timestamp);
empathy_message_set_id (message, id);
+ empathy_message_set_incoming (message, incoming);
+
g_queue_push_tail (priv->messages_queue, message);
if (from_handle == 0) {
}
tp_chat_build_message (chat,
+ TRUE,
message_id,
message_type,
timestamp,
DEBUG ("Message sent: %s", message_body);
tp_chat_build_message (chat,
+ FALSE,
0,
message_type,
timestamp,
}
tp_chat_build_message (chat,
+ TRUE,
message_id,
message_type,
timestamp,
g_return_if_fail (EMPATHY_IS_TP_CHAT (chat));
g_return_if_fail (priv->ready);
- if (empathy_message_get_sender (message) == priv->user)
+ if (!empathy_message_is_incoming (message))
goto out;
message_ids = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1);
g_assert (m != NULL);
g_queue_delete_link (priv->pending_messages_queue, m);
- if (empathy_message_get_sender (message) != priv->user) {
+ if (empathy_message_is_incoming (message)) {
guint id = empathy_message_get_id (message);
g_array_append_val (message_ids, id);
}