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
This commit is contained in:
parent
79d9df9bb1
commit
ebcb87c163
@ -2048,3 +2048,43 @@ shell_global_launch_calendar_server (ShellGlobal *global)
|
|||||||
|
|
||||||
g_free (calendar_server_exe);
|
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);
|
||||||
|
}
|
||||||
|
@ -157,6 +157,14 @@ void shell_get_tp_contacts (TpConnection *self,
|
|||||||
|
|
||||||
void shell_global_launch_calendar_server (ShellGlobal *global);
|
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
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __SHELL_GLOBAL_H__ */
|
#endif /* __SHELL_GLOBAL_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user