summaryrefslogtreecommitdiff
path: root/ytstenut/yts-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'ytstenut/yts-client.c')
-rw-r--r--ytstenut/yts-client.c134
1 files changed, 19 insertions, 115 deletions
diff --git a/ytstenut/yts-client.c b/ytstenut/yts-client.c
index 02e5b41..60561bf 100644
--- a/ytstenut/yts-client.c
+++ b/ytstenut/yts-client.c
@@ -93,11 +93,6 @@ typedef struct {
char *incoming_dir; /* destination directory for incoming files */
- /* avatar-related stuff */
- char *icon_token;
- char *icon_mime_type;
- GArray *icon_data;
-
/* Telepathy bits */
TpYtsAccountManager *tp_am;
TpAccount *tp_account;
@@ -151,7 +146,8 @@ enum
PROP_CONTACT_ID,
PROP_SERVICE_ID,
PROP_PROTOCOL,
- PROP_ICON_TOKEN,
+
+ PROP_TP_ACCOUNT
};
static guint signals[N_SIGNALS] = {0};
@@ -1184,7 +1180,6 @@ yts_client_account_prepared_cb (GObject *source_object,
GAsyncResult *res,
gpointer self)
{
- YtsClientPrivate *priv = GET_PRIVATE (self);
TpAccount *account = TP_ACCOUNT (source_object);
GError *error = NULL;
@@ -1417,13 +1412,12 @@ yts_client_get_property (GObject *object,
case PROP_SERVICE_ID:
g_value_set_string (value, priv->service_id);
break;
- case PROP_ICON_TOKEN:
- g_value_set_string (value, priv->icon_token);
- break;
case PROP_PROTOCOL:
g_value_set_enum (value, priv->protocol);
break;
-
+ case PROP_TP_ACCOUNT:
+ g_value_set_object (value, priv->tp_account);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -1538,16 +1532,11 @@ yts_client_finalize (GObject *object)
g_free (priv->account_id);
g_free (priv->service_id);
- g_free (priv->icon_token);
- g_free (priv->icon_mime_type);
g_free (priv->incoming_dir);
if (priv->caps)
g_array_free (priv->caps, TRUE);
- if (priv->icon_data)
- g_array_free (priv->icon_data, TRUE);
-
G_OBJECT_CLASS (yts_client_parent_class)->finalize (object);
}
@@ -1633,6 +1622,20 @@ yts_client_class_init (YtsClientClass *klass)
g_object_class_install_property (object_class, PROP_PROTOCOL, pspec);
/**
+ * YtsClient:tp-account:
+ *
+ * Telepathies #TpAccount object used by this instance.
+ *
+ * Since: 0.4
+ *
+ * <note>There is no API guarantee for this and other fields that expose telepathy.</note>
+ */
+ pspec = g_param_spec_object ("tp-account", "", "",
+ TP_TYPE_ACCOUNT,
+ G_PARAM_READABLE);
+ g_object_class_install_property (object_class, PROP_TP_ACCOUNT, pspec);
+
+ /**
* YtsClient::authenticated:
* @self: object which emitted the signal.
*
@@ -2606,82 +2609,6 @@ yts_client_connection_ready_cb (TpConnection *conn,
}
static void
-yts_client_set_avatar_cb (TpConnection *proxy,
- char const *token,
- const GError *error,
- YtsClient *self,
- GObject *weak_object)
-{
- YtsClientPrivate *priv = GET_PRIVATE (self);
-
- if (error)
- {
- g_warning ("Failed to set avatar: %s", error->message);
- return;
- }
-
- g_free (priv->icon_token);
- priv->icon_token = g_strdup (token);
-}
-
-/*
- * check whether the given avatar mime type is supported.
- */
-static gboolean
-yts_client_is_avatar_type_supported (YtsClient *self,
- char const *mime_type,
- guint bytes)
-{
- YtsClientPrivate *priv = GET_PRIVATE (self);
- char **p;
- char const *alt_type = NULL;
- TpAvatarRequirements *req;
-
- req = tp_connection_get_avatar_requirements (priv->tp_conn);
-
- if (!req || !req->supported_mime_types)
- {
- g_warning ("Icon functionality is not supported by backend");
- return FALSE;
- }
-
- if (bytes > req->maximum_bytes)
- {
- g_warning ("Icon can be at most %d bytes in size (requested %d)",
- req->maximum_bytes, bytes);
- return FALSE;
- }
-
- if (!mime_type)
- {
- g_warning ("Icon mime type not specified, ignoring icon");
- return FALSE;
- }
-
- /*
- * This is really annoying, but TP internally uses both image/jpg and
- * image/jpeg (we get the former when querying existing avatars, and the
- * latter when quering avatar requirements), so we need to handle both.
- */
- if (!g_strcmp0 (mime_type, "image/jpg"))
- alt_type = "image/jpeg";
- else if (!g_strcmp0 (mime_type, "image/jpeg"))
- alt_type = "image/jpg";
-
- for (p = req->supported_mime_types; *p; ++p)
- {
- if (!g_strcmp0 (*p, mime_type) || (alt_type && !g_strcmp0 (*p, alt_type)))
- {
- return TRUE;
- }
- }
-
- g_warning ("Icon uses unsupported mime type %s", mime_type);
-
- return FALSE;
-}
-
-static void
yts_client_connection_prepare_cb (GObject *connection,
GAsyncResult *res,
YtsClient *self)
@@ -2705,28 +2632,6 @@ yts_client_connection_prepare_cb (GObject *connection,
tp_g_signal_connect_object (priv->tp_client, "received-channels",
G_CALLBACK (yts_client_yts_channels_received_cb),
self, 0);
-
- if (priv->icon_data &&
- yts_client_is_avatar_type_supported (self,
- priv->icon_mime_type,
- priv->icon_data->len))
- {
- tp_cli_connection_interface_avatars_call_set_avatar (
- priv->tp_conn,
- -1,
- priv->icon_data,
- priv->icon_mime_type,
- (tp_cli_connection_interface_avatars_callback_for_set_avatar) yts_client_set_avatar_cb,
- self,
- NULL,
- (GObject*)self);
-
- g_array_free (priv->icon_data, TRUE);
- priv->icon_data = NULL;
- g_free (priv->icon_mime_type);
- priv->icon_mime_type = NULL;
- }
-
#if 0
/* TODO -- */
/*
@@ -2749,7 +2654,6 @@ yts_client_setup_account_connection (YtsClient *self)
YtsClientPrivate *priv = GET_PRIVATE (self);
GError *error = NULL;
GQuark features[] = { TP_CONNECTION_FEATURE_CONTACT_INFO,
- TP_CONNECTION_FEATURE_AVATAR_REQUIREMENTS,
TP_CONNECTION_FEATURE_CAPABILITIES,
TP_CONNECTION_FEATURE_CONNECTED,
0 };