From 4080b07d140362f0d2888d0baf6a4ecf60e8ea2a Mon Sep 17 00:00:00 2001 From: Jonny Lamb Date: Wed, 19 Aug 2009 11:51:47 +0100 Subject: empathy-presence-chooser: make chooser insensitive when there's no connection Signed-off-by: Jonny Lamb --- libempathy-gtk/empathy-presence-chooser.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c index 7c5850af8..b0668196b 100644 --- a/libempathy-gtk/empathy-presence-chooser.c +++ b/libempathy-gtk/empathy-presence-chooser.c @@ -35,6 +35,7 @@ #include +#include #include #include #include @@ -98,6 +99,7 @@ typedef enum { typedef struct { EmpathyIdle *idle; + EmpathyConnectivity *connectivity; gboolean editing_status; int block_set_editing; @@ -709,6 +711,15 @@ presence_chooser_entry_focus_out_cb (EmpathyPresenceChooser *chooser, return FALSE; } +static void +presence_chooser_connectivity_state_change (EmpathyConnectivity *connectivity, + gboolean old_online, + gboolean new_online, + EmpathyPresenceChooser *chooser) +{ + gtk_widget_set_sensitive (GTK_WIDGET (chooser), new_online); +} + static void empathy_presence_chooser_init (EmpathyPresenceChooser *chooser) { @@ -780,6 +791,13 @@ empathy_presence_chooser_init (EmpathyPresenceChooser *chooser) /* FIXME: this string sucks */ gtk_widget_set_tooltip_text (GTK_WIDGET (chooser), _("Set your presence and current status")); + + priv->connectivity = empathy_connectivity_dup_singleton (); + g_signal_connect (priv->connectivity, "state-change", + G_CALLBACK (presence_chooser_connectivity_state_change), + chooser); + presence_chooser_connectivity_state_change (priv->connectivity, FALSE, + empathy_connectivity_is_online (priv->connectivity), chooser); } static void @@ -802,6 +820,12 @@ presence_chooser_finalize (GObject *object) object); g_object_unref (priv->idle); + g_signal_handlers_disconnect_by_func (priv->connectivity, + presence_chooser_connectivity_state_change, + object); + + g_object_unref (priv->connectivity); + G_OBJECT_CLASS (empathy_presence_chooser_parent_class)->finalize (object); } -- cgit v1.2.3