Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib/src/sugar-download-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/sugar-download-manager.c')
-rw-r--r--lib/src/sugar-download-manager.c121
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);
+}