empathy r1008 - trunk/src
- From: fpeters svn gnome org
- To: svn-commits-list gnome org
- Subject: empathy r1008 - trunk/src
- Date: Sun, 20 Apr 2008 14:33:46 +0100 (BST)
Author: fpeters
Date: Sun Apr 20 13:33:46 2008
New Revision: 1008
URL: http://svn.gnome.org/viewvc/empathy?rev=1008&view=rev
Log:
keep track of connected status to disable menu item for "new conversation"
under the notification area icon. Fixes: #517300. (Frederic Peters)
Modified:
trunk/src/empathy-status-icon.c
Modified: trunk/src/empathy-status-icon.c
==============================================================================
--- trunk/src/empathy-status-icon.c (original)
+++ trunk/src/empathy-status-icon.c Sun Apr 20 13:33:46 2008
@@ -55,10 +55,12 @@
struct _EmpathyStatusIconPriv {
GtkStatusIcon *icon;
EmpathyIdle *idle;
+ MissionControl *mc;
EmpathyFilter *filter;
EmpathyFilterEvent *event;
gboolean showing_event_icon;
guint blink_timeout;
+ gpointer token;
GtkWindow *window;
GtkWidget *popup_menu;
@@ -320,9 +322,12 @@
g_source_remove (priv->blink_timeout);
}
+ empathy_disconnect_account_status_changed (priv->token);
+
g_object_unref (priv->icon);
g_object_unref (priv->idle);
g_object_unref (priv->filter);
+ g_object_unref (priv->mc);
}
static void
@@ -336,13 +341,45 @@
}
static void
+status_icon_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyStatusIcon *icon)
+{
+ GList *accounts, *l;
+ guint connection_status;
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (icon);
+
+ /* Check for a connected account */
+ accounts = mc_accounts_list_by_enabled (TRUE);
+ for (l = accounts; l; l = l->next) {
+ connection_status = mission_control_get_connection_status (priv->mc,
+ l->data,
+ NULL);
+ if (connection_status == 0)
+ break;
+ }
+ mc_accounts_list_free (accounts);
+
+ gtk_widget_set_sensitive (priv->message_item, connection_status == 0);
+}
+
+static void
empathy_status_icon_init (EmpathyStatusIcon *icon)
{
EmpathyStatusIconPriv *priv = GET_PRIV (icon);
priv->icon = gtk_status_icon_new ();
+ priv->mc = empathy_mission_control_new ();
priv->idle = empathy_idle_new ();
priv->filter = empathy_filter_new ();
+ priv->token = empathy_connect_to_account_status_changed (priv->mc,
+ G_CALLBACK (status_icon_status_changed_cb),
+ icon, NULL);
/* make icon listen and respond to MAIN_WINDOW_HIDDEN changes */
empathy_conf_notify_add (empathy_conf_get (),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]