Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2006-11-01 18:43:59 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2006-11-01 18:43:59 (GMT)
commit23565cfd483e38d3a64cd5980deea47cccb28581 (patch)
treef56a4a4d15308a3b20276edae8e93bff30c1d314 /lib
parentcf508c1d229df5f4f645b7a66d568c1959bc6f62 (diff)
First version of the ClipboardService. Added support for showing the progress of a pdf download in the clipboard.
Diffstat (limited to 'lib')
-rw-r--r--lib/src/SugarDownload.cpp52
-rw-r--r--lib/src/sugar-browser-chandler.c85
-rw-r--r--lib/src/sugar-browser-chandler.h15
-rw-r--r--lib/src/sugar-browser.cpp2
-rw-r--r--lib/src/sugar-marshal.list2
5 files changed, 125 insertions, 31 deletions
diff --git a/lib/src/SugarDownload.cpp b/lib/src/SugarDownload.cpp
index 9c68b8f..62ca5ac 100644
--- a/lib/src/SugarDownload.cpp
+++ b/lib/src/SugarDownload.cpp
@@ -35,27 +35,39 @@ GSugarDownload::Init (nsIURI *aSource,
NS_IMETHODIMP
GSugarDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest,
PRUint32 aStateFlags, nsresult aStatus)
-{
- nsCString url;
- nsCString mimeType;
- nsCString targetURI;
-
- if ((((aStateFlags & STATE_IS_REQUEST) &&
+{
+ SugarBrowserChandler *browser_chandler = sugar_get_browser_chandler();
+
+ if (((aStateFlags & STATE_IS_REQUEST) &&
(aStateFlags & STATE_IS_NETWORK) &&
- (aStateFlags & STATE_STOP)) ||
- aStateFlags == STATE_STOP) &&
- NS_SUCCEEDED (aStatus)) {
+ (aStateFlags & STATE_START)) ||
+ aStateFlags == STATE_START) {
+
+ nsCString url;
+ nsCString mimeType;
mMIMEInfo->GetMIMEType(mimeType);
mSource->GetSpec(url);
- SugarBrowserChandler *browser_chandler = sugar_get_browser_chandler();
- sugar_browser_chandler_handle_content(browser_chandler,
- url.get(),
- mimeType.get(),
- mTargetFileName.get());
+ sugar_browser_chandler_download_started(browser_chandler,
+ url.get(),
+ mimeType.get(),
+ mTargetFileName.get());
+
+ } else if (((aStateFlags & STATE_IS_REQUEST) &&
+ (aStateFlags & STATE_IS_NETWORK) &&
+ (aStateFlags & STATE_STOP)) ||
+ aStateFlags == STATE_STOP) {
+
+ if (NS_SUCCEEDED (aStatus)) {
+ sugar_browser_chandler_download_completed(browser_chandler,
+ mTargetFileName.get());
+ } else {
+ sugar_browser_chandler_download_cancelled(browser_chandler,
+ mTargetFileName.get());
+ }
}
-
+
return NS_OK;
}
@@ -79,7 +91,15 @@ GSugarDownload::OnProgressChange64 (nsIWebProgress *aWebProgress,
PRInt64 aMaxSelfProgress,
PRInt64 aCurTotalProgress,
PRInt64 aMaxTotalProgress)
-{
+{
+ SugarBrowserChandler *browser_chandler = sugar_get_browser_chandler();
+ PRInt32 percentComplete =
+ (PRInt32)(((float)aCurSelfProgress / (float)aMaxSelfProgress) * 100.0);
+
+ sugar_browser_chandler_update_progress(browser_chandler,
+ mTargetFileName.get(),
+ percentComplete);
+
return NS_OK;
}
diff --git a/lib/src/sugar-browser-chandler.c b/lib/src/sugar-browser-chandler.c
index a65519a..da6e9d0 100644
--- a/lib/src/sugar-browser-chandler.c
+++ b/lib/src/sugar-browser-chandler.c
@@ -2,7 +2,10 @@
#include "sugar-browser-chandler.h"
enum {
- HANDLE_CONTENT,
+ DOWNLOAD_STARTED,
+ DOWNLOAD_COMPLETED,
+ DOWNLOAD_CANCELLED,
+ DOWNLOAD_PROGRESS,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL] = { 0 };
@@ -19,8 +22,8 @@ sugar_browser_chandler_init(SugarBrowserChandler *browserChandler)
static void
sugar_browser_chandler_class_init(SugarBrowserChandlerClass *browser_chandler_class)
{
- signals[HANDLE_CONTENT] =
- g_signal_new ("handle-content",
+ signals[DOWNLOAD_STARTED] =
+ g_signal_new ("download-started",
G_OBJECT_CLASS_TYPE (browser_chandler_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (SugarBrowserChandlerClass, handle_content),
@@ -30,6 +33,37 @@ sugar_browser_chandler_class_init(SugarBrowserChandlerClass *browser_chandler_cl
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING);
+
+ signals[DOWNLOAD_COMPLETED] =
+ g_signal_new ("download-completed",
+ G_OBJECT_CLASS_TYPE (browser_chandler_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SugarBrowserChandlerClass, 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 (browser_chandler_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SugarBrowserChandlerClass, 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 (browser_chandler_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SugarBrowserChandlerClass, handle_content),
+ NULL, NULL,
+ sugar_marshal_VOID__STRING_INT,
+ G_TYPE_NONE, 2,
+ G_TYPE_STRING,
+ G_TYPE_INT);
}
SugarBrowserChandler *
@@ -42,15 +76,46 @@ sugar_get_browser_chandler()
}
void
-sugar_browser_chandler_handle_content (SugarBrowserChandler *browser_chandler,
- const char *url,
- const char *mime_type,
- const char *tmp_file_name)
-{
+sugar_browser_chandler_download_started (SugarBrowserChandler *browser_chandler,
+ const char *url,
+ const char *mime_type,
+ const char *tmp_file_name)
+{
g_signal_emit(browser_chandler,
- signals[HANDLE_CONTENT],
+ signals[DOWNLOAD_STARTED],
0 /* details */,
url,
mime_type,
- tmp_file_name);
+ tmp_file_name);
+}
+
+void
+sugar_browser_chandler_download_completed (SugarBrowserChandler *browser_chandler,
+ const char *tmp_file_name)
+{
+ g_signal_emit(browser_chandler,
+ signals[DOWNLOAD_COMPLETED],
+ 0 /* details */,
+ tmp_file_name);
+}
+
+void sugar_browser_chandler_download_cancelled (SugarBrowserChandler *browser_chandler,
+ const char *tmp_file_name)
+{
+ g_signal_emit(browser_chandler,
+ signals[DOWNLOAD_CANCELLED],
+ 0 /* details */,
+ tmp_file_name);
+}
+
+void
+sugar_browser_chandler_update_progress (SugarBrowserChandler *browser_chandler,
+ const char *tmp_file_name,
+ const int percent)
+{
+ g_signal_emit(browser_chandler,
+ signals[DOWNLOAD_PROGRESS],
+ 0 /* details */,
+ tmp_file_name,
+ percent);
}
diff --git a/lib/src/sugar-browser-chandler.h b/lib/src/sugar-browser-chandler.h
index cccd983..f851b70 100644
--- a/lib/src/sugar-browser-chandler.h
+++ b/lib/src/sugar-browser-chandler.h
@@ -29,10 +29,17 @@ struct _SugarBrowserChandlerClass {
GType sugar_browser_chandler_get_type (void);
SugarBrowserChandler *sugar_get_browser_chandler (void);
-void sugar_browser_chandler_handle_content (SugarBrowserChandler *chandler,
- const char *url,
- const char *mime_type,
- const char *tmp_file_name);
+void sugar_browser_chandler_download_started (SugarBrowserChandler *chandler,
+ const char *url,
+ const char *mime_type,
+ const char *tmp_file_name);
+void sugar_browser_chandler_download_completed (SugarBrowserChandler *chandler,
+ const char *tmp_file_name);
+void sugar_browser_chandler_download_cancelled (SugarBrowserChandler *chandler,
+ const char *tmp_file_name);
+void sugar_browser_chandler_update_progress (SugarBrowserChandler *chandler,
+ const char *tmp_file_name,
+ const int percent);
G_END_DECLS
diff --git a/lib/src/sugar-browser.cpp b/lib/src/sugar-browser.cpp
index d2ffb8a..f787f19 100644
--- a/lib/src/sugar-browser.cpp
+++ b/lib/src/sugar-browser.cpp
@@ -78,7 +78,7 @@ sugar_browser_startup(void)
PR_TRUE, getter_AddRefs(file));
NS_ENSURE_TRUE(file, FALSE);
- rv = prefService->ReadUserPrefs (file);
+ rv = prefService->ReadUserPrefs (file);
if (NS_FAILED(rv)) {
g_warning ("failed to read default preferences, error: %x", rv);
return FALSE;
diff --git a/lib/src/sugar-marshal.list b/lib/src/sugar-marshal.list
index 5a0120f..4d987f8 100644
--- a/lib/src/sugar-marshal.list
+++ b/lib/src/sugar-marshal.list
@@ -1,3 +1,5 @@
VOID:OBJECT,STRING,LONG,LONG
VOID:OBJECT,LONG
VOID:STRING,STRING,STRING
+VOID:STRING,INT
+VOID:STRING