diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/indicator-messages.c | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/src/indicator-messages.c b/src/indicator-messages.c index eb0b1fb..70efd52 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -49,7 +49,6 @@ typedef struct _IndicatorMessagesClass IndicatorMessagesClass; struct _IndicatorMessagesClass { IndicatorObjectClass parent_class; - void (*update_a11y_desc) (IndicatorServiceManager * service, gpointer * user_data); }; struct _IndicatorMessages { @@ -66,10 +65,6 @@ INDICATOR_SET_VERSION INDICATOR_SET_TYPE(INDICATOR_MESSAGES_TYPE) /* Globals */ -static GtkWidget * main_image = NULL; -static GDBusProxy * icon_proxy = NULL; -static GDBusNodeInfo * bus_node_info = NULL; -static GDBusInterfaceInfo * bus_interface_info = NULL; static const gchar * accessible_desc = NULL; static IndicatorObject * indicator = NULL; @@ -78,41 +73,13 @@ static void indicator_messages_class_init (IndicatorMessagesClass *klass); static void indicator_messages_init (IndicatorMessages *self); static void indicator_messages_dispose (GObject *object); static void indicator_messages_finalize (GObject *object); -static GtkImage * get_icon (IndicatorObject * io); static GMenuModel * get_menu_model (IndicatorObject * io); static GActionGroup * get_actions (IndicatorObject * io); -static void indicator_messages_middle_click (IndicatorObject * io, - IndicatorObjectEntry * entry, - guint time, gpointer data); static const gchar * get_accessible_desc (IndicatorObject * io); static const gchar * get_name_hint (IndicatorObject * io); -static void connection_change (IndicatorServiceManager * sm, - gboolean connected, - gpointer user_data); G_DEFINE_TYPE (IndicatorMessages, indicator_messages, INDICATOR_OBJECT_TYPE); -static void -update_a11y_desc (void) -{ - g_return_if_fail(IS_INDICATOR_MESSAGES(indicator)); - - GList *entries = indicator_object_get_entries(indicator); - IndicatorObjectEntry * entry = (IndicatorObjectEntry *)entries->data; - - entry->accessible_desc = get_accessible_desc(indicator); - - g_signal_emit(G_OBJECT(indicator), - INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE_ID, - 0, - entry, - TRUE); - - g_list_free(entries); - - return; -} - /* Initialize the one-timers */ static void indicator_messages_class_init (IndicatorMessagesClass *klass) @@ -124,32 +91,10 @@ indicator_messages_class_init (IndicatorMessagesClass *klass) IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass); - io_class->get_image = get_icon; io_class->get_menu_model = get_menu_model; io_class->get_actions = get_actions; io_class->get_accessible_desc = get_accessible_desc; io_class->get_name_hint = get_name_hint; - io_class->secondary_activate = indicator_messages_middle_click; - - if (bus_node_info == NULL) { - GError * error = NULL; - - bus_node_info = g_dbus_node_info_new_for_xml(_messages_service, &error); - if (error != NULL) { - g_error("Unable to parse Messaging Menu Interface description: %s", error->message); - g_error_free(error); - } - } - - if (bus_interface_info == NULL) { - bus_interface_info = g_dbus_node_info_lookup_interface(bus_node_info, INDICATOR_MESSAGES_DBUS_SERVICE_INTERFACE); - - if (bus_interface_info == NULL) { - g_error("Unable to find interface '" INDICATOR_MESSAGES_DBUS_SERVICE_INTERFACE "'"); - } - } - - return; } /* Build up our per-instance variables */ @@ -164,7 +109,6 @@ indicator_messages_init (IndicatorMessages *self) /* Complex stuff */ self->service = indicator_service_manager_new_version(INDICATOR_MESSAGES_DBUS_NAME, 1); - g_signal_connect(self->service, INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_change), self); bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (!bus) { @@ -218,186 +162,6 @@ indicator_messages_finalize (GObject *object) /* Functions */ -/* Signal off of the proxy */ -static void -proxy_signal (GDBusProxy * proxy, const gchar * sender, const gchar * signal, GVariant * params, gpointer user_data) -{ - gboolean prop = g_variant_get_boolean(g_variant_get_child_value(params, 0)); - - if (g_strcmp0("AttentionChanged", signal) == 0) { - if (prop) { - indicator_image_helper_update(GTK_IMAGE(main_image), "indicator-messages-new"); - accessible_desc = _("New Messages"); - } else { - indicator_image_helper_update(GTK_IMAGE(main_image), "indicator-messages"); - accessible_desc = _("Messages"); - } - } else if (g_strcmp0("IconChanged", signal) == 0) { - if (prop) { - gtk_widget_hide(main_image); - } else { - gtk_widget_show(main_image); - } - } else { - g_warning("Unknown signal %s", signal); - } - - update_a11y_desc(); - - return; -} - -/* Callback from getting the attention status from the service. */ -static void -attention_cb (GObject * object, GAsyncResult * ares, gpointer user_data) -{ - GError * error = NULL; - GVariant * res = g_dbus_proxy_call_finish(G_DBUS_PROXY(object), ares, &error); - - if (error != NULL) { - g_warning("Unable to get attention status: %s", error->message); - g_error_free(error); - return; - } - - gboolean prop = g_variant_get_boolean(g_variant_get_child_value(res, 0)); - - if (prop) { - indicator_image_helper_update(GTK_IMAGE(main_image), "indicator-messages-new"); - accessible_desc = _("New Messages"); - } else { - indicator_image_helper_update(GTK_IMAGE(main_image), "indicator-messages"); - accessible_desc = _("Messages"); - } - - update_a11y_desc(); - - return; -} - -/* Change from getting the icon visibility from the service */ -static void -icon_cb (GObject * object, GAsyncResult * ares, gpointer user_data) -{ - GError * error = NULL; - GVariant * res = g_dbus_proxy_call_finish(G_DBUS_PROXY(object), ares, &error); - - if (error != NULL) { - g_warning("Unable to get icon visibility: %s", error->message); - g_error_free(error); - return; - } - - gboolean prop = g_variant_get_boolean(g_variant_get_child_value(res, 0)); - - if (prop) { - gtk_widget_hide(main_image); - } else { - gtk_widget_show(main_image); - } - - return; -} - -static guint connection_drop_timeout = 0; - -/* Resets the icon to not having messages if we can't get a good - answer on it from the service. */ -static gboolean -connection_drop_cb (gpointer user_data) -{ - if (main_image != NULL) { - indicator_image_helper_update(GTK_IMAGE(main_image), "indicator-messages"); - } - connection_drop_timeout = 0; - return FALSE; -} - -/* Proxy is setup now.. whoo! */ -static void -proxy_ready_cb (GObject * obj, GAsyncResult * res, gpointer user_data) -{ - GError * error = NULL; - GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); - - if (error != NULL) { - g_warning("Unable to get proxy of service: %s", error->message); - g_error_free(error); - return; - } - - icon_proxy = proxy; - - g_signal_connect(G_OBJECT(proxy), "g-signal", G_CALLBACK(proxy_signal), user_data); - - g_dbus_proxy_call(icon_proxy, - "AttentionRequested", - NULL, /* params */ - G_DBUS_CALL_FLAGS_NONE, - -1, /* timeout */ - NULL, /* cancel */ - attention_cb, - user_data); - g_dbus_proxy_call(icon_proxy, - "IconShown", - NULL, /* params */ - G_DBUS_CALL_FLAGS_NONE, - -1, /* timeout */ - NULL, /* cancel */ - icon_cb, - user_data); - - return; -} - -/* Sets up all the icon information in the proxy. */ -static void -connection_change (IndicatorServiceManager * sm, gboolean connected, gpointer user_data) -{ - if (connection_drop_timeout != 0) { - g_source_remove(connection_drop_timeout); - connection_drop_timeout = 0; - } - - if (!connected) { - /* Ensure that we're not saying there are messages - when we don't have a connection. */ - connection_drop_timeout = g_timeout_add(400, connection_drop_cb, NULL); - return; - } - - if (icon_proxy == NULL) { - g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION, - G_DBUS_PROXY_FLAGS_NONE, - bus_interface_info, - INDICATOR_MESSAGES_DBUS_NAME, - INDICATOR_MESSAGES_DBUS_SERVICE_OBJECT, - INDICATOR_MESSAGES_DBUS_SERVICE_INTERFACE, - NULL, /* cancel */ - proxy_ready_cb, - sm); - } else { - g_dbus_proxy_call(icon_proxy, - "AttentionRequested", - NULL, /* params */ - G_DBUS_CALL_FLAGS_NONE, - -1, /* timeout */ - NULL, /* cancel */ - attention_cb, - sm); - g_dbus_proxy_call(icon_proxy, - "IconShown", - NULL, /* params */ - G_DBUS_CALL_FLAGS_NONE, - -1, /* timeout */ - NULL, /* cancel */ - icon_cb, - sm); - } - - return; -} - typedef struct _indicator_item_t indicator_item_t; struct _indicator_item_t { GtkWidget * icon; @@ -405,16 +169,6 @@ struct _indicator_item_t { GtkWidget * right; }; -/* Builds the main image icon using the libindicator helper. */ -static GtkImage * -get_icon (IndicatorObject * io) -{ - main_image = GTK_WIDGET(indicator_image_helper("indicator-messages")); - gtk_widget_show(main_image); - - return GTK_IMAGE(main_image); -} - /* Builds the menu for the indicator */ static GMenuModel * get_menu_model (IndicatorObject * io) @@ -443,24 +197,3 @@ get_name_hint (IndicatorObject *io) { return PACKAGE; } - -/* Hide the notifications on middle-click over the indicator-messages */ -static void -indicator_messages_middle_click (IndicatorObject * io, IndicatorObjectEntry * entry, - guint time, gpointer data) -{ - if (icon_proxy == NULL) { - return; - } - - g_dbus_proxy_call(icon_proxy, - "ClearAttention", - NULL, /* params */ - G_DBUS_CALL_FLAGS_NONE, - -1, /* timeout */ - NULL, /* cancel */ - NULL, - NULL); - - return; -} |