diff src/streambrowser/streamdir.c @ 2570:28498c0bde64

Initial commit for the streambrowser plugin
author Calin Crisan ccrisan@gmail.com
date Sat, 17 May 2008 02:50:10 +0300
parents
children 6d6a3eb67510
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/streambrowser/streamdir.c	Sat May 17 02:50:10 2008 +0300
@@ -0,0 +1,138 @@
+
+#include <string.h>
+#include <glib.h>
+
+#include "streambrowser.h"
+#include "streamdir.h"
+
+
+streamdir_t* streamdir_new(gchar *name)
+{
+	streamdir_t *streamdir = (streamdir_t*) g_malloc(sizeof(streamdir_t));
+	strncpy(streamdir->name, name, DEF_STRING_LEN);
+	streamdir->category_list = NULL;
+	
+	return streamdir;
+}
+
+void streamdir_delete(streamdir_t *streamdir)
+{
+	GList *iterator;
+	category_t *category;
+
+	for (iterator = g_list_first(streamdir->category_list); iterator != NULL; iterator = g_list_next(streamdir->category_list)) {
+		category = iterator->data;		
+		category_delete(category);
+	}
+
+	g_list_free(streamdir->category_list);
+	g_free(streamdir);
+}
+
+
+category_t* category_new(gchar *name)
+{
+	category_t *category = (category_t*) g_malloc(sizeof(category_t));
+	strncpy(category->name, name, DEF_STRING_LEN);
+	category->streaminfo_list = NULL;
+	
+	return category;
+}
+
+void category_delete(category_t *category)
+{
+	GList *iterator;
+	streaminfo_t *streaminfo;
+	
+	for (iterator = g_list_first(category->streaminfo_list); iterator != NULL; iterator = g_list_next(category->streaminfo_list)) {
+		streaminfo = iterator->data;
+		streaminfo_delete(streaminfo);
+	}
+
+	g_list_free(category->streaminfo_list);
+	g_free(category);
+}
+
+void category_add(streamdir_t *streamdir, category_t *category)
+{
+	streamdir->category_list = g_list_append(streamdir->category_list, category);
+}
+
+void category_remove(streamdir_t *streamdir, category_t *category)
+{
+	streamdir->category_list = g_list_remove(streamdir->category_list, category);
+}
+
+category_t* category_get_by_index(streamdir_t *streamdir, gint index)
+{
+	return (category_t*) g_list_nth_data(streamdir->category_list, index);
+}
+
+category_t* category_get_by_name(streamdir_t *streamdir, gchar *name)
+{
+	GList *iterator;
+	category_t *category;
+	
+	for (iterator = g_list_first(streamdir->category_list); iterator != NULL; iterator = g_list_next(streamdir->category_list)) {
+		category = iterator->data;
+		if (!strncasecmp(category->name, name, DEF_STRING_LEN))
+			return category;
+	}
+	
+	return NULL;
+}
+
+gint category_get_count(streamdir_t *streamdir)
+{
+	return g_list_length(streamdir->category_list);
+}
+
+
+streaminfo_t* streaminfo_new(gchar *name, gchar *url)
+{
+	streaminfo_t *streaminfo = (streaminfo_t*) g_malloc(sizeof(streaminfo_t));
+	strncpy(streaminfo->name, name, DEF_STRING_LEN);
+	strncpy(streaminfo->url, url, DEF_STRING_LEN);
+	
+	return streaminfo;
+}
+
+void streaminfo_delete(streaminfo_t *streaminfo)
+{
+	g_free(streaminfo);
+}
+
+void streaminfo_add(category_t *category, streaminfo_t *streaminfo)
+{
+	category->streaminfo_list = g_list_append(category->streaminfo_list, streaminfo);
+}
+
+void streaminfo_remove(category_t *category, streaminfo_t *streaminfo)
+{
+	category->streaminfo_list = g_list_remove(category->streaminfo_list, streaminfo);
+}
+
+streaminfo_t* streaminfo_get_by_index(category_t *category, gint index)
+{
+	return (streaminfo_t*) g_list_nth_data(category->streaminfo_list, index);
+}
+
+streaminfo_t* streaminfo_get_by_name(category_t *category, gchar *name)
+{
+	GList *iterator;
+	streaminfo_t *streaminfo;
+	
+	for (iterator = g_list_first(category->streaminfo_list); iterator != NULL; iterator = g_list_next(category->streaminfo_list)) {
+		streaminfo = iterator->data;
+		if (!strncasecmp(streaminfo->name, name, DEF_STRING_LEN))
+			return streaminfo;
+	}
+	
+	return NULL;
+}
+
+gint streaminfo_get_count(category_t *category)
+{
+	return g_list_length(category->streaminfo_list);
+}
+