album art support and other work on play window
[devious] / devious.h
index a880add..c8d93f1 100644 (file)
--- a/devious.h
+++ b/devious.h
 #define PLAY_WINDOW_TITLE "Now playing"
 #define CHOOSE_TARGET "Choose target"
 #define ROW_HEIGHT 75
+#define MP_ICON_PATH "/usr/share/themes/default/mediaplayer/"
 #define ICON_WIDTH 90
 #define ICON_XALIGN 0.6
+#define PLAY_WINDOW_IMAGE_SIZE 295
 #define MEDIA_RENDERER "urn:schemas-upnp-org:device:MediaRenderer:*"
 #define MEDIA_SERVER "urn:schemas-upnp-org:device:MediaServer:*"
 #define CONTENT_DIR "urn:schemas-upnp-org:service:ContentDirectory"
 #define CONNECTION_MANAGER "urn:schemas-upnp-org:service:ConnectionManager"
 #define AV_TRANSPORT "urn:schemas-upnp-org:service:AVTransport"
+#define ALBUM_ART "albumArtURI"
 #define MAX_BROWSE 64
 
-struct proxy {
-    GtkTreeRowReference *row;
-    GUPnPDeviceProxy *proxy;
-    char *name;
-    struct proxy_set *set;
-    char **protocols;
-    GtkTreeRowReference *current_selection;
-};
-
 struct proxy_set {
     GHashTable *renderers;
     GHashTable *servers;
     GtkListStore *renderer_list;
     GtkListStore *server_list;
-    GdkPixbuf *icon;
+    struct application *app;
+};
+
+struct application {
+    struct proxy_set set;
+    SoupSession *soup;
     HildonPickerButton *renderer_picker;
     GUPnPDIDLLiteParser *didl_parser;
 };
 
+struct proxy {
+    GtkTreeRowReference *row;
+    GUPnPDeviceProxy *proxy;
+    char *name;
+    char **protocols;
+    struct proxy_set *set;
+};
+
 struct browse_data {
     GUPnPServiceProxy *content_dir;
     gchar *id;
     guint32 starting_index;
     GtkListStore *list;
-    GUPnPDIDLLiteParser *didl_parser;
+    struct proxy_set *set;
+};
+
+struct selection_data {
+    GtkTreeRowReference *row;
+    char *duration;
+    char *art_uri;
+    GtkWidget *art_image;
+    struct proxy_set *set;
+};
+
+struct toggle_data {
+    GdkPixbuf *pixbufs[2];
+    GtkImage *image;
+    gboolean toggle;
+    gboolean state;
+    void (*callback)(GtkWidget *, gpointer);
+    gpointer user_data;
 };
 
 enum {
@@ -76,7 +100,7 @@ enum {
 
 void browse(GUPnPServiceProxy *content_dir, const char *container_id,
             guint32 starting_index, guint32 requested_count,
-            GtkListStore *list, GUPnPDIDLLiteParser *didl_parser);
+            GtkListStore *list, struct proxy_set *proxy_set);
 
 void set_panarea_padding(GtkWidget *child, gpointer data);