diff options
author | Iago Toral Quiroga <itoral@igalia.com> | 2010-02-22 10:01:59 +0100 |
---|---|---|
committer | Iago Toral Quiroga <itoral@igalia.com> | 2010-02-22 10:02:36 +0100 |
commit | ff5aac436d0d98a33f5ef4e0c92b8f73660537d7 (patch) | |
tree | 6b6cffb5bcd444b8fcfee699eb8d617bf56296e9 | |
parent | fb9479a9b8b7c3a1833af249869e417ceced82ca (diff) | |
download | grilo-plugins-ff5aac436d0d98a33f5ef4e0c92b8f73660537d7.tar.gz |
[podcasts] Added support for childcount.
-rw-r--r-- | src/podcasts/grl-podcasts.c | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index af43bf0..e475dde 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -66,17 +66,27 @@ "date TEXT, " \ "desc TEXT)" -#define GRL_SQL_GET_PODCASTS \ - "SELECT * FROM podcasts LIMIT %u OFFSET %u" +#define GRL_SQL_GET_PODCASTS \ + "SELECT p.*, count(s.podcast <> '') " \ + "FROM podcasts p LEFT OUTER JOIN streams s " \ + " ON p.id = s.podcast " \ + "GROUP BY p.id " \ + "LIMIT %u OFFSET %u" -#define GRL_SQL_GET_PODCASTS_BY_TEXT \ - "SELECT * FROM podcasts " \ - "WHERE title LIKE '%%%s%%' OR desc LIKE '%%%s%%' " \ +#define GRL_SQL_GET_PODCASTS_BY_TEXT \ + "SELECT p.*, count(s.podcast <> '') " \ + "FROM podcasts p LEFT OUTER JOIN streams s " \ + " ON p.id = s.podcast " \ + "WHERE p.title LIKE '%%%s%%' OR p.desc LIKE '%%%s%%' " \ + "GROUP BY p.id " \ "LIMIT %u OFFSET %u" -#define GRL_SQL_GET_PODCASTS_BY_QUERY \ - "SELECT * FROM podcasts " \ - "WHERE %s " \ +#define GRL_SQL_GET_PODCASTS_BY_QUERY \ + "SELECT p.*, count(s.podcast <> '') " \ + "FROM podcasts p LEFT OUTER JOIN streams s " \ + " ON p.id = s.podcast " \ + "WHERE %s " \ + "GROUP BY p.id " \ "LIMIT %u OFFSET %u" #define GRL_SQL_GET_PODCAST_BY_ID \ @@ -144,6 +154,7 @@ enum { PODCAST_URL, PODCAST_DESC, PODCAST_LAST_REFRESHED, + PODCAST_LAST, }; enum { @@ -500,7 +511,8 @@ build_media (GrlContentMedia *content, const gchar *desc, const gchar *mime, const gchar *date, - guint duration) + guint duration, + guint childcount) { GrlContentMedia *media = NULL; gchar *site; @@ -517,6 +529,7 @@ build_media (GrlContentMedia *content, grl_content_media_set_id (media, id); if (desc) grl_content_media_set_description (media, desc); + grl_content_box_set_childcount (GRL_CONTENT_BOX (media), childcount); } else { if (!media) { if (mime_is_audio (mime)) { @@ -562,7 +575,7 @@ build_media_from_entry (Entry *entry) media = build_media (NULL, FALSE, entry->url, entry->title, entry->url, entry->summary, entry->mime, entry->published, - duration); + duration, 0); return media; } @@ -579,14 +592,16 @@ build_media_from_stmt (GrlContentMedia *content, gchar *mime; gchar *date; guint duration; + guint childcount; if (is_podcast) { id = (gchar *) sqlite3_column_text (sql_stmt, PODCAST_ID); title = (gchar *) sqlite3_column_text (sql_stmt, PODCAST_TITLE); url = (gchar *) sqlite3_column_text (sql_stmt, PODCAST_URL); desc = (gchar *) sqlite3_column_text (sql_stmt, PODCAST_DESC); + childcount = (guint) sqlite3_column_int (sql_stmt, PODCAST_LAST); media = build_media (content, is_podcast, - id, title, url, desc, NULL, NULL, 0); + id, title, url, desc, NULL, NULL, 0, childcount); } else { mime = (gchar *) sqlite3_column_text (sql_stmt, STREAM_MIME); url = (gchar *) sqlite3_column_text (sql_stmt, STREAM_URL); @@ -595,7 +610,7 @@ build_media_from_stmt (GrlContentMedia *content, desc = (gchar *) sqlite3_column_text (sql_stmt, STREAM_DESC); duration = sqlite3_column_int (sql_stmt, STREAM_LENGTH); media = build_media (content, is_podcast, - url, title, url, desc, mime, date, duration); + url, title, url, desc, mime, date, duration, 0); } return media; |