dbus-glib on debian lenny.
Fujitaka Daidouji
fujitaka.daidouji at gmail.com
Wed Apr 15 17:12:50 PDT 2009
On Tue, Apr 14, 2009 at 8:43 PM, Fujitaka Daidouji <
fujitaka.daidouji at gmail.com> wrote:
> I have been tring to awhile now to figure this out. Tring to recieve track
> information from banshee-1. The field type is Dict of {String, variant}
> CurrentTrack. <-- So far I have not been successful on get information from
> it. This is what I tried. The for outputs the keys from the hashtable, but
> not values beside it. All the values are things like @ < ( symbols.
>
> #include <stdio.h>
> #include <dbus/dbus-glib.h>
> #include <string.h>
>
>
> banshee_hash_str(GHashTable *table, const char *key, char *dest)
> {
> GValue* value = (GValue*) g_hash_table_lookup(table, key);
> //if (value != NULL && G_VALUE_HOLDS_STRING(value)) {
> strncpy(dest, g_value_get_string(value),
> strlen(g_value_get_string(value)));
> //}
>
> }
>
> static void print_hash_value (gpointer key, gpointer val, gpointer data)
> {
> printf ("%s -> %s\n", (char *) key, (char *) val);
> }
>
> int main (int argc, char **argv)
> {
> DBusGConnection *connection;
> GError *error;
> DBusGProxy *proxy;
> GHashTable* table;
>
> struct TrackInfo {
> char *album;
> };
> struct TrackInfo ti;
>
> g_type_init ();
>
> error = NULL;
> connection = dbus_g_bus_get (DBUS_BUS_SESSION,
> &error);
> if (connection == NULL)
> {
> g_printerr ("Failed to open connection to bus: %s\n",
> error->message);
> g_error_free (error);
> exit (1);
> }
>
> /* Create a proxy object for the "bus driver" (name
> "org.bansheeproject.Banshee") */
>
> proxy = dbus_g_proxy_new_for_name (connection,
> "org.bansheeproject.Banshee",
>
> "/org/bansheeproject/Banshee/PlayerEngine",
>
> "org.bansheeproject.Banshee.PlayerEngine");
>
> /* Call GetCurrentTrack method, wait for reply */
> error = NULL;
>
> if (!dbus_g_proxy_call (proxy, "GetCurrentTrack", &error, G_TYPE_INVALID,
> dbus_g_type_get_map("GHashTable", G_TYPE_STRING,
> G_TYPE_VALUE), &table,
> G_TYPE_INVALID))
> {
>
> g_printerr ("Error: %s\n", error->message);
> g_error_free (error);
> exit (1);
> }
>
> /* Print the results */
> g_hash_table_foreach (table, print_hash_value, NULL);
> //banshee_hash_str(table, "album", ti->album);
>
> g_object_unref (proxy);
>
> return 0;
> }
>
> Using to compile it:
> gcc `pkg-config --libs --cflags glib-2.0 dbus-glib-1` spammer.c
>
> Maby someone can help me on this. Thanks.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freedesktop.org/archives/dbus/attachments/20090415/32ca3c42/attachment.html
More information about the dbus
mailing list