6 #include <hildon/hildon-notification.h>
7 #include <libmafw/mafw.h>
8 #include <libmafw-shared/mafw-shared.h>
10 #define WANTED_RENDERER "Mafw-Gst-Renderer"
12 static GMainLoop *loop = NULL;
13 static MafwRegistry *registry = NULL;
15 static void sig_handler (int sig G_GNUC_UNUSED)
17 if (g_main_loop_is_running (loop))
18 g_main_loop_quit (loop);
21 static void metadata_callback (const MafwRenderer *self G_GNUC_UNUSED, const gchar *object_id G_GNUC_UNUSED, GHashTable *metadata, gconstpointer user_data G_GNUC_UNUSED, const GError *error G_GNUC_UNUSED)
25 HildonNotification * n;
27 artist = g_value_get_string (mafw_metadata_first (metadata, MAFW_METADATA_KEY_ARTIST));
28 title = g_value_get_string (mafw_metadata_first (metadata, MAFW_METADATA_KEY_TITLE));
30 if (!artist || *artist == '\0') /* || !strcmp (artist, "")) */
31 artist = dgettext ("mediaplayer", "mp_li_unknown_artist");
33 if (!title || *title == '\0') /* || !strcmp (title, "")) */
34 title = dgettext ("mediaplayer", "mp_li_unknown_song");
36 n = hildon_notification_new (artist, title, "tasklaunch_media_player", "media");
37 hildon_notification_add_dbus_action (n, "default", "tasklaunch_media_player", "com.nokia.mediaplayer", "/com/nokia/osso/mediaplayer", "com.nokia.mediaplayer", "open_mp_now_playing", G_TYPE_NONE, NULL, -1);
38 notify_notification_show (NOTIFY_NOTIFICATION (n), NULL);
41 static void state_changed_cb (MafwRenderer *renderer, const MafwPlayState state, gconstpointer user_data G_GNUC_UNUSED)
46 mafw_renderer_get_current_metadata (renderer, (MafwRendererMetadataResultCB) metadata_callback, NULL);
55 static void renderer_added_cb (const MafwRegistry *registry2 G_GNUC_UNUSED, GObject *renderer, gconstpointer user_data G_GNUC_UNUSED)
57 if (MAFW_IS_RENDERER (renderer))
59 const gchar *name = mafw_extension_get_name (MAFW_EXTENSION (renderer));
61 if (!strcmp (name, WANTED_RENDERER))
63 g_signal_connect (renderer, "state-changed", G_CALLBACK (state_changed_cb), NULL);
68 static void mafw_init (void)
72 g_signal_connect (registry, "renderer-added", G_CALLBACK (renderer_added_cb), NULL);
73 renderers = mafw_registry_get_renderers (registry);
76 renderer_added_cb (registry, G_OBJECT (renderers->data), NULL);
77 renderers = g_list_next (renderers);
83 setlocale (LC_ALL, "");
86 notify_init ("mediaplayershit");
88 loop = g_main_loop_new (NULL, FALSE);
91 registry = MAFW_REGISTRY (mafw_registry_get_instance ());
94 signal (SIGINT, sig_handler);
95 signal (SIGQUIT, sig_handler);
96 signal (SIGTERM, sig_handler);
98 mafw_shared_init (registry, NULL);
102 g_main_loop_run (loop);
104 g_main_loop_unref (loop);
106 mafw_shared_deinit ();