[telepathy-gabble/master] conn-avatars: provide a property getter for telepathy-spec 0.17.22 avatar requirement properties
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Apr 8 10:20:12 PDT 2009
---
src/conn-avatars.c | 54 ++++++++++++++++++++++++++++++++++++++++++++-------
src/conn-avatars.h | 4 +++
2 files changed, 50 insertions(+), 8 deletions(-)
diff --git a/src/conn-avatars.c b/src/conn-avatars.c
index 8cfb62a..bdac777 100644
--- a/src/conn-avatars.c
+++ b/src/conn-avatars.c
@@ -108,6 +108,17 @@ connection_got_self_initial_avatar_cb (GObject *obj,
update_own_avatar_sha1 (conn, sha1, NULL);
}
+/* Jabber prescribes no MIME type for avatars, but XEP-0153 says support
+ * for image/png is REQUIRED, with image/jpeg and image/gif RECOMMENDED */
+static const char *mimetypes[] = {
+ "image/png", "image/jpeg", "image/gif", NULL };
+
+/* Jabber has no min/max width/height or max size, but XEP-0153 says
+ * you SHOULD use 32-96px either way, and no more than 8K of data */
+#define AVATAR_MIN_PX 32
+#define AVATAR_REC_PX 64
+#define AVATAR_MAX_PX 96
+#define AVATAR_MAX_BYTES 8192
/**
* gabble_connection_get_avatar_requirements
@@ -125,19 +136,13 @@ static void
gabble_connection_get_avatar_requirements (TpSvcConnectionInterfaceAvatars *iface,
DBusGMethodInvocation *context)
{
- /* Jabber prescribes no MIME type for avatars, but XEP-0153 says support
- * for image/png is REQUIRED, with image/jpeg and image/gif RECOMMENDED */
- static const char *mimetypes[] = {
- "image/png", "image/jpeg", "image/gif", NULL };
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (TP_BASE_CONNECTION (iface),
context);
- /* Jabber has no min/max width/height or max size, but XEP-0153 says
- * you SHOULD use 32-96px either way, and no more than 8K of data */
-
tp_svc_connection_interface_avatars_return_from_get_avatar_requirements (
- context, mimetypes, 32, 32, 96, 96, 8192);
+ context, mimetypes, AVATAR_MIN_PX, AVATAR_MIN_PX,
+ AVATAR_MAX_PX, AVATAR_MAX_PX, AVATAR_MAX_BYTES);
}
/* begin deprecated code */
@@ -886,3 +891,36 @@ conn_avatars_iface_init (gpointer g_iface, gpointer iface_data)
#undef IMPLEMENT
}
+static const TpDBusPropertiesMixinPropImpl props[] = {
+ { "MinimumAvatarWidth", GUINT_TO_POINTER (AVATAR_MIN_PX), NULL },
+ { "RecommendedAvatarWidth", GUINT_TO_POINTER (AVATAR_REC_PX), NULL },
+ { "MaximumAvatarWidth", GUINT_TO_POINTER (AVATAR_MAX_PX), NULL },
+ { "MinimumAvatarHeight", GUINT_TO_POINTER (AVATAR_MIN_PX), NULL },
+ { "RecommendedAvatarHeight", GUINT_TO_POINTER (AVATAR_REC_PX), NULL },
+ { "MaximumAvatarHeight", GUINT_TO_POINTER (AVATAR_MAX_PX), NULL },
+ { "MaximumAvatarBytes", GUINT_TO_POINTER (AVATAR_MAX_BYTES), NULL },
+ /* special-cased - it's the only one with a non-guint value */
+ { "SupportedAvatarMIMETypes", NULL, NULL },
+ { NULL }
+};
+const TpDBusPropertiesMixinPropImpl *conn_avatars_properties = props;
+
+void
+conn_avatars_properties_getter (GObject *object,
+ GQuark interface,
+ GQuark name,
+ GValue *value,
+ gpointer getter_data)
+{
+ GQuark q_mime_types = g_quark_from_static_string (
+ "SupportedAvatarMIMETypes");
+
+ if (name == q_mime_types)
+ {
+ g_value_set_static_boxed (value, mimetypes);
+ }
+ else
+ {
+ g_value_set_uint (value, GPOINTER_TO_UINT (getter_data));
+ }
+}
diff --git a/src/conn-avatars.h b/src/conn-avatars.h
index bba9813..c1d03f1 100644
--- a/src/conn-avatars.h
+++ b/src/conn-avatars.h
@@ -28,6 +28,10 @@ G_BEGIN_DECLS
void conn_avatars_init (GabbleConnection *conn);
void conn_avatars_iface_init (gpointer g_iface, gpointer iface_data);
+extern const TpDBusPropertiesMixinPropImpl *conn_avatars_properties;
+void conn_avatars_properties_getter (GObject *object, GQuark interface,
+ GQuark name, GValue *value, gpointer getter_data);
+
G_END_DECLS
#endif /* __CONN_AVATARS_H__ */
--
1.5.6.5
More information about the telepathy-commits
mailing list