*/
#include "config.h"
-
-#include <string.h>
-#include <stdlib.h>
+#include "empathy-log-window.h"
#include <glib/gi18n-lib.h>
-#include <gtk/gtk.h>
-#include <webkit/webkit.h>
-
-#include <telepathy-glib/telepathy-glib.h>
#include <telepathy-glib/proxy-subclass.h>
-#include <telepathy-logger/telepathy-logger.h>
-#ifdef HAVE_CALL_LOGS
-# include <telepathy-logger/call-event.h>
-#endif
-
-#include <extensions/extensions.h>
-
-#include <libempathy/action-chain-internal.h>
-#include <libempathy/empathy-camera-monitor.h>
-#include <libempathy/empathy-chatroom-manager.h>
-#include <libempathy/empathy-chatroom.h>
-#include <libempathy/empathy-gsettings.h>
-#include <libempathy/empathy-message.h>
-#include <libempathy/empathy-request-util.h>
-#include <libempathy/empathy-utils.h>
-#include <libempathy/empathy-time.h>
-
-#include "empathy-log-window.h"
+#include "action-chain-internal.h"
#include "empathy-account-chooser.h"
#include "empathy-call-utils.h"
-#include "empathy-chat-view.h"
-#include "empathy-contact-dialogs.h"
+#include "empathy-camera-monitor.h"
+#include "empathy-geometry.h"
+#include "empathy-gsettings.h"
#include "empathy-images.h"
+#include "empathy-individual-information-dialog.h"
+#include "empathy-request-util.h"
#include "empathy-theme-manager.h"
#include "empathy-ui-utils.h"
+#include "empathy-utils.h"
#include "empathy-webkit-utils.h"
-#include "empathy-geometry.h"
+#include "extensions.h"
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
-#include <libempathy/empathy-debug.h>
+#include "empathy-debug.h"
#define EMPATHY_NS "http://live.gnome.org/Empathy"
toolbutton_profile_clicked (GtkToolButton *toolbutton,
EmpathyLogWindow *self)
{
+ FolksIndividual *individual;
+
g_return_if_fail (self != NULL);
g_return_if_fail (EMPATHY_IS_CONTACT (self->priv->selected_contact));
- empathy_contact_information_dialog_show (self->priv->selected_contact,
- GTK_WINDOW (self));
+ individual = empathy_ensure_individual_from_tp_contact (
+ empathy_contact_get_tp_contact (self->priv->selected_contact));
+
+ empathy_display_individual_info (individual);
+
+ g_object_unref (individual);
}
static void
{
char *str = gtk_tree_path_to_string (path);
char *script, *text, *date, *stock_icon;
+ GString *escaped_text;
char *icon = NULL;
+ gint i;
gtk_tree_model_get (model, iter,
COL_EVENTS_TEXT, &text,
gtk_icon_info_free (icon_info);
}
+ escaped_text = g_string_new (NULL);
+
+ /* Only need to deal with «'» and «\».
+ *
+ * Note that these never appear in non-ascii utf8 characters, so just
+ * pretend like we have an ascii string...
+ */
+ for (i = 0; text && text[i]; i++)
+ {
+ gchar c = text[i];
+
+ if (c == '\'' || c == '\\')
+ g_string_append_c (escaped_text, '\\');
+
+ g_string_append_c (escaped_text, c);
+ }
+
script = g_strdup_printf ("javascript:%s([%s], '%s', '%s', '%s');",
method,
g_strdelimit (str, ":", ','),
- text,
+ escaped_text->str,
icon != NULL ? icon : "",
date);
webkit_web_view_execute_script (WEBKIT_WEB_VIEW (self->priv->webview),
script);
+ g_string_free (escaped_text, TRUE);
g_free (str);
g_free (text);
g_free (date);
if (!tp_str_empty (tpl_text_event_get_supersedes_token (text)))
icon = EMPATHY_IMAGE_EDIT_MESSAGE;
}
-#ifdef HAVE_CALL_LOGS
else if (TPL_IS_CALL_EVENT (event))
{
TplCallEvent *call = TPL_CALL_EVENT (event);
- TplCallEndReason reason = tpl_call_event_get_end_reason (call);
+ TpCallStateChangeReason reason = tpl_call_event_get_end_reason (call);
TplEntity *sender = tpl_event_get_sender (event);
TplEntity *receiver = tpl_event_get_receiver (event);
- if (reason == TPL_CALL_END_REASON_NO_ANSWER)
+ if (reason == TP_CALL_STATE_CHANGE_REASON_NO_ANSWER)
icon = EMPATHY_IMAGE_CALL_MISSED;
else if (tpl_entity_get_entity_type (sender) == TPL_ENTITY_SELF)
icon = EMPATHY_IMAGE_CALL_OUTGOING;
else if (tpl_entity_get_entity_type (receiver) == TPL_ENTITY_SELF)
icon = EMPATHY_IMAGE_CALL_INCOMING;
}
-#endif
return icon;
}
g_date_time_unref (date);
}
-#ifdef HAVE_CALL_LOGS
static void
log_window_append_call (TplEvent *event,
EmpathyMessage *message)
COL_EVENTS_EVENT, event,
-1);
- if (tpl_call_event_get_end_reason (call) != TPL_CALL_END_REASON_NO_ANSWER)
+ if (tpl_call_event_get_end_reason (call) != TP_CALL_STATE_CHANGE_REASON_NO_ANSWER)
{
gchar *body;
gchar *tmp;
g_free (pretty_date);
g_date_time_unref (started_date);
}
-#endif
static void
log_window_append_message (TplEvent *event,
{
if (TPL_IS_TEXT_EVENT (event))
log_window_append_chat_message (event, message);
-#ifdef HAVE_CALL_LOGS
else if (TPL_IS_CALL_EVENT (event))
log_window_append_call (event, message);
-#endif
else
DEBUG ("Message type not handled");
}
GList *accounts, *l;
manager = empathy_account_chooser_get_account_manager (account_chooser);
- accounts = tp_account_manager_get_valid_accounts (manager);
+ accounts = tp_account_manager_dup_valid_accounts (manager);
for (l = accounts; l != NULL; l = l->next)
{
get_entities_for_account, ctx);
}
- g_list_free (accounts);
+ g_list_free_full (accounts, g_object_unref);
}
_tpl_action_chain_append (self->priv->chain, select_first_entity, self);
_tpl_action_chain_start (self->priv->chain);
GtkTreeIter iter;
GtkTreeStore *store;
GtkCellRenderer *cell;
+ GtkTreeIter parent;
guint i;
+
struct event events [] = {
{ TPL_EVENT_MASK_ANY, 0, NULL, _("Anything") },
{ WHAT_TYPE_SEPARATOR, 0, NULL, "separator" },
{ TPL_EVENT_MASK_TEXT, 0, "format-justify-fill", _("Text chats") },
-#ifdef HAVE_CALL_LOGS
{ TPL_EVENT_MASK_CALL, EVENT_CALL_ALL, EMPATHY_IMAGE_CALL, _("Calls") },
-#endif
};
-#ifdef HAVE_CALL_LOGS
+
struct event call_events [] = {
{ TPL_EVENT_MASK_CALL, EVENT_CALL_INCOMING, EMPATHY_IMAGE_CALL_INCOMING, _("Incoming calls") },
{ TPL_EVENT_MASK_CALL, EVENT_CALL_OUTGOING, EMPATHY_IMAGE_CALL_OUTGOING, _("Outgoing calls") },
{ TPL_EVENT_MASK_CALL, EVENT_CALL_MISSED, EMPATHY_IMAGE_CALL_MISSED, _("Missed calls") }
};
- GtkTreeIter parent;
-#endif
view = GTK_TREE_VIEW (self->priv->treeview_what);
selection = gtk_tree_view_get_selection (view);
-1);
}
-#ifdef HAVE_CALL_LOGS
gtk_tree_model_iter_nth_child (model, &parent, NULL, 3);
for (i = 0; i < G_N_ELEMENTS (call_events); i++)
{
COL_WHAT_ICON, call_events[i].icon,
-1);
}
-#endif
gtk_tree_view_expand_all (view);
TplEvent *event = l->data;
gboolean append = TRUE;
-#ifdef HAVE_CALL_LOGS
if (TPL_IS_CALL_EVENT (l->data)
&& ctx->event_mask & TPL_EVENT_MASK_CALL
&& ctx->event_mask != TPL_EVENT_MASK_ANY)
}
else
{
- TplCallEndReason reason = tpl_call_event_get_end_reason (call);
+ TpCallStateChangeReason reason =
+ tpl_call_event_get_end_reason (call);
TplEntity *sender = tpl_event_get_sender (event);
TplEntity *receiver = tpl_event_get_receiver (event);
- if (reason == TPL_CALL_END_REASON_NO_ANSWER)
+ if (reason == TP_CALL_STATE_CHANGE_REASON_NO_ANSWER)
{
if (ctx->subtype & EVENT_CALL_MISSED)
append = TRUE;
}
}
}
-#endif
if (append)
{