← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/libindicate/get-indicators into lp:libindicate

 

Ted Gould has proposed merging lp:~ted/libindicate/get-indicators into lp:libindicate.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)

For more details, see:
https://code.launchpad.net/~ted/libindicate/get-indicators/+merge/71609

Uhg, I can't believe these functions weren't there.  Basically they solve race conditions as you don't have to beat the signals when you're using a listener object.  Makes sense, eh?
-- 
https://code.launchpad.net/~ted/libindicate/get-indicators/+merge/71609
Your team ayatana-commits is subscribed to branch lp:libindicate.
=== modified file 'libindicate/listener.c'
--- libindicate/listener.c	2011-08-10 19:13:56 +0000
+++ libindicate/listener.c	2011-08-15 21:25:22 +0000
@@ -1161,6 +1161,33 @@
 	return;
 }
 
+/**
+ * indicate_listener_get_servers:
+ * @listener: The listener to look on
+ *
+ * Returns all the servers that this listener currently
+ * knows about.
+ *
+ * Return value: (transfer container) (element-type IndicatorListenerServer):
+ * A list of servers.
+ */
+GList *
+indicate_listener_get_servers (IndicateListener * listener)
+{
+	g_return_val_if_fail(INDICATE_IS_LISTENER(listener), NULL);
+	IndicateListenerPrivate * priv = INDICATE_LISTENER_GET_PRIVATE(listener);
+
+	GList * output = NULL;
+	GList * pntr;
+
+	for (pntr = priv->proxies; pntr != NULL; pntr = g_list_next(pntr)) {
+		proxy_t * proxy = (proxy_t *)pntr->data;
+		output = g_list_prepend(output, &proxy->server);
+	}
+
+	return output;
+}
+
 void
 indicate_listener_display (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, guint timestamp)
 {
@@ -1355,6 +1382,44 @@
 	return get_server_property(listener, server, callback, NULL, "menu", data);
 }
 
+/**
+ * indicate_listener_server_get_indicators:
+ * @listener: The listener for the server
+ * @server: Which server for the indicators
+ *
+ * Returns all of the indicators that are currently known to
+ * exist on this server.
+ *
+ * Return value: (transfer container) (element-type IndicateListenerIndicator):
+ * A list of indicators.
+ */
+GList *
+indicate_listener_server_get_indicators (IndicateListener * listener, IndicateListenerServer * server)
+{
+	g_return_val_if_fail(INDICATE_IS_LISTENER(listener), NULL);
+	g_return_val_if_fail(server != NULL, NULL);
+
+	IndicateListenerPrivate * priv = INDICATE_LISTENER_GET_PRIVATE(listener);
+
+	proxy_t searchitem;
+	searchitem.name = server->name;
+	searchitem.connection = server->connection;
+
+	GList * proxyitem = g_list_find_custom(priv->proxies, &searchitem, proxy_t_equal);
+	if (proxyitem == NULL) {
+		g_warning("Unable to find proxy item for server %s", server->name);
+		return NULL;
+	}
+
+	proxy_t * item = (proxy_t *)proxyitem->data;
+
+	if (item->indicators == NULL) {
+		/* We have no indicators for sure, so this is a valid return */
+		return NULL;
+	}
+
+	return g_hash_table_get_keys(item->indicators);
+}
 
 const gchar *
 indicate_listener_server_get_dbusname (IndicateListenerServer * server)

=== modified file 'libindicate/listener.h'
--- libindicate/listener.h	2011-08-10 19:13:56 +0000
+++ libindicate/listener.h	2011-08-15 21:25:22 +0000
@@ -168,6 +168,7 @@
                                                             gchar * property,
                                                             void (*callback) (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, gboolean propertydata, gpointer data),
                                                             gpointer data);
+GList *               indicate_listener_get_servers        (IndicateListener * listener);
 void                  indicate_listener_display            (IndicateListener * listener,
                                                             IndicateListenerServer * server,
                                                             IndicateListenerIndicator * indicator,
@@ -192,6 +193,8 @@
                                                             IndicateListenerServer * server,
                                                             void (*callback) (IndicateListener * listener, IndicateListenerServer * server, const gchar * value, gpointer data),
                                                             gpointer data);
+GList *               indicate_listener_server_get_indicators    (IndicateListener * listener,
+                                                                  IndicateListenerServer * server);
 const gchar *         indicate_listener_server_get_dbusname      (IndicateListenerServer * server);
 guint                 indicate_listener_indicator_get_id         (IndicateListenerIndicator * indicator);
 void                  indicate_listener_server_show_interest     (IndicateListener * listener,


Follow ups