diff options
Diffstat (limited to 'lib/src/sugar-download-manager.c')
-rw-r--r-- | lib/src/sugar-download-manager.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/lib/src/sugar-download-manager.c b/lib/src/sugar-download-manager.c new file mode 100644 index 0000000..c3ffcf2 --- /dev/null +++ b/lib/src/sugar-download-manager.c @@ -0,0 +1,121 @@ +#include "sugar-marshal.h" +#include "sugar-download-manager.h" + +enum { + DOWNLOAD_STARTED, + DOWNLOAD_COMPLETED, + DOWNLOAD_CANCELLED, + DOWNLOAD_PROGRESS, + LAST_SIGNAL +}; +static guint signals[LAST_SIGNAL] = { 0 }; + +G_DEFINE_TYPE(SugarDownloadManager, sugar_download_manager, G_TYPE_OBJECT) + +SugarDownloadManager *DownloadManager = NULL; + +static void +sugar_download_manager_init(SugarDownloadManager *DownloadManager) +{ +} + +static void +sugar_download_manager_class_init(SugarDownloadManagerClass *download_manager_class) +{ + signals[DOWNLOAD_STARTED] = + g_signal_new ("download-started", + G_OBJECT_CLASS_TYPE (download_manager_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (SugarDownloadManagerClass, handle_content), + NULL, NULL, + sugar_marshal_VOID__STRING_STRING_STRING, + G_TYPE_NONE, 3, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING); + + signals[DOWNLOAD_COMPLETED] = + g_signal_new ("download-completed", + G_OBJECT_CLASS_TYPE (download_manager_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (SugarDownloadManagerClass, handle_content), + NULL, NULL, + sugar_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); + + signals[DOWNLOAD_CANCELLED] = + g_signal_new ("download-cancelled", + G_OBJECT_CLASS_TYPE (download_manager_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (SugarDownloadManagerClass, handle_content), + NULL, NULL, + sugar_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); + + signals[DOWNLOAD_PROGRESS] = + g_signal_new ("download-progress", + G_OBJECT_CLASS_TYPE (download_manager_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (SugarDownloadManagerClass, handle_content), + NULL, NULL, + sugar_marshal_VOID__STRING_INT, + G_TYPE_NONE, 2, + G_TYPE_STRING, + G_TYPE_INT); +} + +SugarDownloadManager * +sugar_get_download_manager() +{ + if(DownloadManager == NULL) + DownloadManager = g_object_new(SUGAR_TYPE_DOWNLOAD_MANAGER, NULL); + + return DownloadManager; +} + +void +sugar_download_manager_download_started (SugarDownloadManager *download_manager, + const char *url, + const char *mime_type, + const char *tmp_file_name) +{ + g_signal_emit(download_manager, + signals[DOWNLOAD_STARTED], + 0 /* details */, + url, + mime_type, + tmp_file_name); +} + +void +sugar_download_manager_download_completed (SugarDownloadManager *download_manager, + const char *tmp_file_name) +{ + g_signal_emit(download_manager, + signals[DOWNLOAD_COMPLETED], + 0 /* details */, + tmp_file_name); +} + +void sugar_download_manager_download_cancelled (SugarDownloadManager *download_manager, + const char *tmp_file_name) +{ + g_signal_emit(download_manager, + signals[DOWNLOAD_CANCELLED], + 0 /* details */, + tmp_file_name); +} + +void +sugar_download_manager_update_progress (SugarDownloadManager *download_manager, + const char *tmp_file_name, + const int percent) +{ + g_signal_emit(download_manager, + signals[DOWNLOAD_PROGRESS], + 0 /* details */, + tmp_file_name, + percent); +} |