First version of the ClipboardService. Added support for showing the progress of a pdf download in the clipboard.

This commit is contained in:
Tomeu Vizoso
2006-11-01 19:43:59 +01:00
parent cf508c1d22
commit 23565cfd48
21 changed files with 593 additions and 37 deletions
+36 -16
View File
@@ -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;
}
+75 -10
View File
@@ -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);
}
+11 -4
View File
@@ -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
+1 -1
View File
@@ -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;
+2
View File
@@ -1,3 +1,5 @@
VOID:OBJECT,STRING,LONG,LONG
VOID:OBJECT,LONG
VOID:STRING,STRING,STRING
VOID:STRING,INT
VOID:STRING