]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-message.c
Merge commit 'jtellier/video-call-button-sensitivity'
[empathy.git] / libempathy / empathy-message.c
index b45b41a8338f15f11a9da81af986085c40d80bb2..a8fe6084cfe1495d54b8a5128f8671e08cad7b29 100644 (file)
@@ -15,8 +15,8 @@
  *
  * You should have received a copy of the GNU General Public
  * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA  02110-1301  USA
  *
  * Authors: Mikael Hallendal <micke@imendio.com>
  *          Xavier Claessens <xclaesse@gmail.com>
@@ -26,6 +26,8 @@
 
 #include <string.h>
 
+#include <telepathy-glib/util.h>
+
 #include "empathy-message.h"
 #include "empathy-utils.h"
 #include "empathy-enum-types.h"
@@ -37,6 +39,8 @@ typedef struct {
        EmpathyContact           *receiver;
        gchar                    *body;
        time_t                    timestamp;
+       gboolean                  is_backlog;
+       guint                     id;
 } EmpathyMessagePriv;
 
 static void empathy_message_finalize   (GObject            *object);
@@ -58,6 +62,7 @@ enum {
        PROP_RECEIVER,
        PROP_BODY,
        PROP_TIMESTAMP,
+       PROP_IS_BACKLOG,
 };
 
 static void
@@ -109,6 +114,13 @@ empathy_message_class_init (EmpathyMessageClass *class)
                                                            G_MAXLONG,
                                                            -1,
                                                            G_PARAM_READWRITE));
+       g_object_class_install_property (object_class,
+                                        PROP_IS_BACKLOG,
+                                        g_param_spec_boolean ("is-backlog",
+                                                              "History message",
+                                                              "If the message belongs to history",
+                                                              FALSE,
+                                                              G_PARAM_READWRITE));
 
 
        g_type_class_add_private (object_class, sizeof (EmpathyMessagePriv));
@@ -384,24 +396,31 @@ empathy_message_set_timestamp (EmpathyMessage *message,
        g_object_notify (G_OBJECT (message), "timestamp");
 }
 
-GDate *
-empathy_message_get_date_and_time (EmpathyMessage *message, time_t *timestamp)
+gboolean
+empathy_message_is_backlog (EmpathyMessage *message)
 {
-       GDate *date;
+       EmpathyMessagePriv *priv;
 
-       *timestamp = 0;
-       if (message) {
-               *timestamp = empathy_message_get_timestamp (message);
-       }
+       g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), FALSE);
 
-       if (timestamp <= 0) {
-               *timestamp = empathy_time_get_current ();
-       }
+       priv = GET_PRIV (message);
+
+       return priv->is_backlog;
+}
+
+void
+empathy_message_set_is_backlog (EmpathyMessage *message,
+                               gboolean is_backlog)
+{
+       EmpathyMessagePriv *priv;
+
+       g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+
+       priv = GET_PRIV (message);
 
-       date = g_date_new ();
-       g_date_set_time_t (date, *timestamp);
+       priv->is_backlog = is_backlog;
 
-       return date;
+       g_object_notify (G_OBJECT (message), "is-backlog");
 }
 
 #define IS_SEPARATOR(ch) (ch == ' ' || ch == ',' || ch == '.' || ch == ':')
@@ -499,3 +518,39 @@ empathy_message_type_to_str (TpChannelTextMessageType type)
        }
 }
 
+guint
+empathy_message_get_id (EmpathyMessage *message)
+{
+       EmpathyMessagePriv *priv = GET_PRIV (message);
+
+       g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), 0);
+
+       return priv->id;
+}
+
+void
+empathy_message_set_id (EmpathyMessage *message, guint id)
+{
+       EmpathyMessagePriv *priv = GET_PRIV (message);
+
+       priv->id = id;
+}
+
+gboolean
+empathy_message_equal (EmpathyMessage *message1, EmpathyMessage *message2)
+{
+       EmpathyMessagePriv *priv1;
+       EmpathyMessagePriv *priv2;
+
+       g_return_val_if_fail (EMPATHY_IS_MESSAGE (message1), FALSE);
+       g_return_val_if_fail (EMPATHY_IS_MESSAGE (message2), FALSE);
+
+       priv1 = GET_PRIV (message1);
+       priv2 = GET_PRIV (message2);
+
+       if (priv1->id == priv2->id && !tp_strdiff (priv1->body, priv2->body)) {
+               return TRUE;
+       }
+
+       return FALSE;
+}