[telepathy-doc/master] Control account enabled status
Danielle Madeley
danielle.madeley at collabora.co.uk
Tue Sep 22 21:38:03 PDT 2009
---
docs/examples/gtk_presence_app/presence-widget.c | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/docs/examples/gtk_presence_app/presence-widget.c b/docs/examples/gtk_presence_app/presence-widget.c
index 84328fa..ee852b3 100644
--- a/docs/examples/gtk_presence_app/presence-widget.c
+++ b/docs/examples/gtk_presence_app/presence-widget.c
@@ -23,6 +23,8 @@ struct _PresenceWidgetPrivate
GtkWidget *enabled_check;
GtkWidget *status_icon;
GtkWidget *status_message;
+
+ gint updating_ui_lock;
};
enum /* properties */
@@ -103,8 +105,10 @@ _notify_enabled (PresenceWidget *self,
{
PresenceWidgetPrivate *priv = GET_PRIVATE (self);
+ priv->updating_ui_lock++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->enabled_check),
tp_account_is_enabled (account));
+ priv->updating_ui_lock--;
}
static void
@@ -190,6 +194,19 @@ presence_widget_class_init (PresenceWidgetClass *class)
}
static void
+_enabled_toggled (PresenceWidget *self,
+ GtkToggleButton *button)
+{
+ PresenceWidgetPrivate *priv = GET_PRIVATE (self);
+
+ if (priv->updating_ui_lock > 0) return;
+
+ tp_account_set_enabled_async (priv->account,
+ gtk_toggle_button_get_active (button),
+ NULL, NULL);
+}
+
+static void
presence_widget_init (PresenceWidget *self)
{
PresenceWidgetPrivate *priv = GET_PRIVATE (self);
@@ -200,6 +217,8 @@ presence_widget_init (PresenceWidget *self)
gtk_table_attach (GTK_TABLE (self), priv->enabled_check,
0, 2, 0, 1,
GTK_FILL, GTK_FILL, 0, 0);
+ g_signal_connect_swapped (priv->enabled_check, "toggled",
+ G_CALLBACK (_enabled_toggled), self);
priv->status_icon = gtk_image_new ();
gtk_table_attach (GTK_TABLE (self), priv->status_icon,
--
1.5.6.5
More information about the telepathy-commits
mailing list