[PATCH] ieframe: Improve status updates in BindStatusCallback_OnProgress
Detlef Riekenberg
wine.dev at web.de
Wed Dec 21 06:51:24 CST 2011
---
dlls/ieframe/ieframe.rc | 9 +++++++++
dlls/ieframe/navigate.c | 36 +++++++++++++++++++++++++++++-------
dlls/ieframe/resource.h | 8 ++++++++
3 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/dlls/ieframe/ieframe.rc b/dlls/ieframe/ieframe.rc
index aca9ff3..d14a9ea 100644
--- a/dlls/ieframe/ieframe.rc
+++ b/dlls/ieframe/ieframe.rc
@@ -73,6 +73,15 @@ STRINGTABLE
IDS_ADDRESS "Address"
}
+STRINGTABLE
+{
+ IDS_FINDINGRESOURCE "Searching for %s"
+ IDS_BEGINDOWNLOADDATA "Start downloading %s"
+ IDS_ENDDOWNLOADDATA "Downloading %s"
+ IDS_SENDINGREQUEST "Asking for %s"
+}
+
+
IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70
STYLE DS_MODALFRAME | WS_CAPTION
CAPTION "Open URL"
diff --git a/dlls/ieframe/navigate.c b/dlls/ieframe/navigate.c
index 6c0ce41..c58ff7f 100644
--- a/dlls/ieframe/navigate.c
+++ b/dlls/ieframe/navigate.c
@@ -27,6 +27,7 @@
#include "shlwapi.h"
#include "wininet.h"
#include "mshtml.h"
+#include "resource.h"
#include "wine/debug.h"
@@ -93,21 +94,36 @@ static void dump_BINDINFO(BINDINFO *bi)
);
}
-static void set_status_text(BindStatusCallback *This, LPCWSTR str)
+static void set_status_text(BindStatusCallback *This, ULONG statuscode, LPCWSTR str)
{
VARIANTARG arg;
DISPPARAMS dispparams = {&arg, NULL, 1, 0};
+ WCHAR fmt[IDS_STATUSFMT_MAXLEN];
+ WCHAR buffer[IDS_STATUSFMT_MAXLEN + INTERNET_MAX_URL_LENGTH];
if(!This->doc_host)
return;
+ TRACE("(%p, %d, %s)\n", This, statuscode, debugstr_w(str));
+ buffer[0] = 0;
+ if (statuscode && str && *str) {
+ fmt[0] = 0;
+ /* the format string must have one "%s" for the str */
+ LoadStringW(ieframe_instance, IDS_STATUSFMT_FIRST + statuscode, fmt, IDS_STATUSFMT_MAXLEN);
+ snprintfW(buffer, sizeof(buffer)/sizeof(WCHAR), fmt, str);
+ }
+
V_VT(&arg) = VT_BSTR;
- V_BSTR(&arg) = str ? SysAllocString(str) : NULL;
+ V_BSTR(&arg) = str ? SysAllocString(buffer) : NULL;
+ TRACE("=> %s\n", debugstr_w(V_BSTR(&arg)));
+
call_sink(This->doc_host->cps.wbe2, DISPID_STATUSTEXTCHANGE, &dispparams);
- VariantClear(&arg);
if(This->doc_host->frame)
- IOleInPlaceFrame_SetStatusText(This->doc_host->frame, str);
+ IOleInPlaceFrame_SetStatusText(This->doc_host->frame, buffer);
+
+ VariantClear(&arg);
+
}
HRESULT set_dochost_url(DocHost *This, const WCHAR *url)
@@ -251,14 +267,20 @@ static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface,
case BINDSTATUS_REDIRECTING:
return set_dochost_url(This->doc_host, szStatusText);
case BINDSTATUS_BEGINDOWNLOADDATA:
- set_status_text(This, szStatusText); /* FIXME: "Start downloading from site: %s" */
+ set_status_text(This, ulStatusCode, szStatusText);
status_code = get_http_status_code(This->binding);
if(status_code != HTTP_STATUS_OK)
handle_navigation_error(This->doc_host, status_code, This->url, NULL);
return S_OK;
+
+ case BINDSTATUS_FINDINGRESOURCE:
case BINDSTATUS_ENDDOWNLOADDATA:
- set_status_text(This, szStatusText); /* FIXME: "Downloading from site: %s" */
+ case BINDSTATUS_SENDINGREQUEST:
+ set_status_text(This, ulStatusCode, szStatusText);
return S_OK;
+
+ case BINDSTATUS_CONNECTING:
+ case BINDSTATUS_CACHEFILENAMEAVAILABLE:
case BINDSTATUS_CLASSIDAVAILABLE:
case BINDSTATUS_MIMETYPEAVAILABLE:
case BINDSTATUS_BEGINSYNCOPERATION:
@@ -323,7 +345,7 @@ static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *ifac
TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError));
- set_status_text(This, emptyW);
+ set_status_text(This, 0, emptyW);
if(!This->doc_host)
return S_OK;
diff --git a/dlls/ieframe/resource.h b/dlls/ieframe/resource.h
index a7d4ad6..34dc67c 100644
--- a/dlls/ieframe/resource.h
+++ b/dlls/ieframe/resource.h
@@ -57,3 +57,11 @@
#define IDS_TB_PRINT 1105
#define IDS_ADDRESS 1106
+
+/* update status text in BINDSTATUS_* callback */
+#define IDS_STATUSFMT_FIRST 4096
+#define IDS_FINDINGRESOURCE IDS_STATUSFMT_FIRST + 1
+#define IDS_BEGINDOWNLOADDATA IDS_STATUSFMT_FIRST + 4
+#define IDS_ENDDOWNLOADDATA IDS_STATUSFMT_FIRST + 6
+#define IDS_SENDINGREQUEST IDS_STATUSFMT_FIRST + 11
+#define IDS_STATUSFMT_MAXLEN 256
--
1.7.5.4
More information about the wine-patches
mailing list