[gnome-shell] shell-global: Add shell_get_self_contact_features
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] shell-global: Add shell_get_self_contact_features
- Date: Mon, 14 Mar 2011 22:53:06 +0000 (UTC)
commit ebcb87c163adb0ac48712c8251c946a30a1f6105
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Sat Feb 26 09:23:38 2011 -0500
shell-global: Add shell_get_self_contact_features
This is another workaround for the lack of gjs supporting array
arguments, this time wrapping tp_connection_upgrade_contacts to
add new features to the connection's self contact.
https://bugzilla.gnome.org/show_bug.cgi?id=642793
src/shell-global.c | 40 ++++++++++++++++++++++++++++++++++++++++
src/shell-global.h | 8 ++++++++
2 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/src/shell-global.c b/src/shell-global.c
index b16758f..67c8703 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -2048,3 +2048,43 @@ shell_global_launch_calendar_server (ShellGlobal *global)
g_free (calendar_server_exe);
}
+
+static void
+shell_global_get_self_contact_features_cb (TpConnection *connection,
+ guint n_contacts,
+ TpContact * const *contacts,
+ const GError *error,
+ gpointer user_data,
+ GObject *weak_object)
+{
+ if (error != NULL) {
+ g_print ("Failed to upgrade self contact: %s", error->message);
+ return;
+ }
+ ((ShellGetSelfContactFeaturesCb)user_data)(connection, *contacts);
+}
+
+/**
+ * shell_get_self_contact_features:
+ * @self: A connection, which must be ready
+ * @n_features: Number of features in features
+ * @features: (array length=n_features) (allow-none) (element-type uint):
+ * Array of features
+ * @callback: (scope async): User callback to run when the contact is ready
+ *
+ * Wrap tp_connection_upgrade_contacts due to the lack of support for
+ * proper arrays arguments in GJS.
+ */
+void
+shell_get_self_contact_features (TpConnection *self,
+ guint n_features,
+ const TpContactFeature *features,
+ ShellGetSelfContactFeaturesCb callback)
+{
+ TpContact *self_contact = tp_connection_get_self_contact (self);
+
+ tp_connection_upgrade_contacts (self, 1, &self_contact,
+ n_features, features,
+ shell_global_get_self_contact_features_cb,
+ callback, NULL, NULL);
+}
diff --git a/src/shell-global.h b/src/shell-global.h
index 4290980..b3f86e3 100644
--- a/src/shell-global.h
+++ b/src/shell-global.h
@@ -157,6 +157,14 @@ void shell_get_tp_contacts (TpConnection *self,
void shell_global_launch_calendar_server (ShellGlobal *global);
+typedef void (*ShellGetSelfContactFeaturesCb) (TpConnection *connection,
+ TpContact *contact);
+
+void shell_get_self_contact_features (TpConnection *self,
+ guint n_features,
+ const TpContactFeature *features,
+ ShellGetSelfContactFeaturesCb callback);
+
G_END_DECLS
#endif /* __SHELL_GLOBAL_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]