diff options
Diffstat (limited to 'lib/src/sugar-download-manager.c')
-rw-r--r-- | lib/src/sugar-download-manager.c | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/lib/src/sugar-download-manager.c b/lib/src/sugar-download-manager.c deleted file mode 100644 index ead3bc8..0000000 --- a/lib/src/sugar-download-manager.c +++ /dev/null @@ -1,165 +0,0 @@ -#include "sugar-marshal.h" -#include "sugar-download.h" -#include "sugar-download-manager.h" - -enum { - DOWNLOAD_STARTED, - DOWNLOAD_COMPLETED, - DOWNLOAD_CANCELLED, - DOWNLOAD_PROGRESS, - LAST_SIGNAL -}; -static guint signals[LAST_SIGNAL] = { 0 }; - -static void sugar_download_manager_finalize (GObject *object); -static void sugar_download_remove_download (gpointer key, gpointer value, gpointer user_data); - -G_DEFINE_TYPE (SugarDownloadManager, sugar_download_manager, G_TYPE_OBJECT) - -SugarDownloadManager *DownloadManager = NULL; - -static void -sugar_download_manager_init (SugarDownloadManager *download_manager) -{ - download_manager->downloads = g_hash_table_new (g_str_hash, g_str_equal); -} - -static void -sugar_download_manager_class_init (SugarDownloadManagerClass *download_manager_class) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (download_manager_class); - - gobject_class->finalize = sugar_download_manager_finalize; - - 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__OBJECT, - G_TYPE_NONE, 1, - G_TYPE_OBJECT); - - 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__OBJECT, - G_TYPE_NONE, 1, - G_TYPE_OBJECT); - - 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__OBJECT, - G_TYPE_NONE, 1, - G_TYPE_OBJECT); - - 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__OBJECT, - G_TYPE_NONE, 1, - G_TYPE_OBJECT); -} - -static void -sugar_download_manager_finalize (GObject *object) -{ - SugarDownloadManager *download_manager = SUGAR_DOWNLOAD_MANAGER (object); - g_hash_table_foreach (download_manager->downloads, sugar_download_remove_download, NULL); - g_hash_table_destroy (download_manager->downloads); -} - -static void -sugar_download_remove_download (gpointer key, gpointer value, gpointer user_data) -{ - g_free (value); -} - -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 *file_name) -{ - SugarDownload *download = (SugarDownload *) g_hash_table_lookup ( - download_manager->downloads, - file_name); - - g_return_if_fail (download == NULL); - - download = g_object_new (SUGAR_TYPE_DOWNLOAD, NULL); - sugar_download_set_url (download, url); - sugar_download_set_mime_type (download, mime_type); - sugar_download_set_file_name (download, file_name); - - g_hash_table_insert (download_manager->downloads, - (gpointer)file_name, - download); - - g_signal_emit (download_manager, signals[DOWNLOAD_STARTED], 0, download); -} - -void -sugar_download_manager_download_completed (SugarDownloadManager *download_manager, - const char *file_name) -{ - SugarDownload *download = (SugarDownload *) g_hash_table_lookup ( - download_manager->downloads, - file_name); - - g_return_if_fail (download); - - g_signal_emit (download_manager, signals[DOWNLOAD_COMPLETED], 0, download); - - g_hash_table_remove (download_manager->downloads, file_name); -} - -void sugar_download_manager_download_cancelled (SugarDownloadManager *download_manager, - const char *file_name) -{ - SugarDownload *download = (SugarDownload *) g_hash_table_lookup ( - download_manager->downloads, - file_name); - - g_return_if_fail (download); - - g_signal_emit (download_manager, signals[DOWNLOAD_CANCELLED], 0, download); - - g_hash_table_remove (download_manager->downloads, file_name); -} - -void -sugar_download_manager_update_progress (SugarDownloadManager *download_manager, - const char *file_name, - const int percent) -{ - SugarDownload *download = (SugarDownload *) g_hash_table_lookup ( - download_manager->downloads, - file_name); - - g_return_if_fail (download); - - sugar_download_set_percent (download, percent); - - g_signal_emit (download_manager, signals [DOWNLOAD_PROGRESS], 0, download); -} |