/* * Copyright (C) 2009-2013 Collabora Ltd. * * Authors: Marco Barisione * Guillaume Desmottes * Sjoerd Simons * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #include "tpaw-utils.h" #include #define DEBUG_FLAG EMPATHY_DEBUG_OTHER #include "empathy-debug.h" /* Change the RequestedPresence of a newly created account to ensure that it * is actually connected. */ void tpaw_connect_new_account (TpAccount *account, TpAccountManager *account_manager) { TpConnectionPresenceType presence; gchar *status, *message; /* only force presence if presence was offline, unknown or unset */ presence = tp_account_get_requested_presence (account, NULL, NULL); switch (presence) { case TP_CONNECTION_PRESENCE_TYPE_OFFLINE: case TP_CONNECTION_PRESENCE_TYPE_UNKNOWN: case TP_CONNECTION_PRESENCE_TYPE_UNSET: presence = tp_account_manager_get_most_available_presence ( account_manager, &status, &message); if (presence == TP_CONNECTION_PRESENCE_TYPE_OFFLINE) /* Global presence is offline; we force it so user doesn't have to * manually change the presence to connect his new account. */ presence = TP_CONNECTION_PRESENCE_TYPE_AVAILABLE; tp_account_request_presence_async (account, presence, status, NULL, NULL, NULL); g_free (status); g_free (message); break; case TP_CONNECTION_PRESENCE_TYPE_AVAILABLE: case TP_CONNECTION_PRESENCE_TYPE_AWAY: case TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY: case TP_CONNECTION_PRESENCE_TYPE_HIDDEN: case TP_CONNECTION_PRESENCE_TYPE_BUSY: case TP_CONNECTION_PRESENCE_TYPE_ERROR: default: /* do nothing if the presence is not offline */ break; } } gchar * tpaw_protocol_icon_name (const gchar *protocol) { if (!tp_strdiff (protocol, "yahoojp")) /* Yahoo Japan uses the same icon as Yahoo */ protocol = "yahoo"; else if (!tp_strdiff (protocol, "simple")) /* SIMPLE uses the same icon as SIP */ protocol = "sip"; else if (!tp_strdiff (protocol, "sms")) return g_strdup ("phone"); return g_strdup_printf ("im-%s", protocol); } const char * tpaw_protocol_name_to_display_name (const gchar *proto_name) { int i; static struct { const gchar *proto; const gchar *display; gboolean translated; } names[] = { { "jabber", "Jabber", FALSE }, { "msn", "Windows Live (MSN)", FALSE, }, { "local-xmpp", N_("People Nearby"), TRUE }, { "irc", "IRC", FALSE }, { "icq", "ICQ", FALSE }, { "aim", "AIM", FALSE }, { "yahoo", "Yahoo!", FALSE }, { "yahoojp", N_("Yahoo! Japan"), TRUE }, { "groupwise", "GroupWise", FALSE }, { "sip", "SIP", FALSE }, { "gadugadu", "Gadu-Gadu", FALSE }, { "mxit", "Mxit", FALSE }, { "myspace", "Myspace", FALSE }, { "sametime", "Sametime", FALSE }, { "skype-dbus", "Skype (D-BUS)", FALSE }, { "skype-x11", "Skype (X11)", FALSE }, { "zephyr", "Zephyr", FALSE }, { NULL, NULL } }; for (i = 0; names[i].proto != NULL; i++) { if (!tp_strdiff (proto_name, names[i].proto)) { if (names[i].translated) return gettext (names[i].display); else return names[i].display; } } return proto_name; } const char * tpaw_service_name_to_display_name (const gchar *service_name) { int i; static struct { const gchar *service; const gchar *display; gboolean translated; } names[] = { { "google-talk", N_("Google Talk"), FALSE }, { "facebook", N_("Facebook Chat"), TRUE }, { NULL, NULL } }; for (i = 0; names[i].service != NULL; i++) { if (!tp_strdiff (service_name, names[i].service)) { if (names[i].translated) return gettext (names[i].display); else return names[i].display; } } return service_name; } void tpaw_make_color_whiter (GdkRGBA *color) { const GdkRGBA white = { 1.0, 1.0, 1.0, 1.0 }; color->red = (color->red + white.red) / 2; color->green = (color->green + white.green) / 2; color->blue = (color->blue + white.blue) / 2; }