ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #03756
[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