#include <libintl.h>
#include <hildon/hildon.h>
#include <rtcom-eventlogger/eventlogger.h>
+#include <rtcom-eventlogger-plugins/chat.h>
#include <sqlite3.h>
#include <string.h>
#include <gconf/gconf-client.h>
gchar *contact_id;
gchar *remote_id;
gchar *local_id;
- gchar *group_uid;
+ gchar *channel;
+ int flags;
OssoABookContact *contact;
gboolean time_fmt_24h;
g_free (priv->remote_id);
priv->remote_id = NULL;
}
- if (priv->group_uid) {
- g_free (priv->group_uid);
- priv->group_uid = NULL;
+ if (priv->channel) {
+ g_free (priv->channel);
+ priv->channel = NULL;
}
}
"remote-name", &remote,
"remote-ebook-uid", &priv->contact_id,
"free-text", &priv->message,
- "group-uid", &priv->group_uid,
+ "channel", &priv->channel,
+ "flags", &priv->flags,
NULL)) {
received = format_time (received_t, priv->time_fmt_24h);
{
ELHomeAppletPrivate *priv = self->priv;
McAccount *account;
- const gchar *persistent_id = NULL;
- if (!((priv->remote_id || priv->group_uid) && priv->local_id))
+ if (!((priv->remote_id || priv->channel) && priv->local_id))
return;
account = osso_abook_account_manager_lookup_by_name (NULL,
if (!account)
return;
- if (priv->group_uid &&
- g_str_has_prefix (priv->group_uid, "group:")) {
- persistent_id = strchr (priv->group_uid, '-');
- if (persistent_id)
- persistent_id++;
- }
+ if ((priv->flags & RTCOM_EL_FLAG_CHAT_GROUP) &&
+ (priv->flags & RTCOM_EL_FLAG_CHAT_OPAQUE)) {
+ if (!priv->channel)
+ return;
- if (persistent_id && persistent_id[0] != '\0') {
GHashTable *properties = tp_asv_new
(TP_IFACE_CHANNEL ".ChannelType", G_TYPE_STRING,
TP_IFACE_CHANNEL_TYPE_TEXT,
TP_IFACE_CHANNEL ".TargetHandleType", G_TYPE_UINT,
TP_HANDLE_TYPE_NONE,
RTCOM_TP_IFACE_CHANNEL_INTERFACE_PERSISTENT ".PersistentID",
- G_TYPE_STRING, persistent_id,
+ G_TYPE_STRING, priv->channel,
NULL);
mc_account_channelrequest_ht (account,
g_hash_table_unref (properties);
}
- else if (priv->remote_id) {
+ else {
McAccountChannelrequestData request;
MC_ACCOUNT_CRD_INIT (&request);
MC_ACCOUNT_CRD_SET (&request, channel_type, TP_IFACE_QUARK_CHANNEL_TYPE_TEXT);
- MC_ACCOUNT_CRD_SET (&request, target_handle_type, TP_HANDLE_TYPE_CONTACT);
- MC_ACCOUNT_CRD_SET (&request, target_id, priv->remote_id);
+
+ if ((priv->flags & RTCOM_EL_FLAG_CHAT_ROOM) &&
+ priv->channel) {
+ MC_ACCOUNT_CRD_SET (&request, target_handle_type, TP_HANDLE_TYPE_ROOM);
+ MC_ACCOUNT_CRD_SET (&request, target_id, priv->channel);
+ }
+ else if (priv->remote_id) {
+ MC_ACCOUNT_CRD_SET (&request, target_handle_type, TP_HANDLE_TYPE_CONTACT);
+ MC_ACCOUNT_CRD_SET (&request, target_id, priv->remote_id);
+ }
+ else
+ return;
mc_account_channelrequest (account,
&request,