aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-02-24 03:32:57 +0800
committerCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-02-26 01:26:57 +0800
commit8d4d46e440c7a6bd321fc098265db8ede27c07de (patch)
treebcdffe751459a38bd950d5424d628d831c5243a7 /libempathy
parent8e24107b437f63d9b2ca93e0d5b7379ee87af98d (diff)
downloadgsoc2013-empathy-8d4d46e440c7a6bd321fc098265db8ede27c07de.tar.gz
gsoc2013-empathy-8d4d46e440c7a6bd321fc098265db8ede27c07de.tar.zst
gsoc2013-empathy-8d4d46e440c7a6bd321fc098265db8ede27c07de.zip
TPL Enabling patch, all-in-one.
By default TPL is disabled, use --enable-tpl configure option to enable it.
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/Makefile.am34
-rw-r--r--libempathy/empathy-contact.c30
-rw-r--r--libempathy/empathy-contact.h7
-rw-r--r--libempathy/empathy-log-manager.h4
-rw-r--r--libempathy/empathy-log-store-empathy.h4
-rw-r--r--libempathy/empathy-log-store.h4
-rw-r--r--libempathy/empathy-message.c78
-rw-r--r--libempathy/empathy-message.h6
8 files changed, 158 insertions, 9 deletions
diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am
index f6f0c0a23..1f1423952 100644
--- a/libempathy/Makefile.am
+++ b/libempathy/Makefile.am
@@ -8,6 +8,7 @@ AM_CPPFLAGS = \
-DDATADIR=\""$(datadir)"\" \
-DLOCALEDIR=\""$(datadir)/locale"\" \
-DG_LOG_DOMAIN=\"empathy\" \
+ $(TPL_CFLAGS) \
$(LIBEMPATHY_CFLAGS) \
$(GEOCLUE_CFLAGS) \
$(NETWORK_MANAGER_CFLAGS) \
@@ -48,9 +49,6 @@ libempathy_headers = \
empathy-irc-network.h \
empathy-irc-server.h \
empathy-location.h \
- empathy-log-manager.h \
- empathy-log-store-empathy.h \
- empathy-log-store.h \
empathy-message.h \
empathy-status-presets.h \
empathy-time.h \
@@ -63,6 +61,14 @@ libempathy_headers = \
empathy-types.h \
empathy-utils.h
+if !ENABLE_TPL
+libempathy_headers += \
+ empathy-log-manager.h \
+ empathy-log-store-empathy.h \
+ empathy-log-store.h \
+ $(NULL)
+endif
+
libempathy_la_SOURCES = \
$(libempathy_headers) \
empathy-account-settings.c \
@@ -87,9 +93,6 @@ libempathy_la_SOURCES = \
empathy-irc-network-manager.c \
empathy-irc-network.c \
empathy-irc-server.c \
- empathy-log-manager.c \
- empathy-log-store-empathy.c \
- empathy-log-store.c \
empathy-message.c \
empathy-status-presets.c \
empathy-time.c \
@@ -101,6 +104,14 @@ libempathy_la_SOURCES = \
empathy-tp-roomlist.c \
empathy-utils.c
+if !ENABLE_TPL
+libempathy_la_SOURCES += \
+ empathy-log-manager.c \
+ empathy-log-store-empathy.c \
+ empathy-log-store.c \
+ $(NULL)
+endif
+
# do not distribute generated files
nodist_libempathy_la_SOURCES =\
$(BUILT_SOURCES)
@@ -109,6 +120,7 @@ libempathy_la_LIBADD = \
$(top_builddir)/extensions/libemp-extensions.la \
$(LIBEMPATHY_LIBS) \
$(GEOCLUE_LIBS) \
+ $(TPL_LIBS) \
$(NETWORK_MANAGER_LIBS) \
$(CONNMAN_LIBS)
@@ -181,9 +193,10 @@ dtd_DATA = \
empathy-chatroom-manager.dtd \
empathy-irc-networks.dtd
+if !ENABLE_TPL
stylesheetdir = $(datadir)/empathy
-stylesheet_DATA = \
- empathy-log-manager.xsl
+stylesheet_DATA = empathy-log-manager.xsl
+endif
ircnetworksdir = $(datadir)/empathy
ircnetworks_DATA = \
@@ -191,10 +204,13 @@ ircnetworks_DATA = \
EXTRA_DIST = \
empathy-marshal.list \
- $(stylesheet_DATA) \
$(dtd_DATA) \
$(ircnetworks_DATA)
+if !ENABLE_TPL
+EXTRA_DIST += $(stylesheet_DATA)
+endif
+
CLEANFILES = \
$(BUILT_SOURCES) \
stamp-empathy-enum-types.h
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c
index a440ef23b..feba1c0b7 100644
--- a/libempathy/empathy-contact.c
+++ b/libempathy/empathy-contact.c
@@ -27,6 +27,9 @@
#include <telepathy-glib/account-manager.h>
#include <telepathy-glib/util.h>
+#ifdef ENABEL_TPL
+#include <telepathy-logger/contact.h>
+#endif /* ENABLE_TPL */
#include "empathy-contact.h"
#include "empathy-utils.h"
@@ -408,6 +411,33 @@ empathy_contact_new (TpContact *tp_contact)
NULL);
}
+#ifdef ENABLE_TPL
+EmpathyContact *
+empathy_contact_from_tpl_contact (TpAccount *account,
+ TplContact *tpl_contact)
+{
+ EmpathyContact *retval;
+ gboolean is_user;
+
+ g_return_val_if_fail (TPL_IS_CONTACT (tpl_contact), NULL);
+
+ is_user = (TPL_CONTACT_USER == tpl_contact_get_contact_type (tpl_contact));
+
+ retval = g_object_new (EMPATHY_TYPE_CONTACT,
+ "id", tpl_contact_get_alias (tpl_contact),
+ "name", tpl_contact_get_identifier (tpl_contact),
+ "account", account,
+ "is-user", is_user,
+ NULL);
+
+ if (!EMP_STR_EMPTY (tpl_contact_get_avatar_token (tpl_contact)))
+ empathy_contact_load_avatar_cache (retval,
+ tpl_contact_get_avatar_token (tpl_contact));
+
+ return retval;
+}
+#endif /* ENABLE_TPL */
+
EmpathyContact *
empathy_contact_new_for_log (TpAccount *account,
const gchar *id,
diff --git a/libempathy/empathy-contact.h b/libempathy/empathy-contact.h
index 2dd6bc0fb..231f95b9d 100644
--- a/libempathy/empathy-contact.h
+++ b/libempathy/empathy-contact.h
@@ -26,6 +26,9 @@
#include <telepathy-glib/contact.h>
#include <telepathy-glib/account.h>
+#ifdef ENABLE_TPL
+#include <telepathy-logger/contact.h>
+#endif /* ENABLE_TPL */
G_BEGIN_DECLS
@@ -70,6 +73,10 @@ typedef enum {
GType empathy_contact_get_type (void) G_GNUC_CONST;
EmpathyContact * empathy_contact_new (TpContact *tp_contact);
+#ifdef ENABLE_TPL
+EmpathyContact * empathy_contact_from_tpl_contact (TpAccount *account,
+ TplContact *tpl_contact);
+#endif /* ENABLE_TPL */
EmpathyContact * empathy_contact_new_for_log (TpAccount *account,
const gchar *id, const gchar *name, gboolean is_user);
TpContact * empathy_contact_get_tp_contact (EmpathyContact *contact);
diff --git a/libempathy/empathy-log-manager.h b/libempathy/empathy-log-manager.h
index 25f1b5fcd..4e4097dc7 100644
--- a/libempathy/empathy-log-manager.h
+++ b/libempathy/empathy-log-manager.h
@@ -24,6 +24,9 @@
#ifndef __EMPATHY_LOG_MANAGER_H__
#define __EMPATHY_LOG_MANAGER_H__
+#include <config.h>
+#ifndef ENABLE_TPL
+
#include <glib-object.h>
#include "empathy-message.h"
@@ -100,4 +103,5 @@ void empathy_log_manager_observe (EmpathyLogManager *log_manager,
G_END_DECLS
+#endif /* ENABLE_TPL */
#endif /* __EMPATHY_LOG_MANAGER_H__ */
diff --git a/libempathy/empathy-log-store-empathy.h b/libempathy/empathy-log-store-empathy.h
index e77076a5b..3b26d2ccf 100644
--- a/libempathy/empathy-log-store-empathy.h
+++ b/libempathy/empathy-log-store-empathy.h
@@ -25,6 +25,9 @@
#ifndef __EMPATHY_LOG_STORE_EMPATHY_H__
#define __EMPATHY_LOG_STORE_EMPATHY_H__
+#include <config.h>
+#ifndef ENABLE_TPL
+
#include <glib.h>
G_BEGIN_DECLS
@@ -63,4 +66,5 @@ GType empathy_log_store_empathy_get_type (void);
G_END_DECLS
+#endif /* ENABLE_TPL */
#endif /* __EMPATHY_LOG_STORE_EMPATHY_H__ */
diff --git a/libempathy/empathy-log-store.h b/libempathy/empathy-log-store.h
index 94bc87386..185e38c93 100644
--- a/libempathy/empathy-log-store.h
+++ b/libempathy/empathy-log-store.h
@@ -23,6 +23,9 @@
#ifndef __EMPATHY_LOG_STORE_H__
#define __EMPATHY_LOG_STORE_H__
+#include <config.h>
+#ifndef ENABLE_TPL
+
#include <glib-object.h>
#include <telepathy-glib/account.h>
@@ -98,4 +101,5 @@ GList *empathy_log_store_get_filtered_messages (EmpathyLogStore *self,
G_END_DECLS
+#endif /* ENABLE_TPL */
#endif /* __EMPATHY_LOG_STORE_H__ */
diff --git a/libempathy/empathy-message.c b/libempathy/empathy-message.c
index 0fe457886..a46d7d9a7 100644
--- a/libempathy/empathy-message.c
+++ b/libempathy/empathy-message.c
@@ -27,6 +27,14 @@
#include <string.h>
#include <telepathy-glib/util.h>
+#ifdef ENABLE_TPL
+#include <telepathy-glib/account.h>
+#include <telepathy-glib/account-manager.h>
+
+#include <telepathy-logger/contact.h>
+#include <telepathy-logger/log-entry.h>
+#include <telepathy-logger/log-entry-text.h>
+#endif /* ENABLE_TPL */
#include "empathy-message.h"
#include "empathy-utils.h"
@@ -252,6 +260,71 @@ empathy_message_new (const gchar *body)
NULL);
}
+#ifdef ENABLE_TPL
+EmpathyMessage *
+empathy_message_from_tpl_log_entry (TplLogEntry *logentry)
+{
+ EmpathyMessage *retval = NULL;
+ TpAccountManager *acc_man = NULL;
+ TpAccount *account = NULL;
+ TplContact *receiver = NULL;
+ TplContact *sender = NULL;
+ gchar *body= NULL;
+
+ g_return_val_if_fail (TPL_IS_LOG_ENTRY (logentry), NULL);
+
+ acc_man = tp_account_manager_dup ();
+ /* FIXME Currently Empathy shows in the log viewer only valid accounts, so it
+ * won't be selected any non-existing (ie removed) account.
+ * When #610455 will be fixed, calling tp_account_manager_ensure_account ()
+ * might add a not existing account to the AM. tp_account_new () probably
+ * will be the best way to handle it.
+ * Note: When creating an EmpathyContact from a TplContact instance, the
+ * TpAccount is passed *only* to let EmpathyContact be able to retrieve the
+ * avatar (contact_get_avatar_filename () need a TpAccount).
+ * If the way EmpathyContact stores the avatar is changes, it might not be
+ * needed anymore any TpAccount passing and the following call will be
+ * useless */
+ account = tp_account_manager_ensure_account (acc_man,
+ tpl_log_entry_get_account_path (logentry));
+ g_object_unref (acc_man);
+
+ /* TODO Currently only TplLogEntryText exists as subclass of TplLogEntry, in
+ * future more TplLogEntry will exist and EmpathyMessage should probably
+ * be enhanced to support other types of log entries (ie TplLogEntryCall).
+ *
+ * For now we just check (simply) that we are dealing with the only supported type,
+ * then there will be a if/then/else or switch handling all the supported
+ * cases.
+ */
+ if (!TPL_IS_LOG_ENTRY_TEXT (logentry))
+ return NULL;
+
+ body = g_strdup (tpl_log_entry_text_get_message (
+ TPL_LOG_ENTRY_TEXT (logentry)));
+ receiver = tpl_log_entry_text_get_receiver (TPL_LOG_ENTRY_TEXT (logentry));
+ sender = tpl_log_entry_text_get_sender (TPL_LOG_ENTRY_TEXT (logentry));
+
+ retval = empathy_message_new (body);
+ if (receiver != NULL)
+ empathy_message_set_receiver (retval,
+ empathy_contact_from_tpl_contact (account, receiver));
+ if (sender != NULL)
+ empathy_message_set_sender (retval,
+ empathy_contact_from_tpl_contact (account, sender));
+
+ empathy_message_set_timestamp (retval,
+ tpl_log_entry_get_timestamp (logentry));
+ empathy_message_set_id (retval,
+ tpl_log_entry_text_get_log_id (TPL_LOG_ENTRY_TEXT (logentry)));
+ empathy_message_set_is_backlog (retval, FALSE);
+
+ g_free (body);
+
+ return retval;
+}
+#endif /* ENABLE_TPL */
+
TpChannelTextMessageType
empathy_message_get_tptype (EmpathyMessage *message)
{
@@ -593,7 +666,12 @@ empathy_message_equal (EmpathyMessage *message1, EmpathyMessage *message2)
priv1 = GET_PRIV (message1);
priv2 = GET_PRIV (message2);
+#ifdef ENABLE_TPL
+ if (priv1->timestamp == priv2->timestamp &&
+ !tp_strdiff (priv1->body, priv2->body)) {
+#else
if (priv1->id == priv2->id && !tp_strdiff (priv1->body, priv2->body)) {
+#endif /* ENABLE_TPL */
return TRUE;
}
diff --git a/libempathy/empathy-message.h b/libempathy/empathy-message.h
index 512869373..d8d0c9603 100644
--- a/libempathy/empathy-message.h
+++ b/libempathy/empathy-message.h
@@ -26,6 +26,9 @@
#define __EMPATHY_MESSAGE_H__
#include <glib-object.h>
+#ifdef ENABLE_TPL
+#include <telepathy-logger/log-entry.h>
+#endif
#include "empathy-contact.h"
#include "empathy-time.h"
@@ -53,6 +56,9 @@ struct _EmpathyMessageClass {
GType empathy_message_get_type (void) G_GNUC_CONST;
EmpathyMessage * empathy_message_new (const gchar *body);
+#ifdef ENABLE_TPL
+EmpathyMessage * empathy_message_from_tpl_log_entry (TplLogEntry *logentry);
+#endif /* ENABLE_TPL */
TpChannelTextMessageType empathy_message_get_tptype (EmpathyMessage *message);
void empathy_message_set_tptype (EmpathyMessage *message,
TpChannelTextMessageType type);