First version of the ClipboardService. Added support for showing the progress of a pdf download in the clipboard.
This commit is contained in:
+36
-16
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
VOID:OBJECT,STRING,LONG,LONG
|
||||
VOID:OBJECT,LONG
|
||||
VOID:STRING,STRING,STRING
|
||||
VOID:STRING,INT
|
||||
VOID:STRING
|
||||
|
||||
Reference in New Issue
Block a user