https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1e201d7057741b48d559e…
commit 1e201d7057741b48d559e5ee6db2c5b2a2748d92
Author: Giannis Adamopoulos <gadamopoulos(a)reactos.org>
AuthorDate: Mon Apr 29 15:12:32 2019 +0300
Commit: Mark Jansen <mark.jansen(a)reactos.org>
CommitDate: Tue Aug 20 00:43:49 2019 +0200
[RAPPS] CDownloadManager: Get rid of the implementation of IBindStatusCallback as we
stopped using URLDownloadToFileW a decade ago
---
base/applications/rapps/loaddlg.cpp | 176 +++++++++---------------------------
1 file changed, 42 insertions(+), 134 deletions(-)
diff --git a/base/applications/rapps/loaddlg.cpp b/base/applications/rapps/loaddlg.cpp
index 9880b7691e2..201538f7edb 100644
--- a/base/applications/rapps/loaddlg.cpp
+++ b/base/applications/rapps/loaddlg.cpp
@@ -218,127 +218,6 @@ public:
END_MSG_MAP()
};
-class CDownloadDialog :
- public CComObjectRootEx<CComMultiThreadModelNoCS>,
- public IBindStatusCallback
-{
- HWND m_hDialog;
- BOOL m_UrlHasBeenCopied;
- CDownloaderProgress* m_progress;
-
-public:
- ~CDownloadDialog()
- {
- //DestroyWindow(m_hDialog);
- }
-
- HRESULT Initialize(HWND Dlg, CDownloaderProgress* pProgress)
- {
- m_hDialog = Dlg;
- m_UrlHasBeenCopied = FALSE;
- m_progress = pProgress;
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE OnStartBinding(
- DWORD dwReserved,
- IBinding *pib)
- {
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE GetPriority(
- LONG *pnPriority)
- {
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE OnLowResource(
- DWORD reserved)
- {
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE OnProgress(
- ULONG ulProgress,
- ULONG ulProgressMax,
- ULONG ulStatusCode,
- LPCWSTR szStatusText)
- {
- HWND Item;
- LONG r;
-
- m_progress->SetProgress(ulProgress, ulProgressMax);
-
- Item = GetDlgItem(m_hDialog, IDC_DOWNLOAD_STATUS);
- if (Item && szStatusText && wcslen(szStatusText) > 0
&& m_UrlHasBeenCopied == FALSE)
- {
- SIZE_T len = wcslen(szStatusText) + 1;
- ATL::CStringW buf;
- DWORD dummyLen;
-
- /* beautify our url for display purposes */
- if (!InternetCanonicalizeUrlW(szStatusText, buf.GetBuffer(len),
&dummyLen, ICU_DECODE | ICU_NO_ENCODE))
- {
- /* just use the original */
- buf.ReleaseBuffer();
- buf = szStatusText;
- }
- else
- {
- buf.ReleaseBuffer();
- }
-
- /* paste it into our dialog and don't do it again in this instance */
- SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) buf.GetString());
- m_UrlHasBeenCopied = TRUE;
- }
-
- SetLastError(ERROR_SUCCESS);
- r = GetWindowLongPtrW(m_hDialog, GWLP_USERDATA);
- if (r || GetLastError() != ERROR_SUCCESS)
- {
- return E_ABORT;
- }
-
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE OnStopBinding(
- HRESULT hresult,
- LPCWSTR szError)
- {
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE GetBindInfo(
- DWORD *grfBINDF,
- BINDINFO *pbindinfo)
- {
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE OnDataAvailable(
- DWORD grfBSCF,
- DWORD dwSize,
- FORMATETC *pformatetc,
- STGMEDIUM *pstgmed)
- {
- return S_OK;
- }
-
- virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable(
- REFIID riid,
- IUnknown *punk)
- {
- return S_OK;
- }
-
- BEGIN_COM_MAP(CDownloadDialog)
- COM_INTERFACE_ENTRY_IID(IID_IBindStatusCallback, IBindStatusCallback)
- END_COM_MAP()
-};
-
class CDowloadingAppsListView
: public CListView
{
@@ -406,12 +285,6 @@ public:
}
};
-extern "C"
-HRESULT WINAPI CDownloadDialog_Constructor(HWND Dlg, CDownloaderProgress* pProgress,
REFIID riid, LPVOID *ppv)
-{
- return ShellObjectCreatorInit<CDownloadDialog>(Dlg, pProgress, riid, ppv);
-}
-
#ifdef USE_CERT_PINNING
typedef CHeapPtr<char, CLocalAllocator> CLocalPtr;
@@ -472,6 +345,7 @@ class CDownloadManager
static CDowloadingAppsListView DownloadsListView;
static CDownloaderProgress ProgressBar;
static BOOL bCancelled;
+ static VOID UpdateProgress(HWND hDlg, ULONG ulProgress, ULONG ulProgressMax, ULONG
ulStatusCode, LPCWSTR szStatusText);
public:
static VOID Add(DownloadInfo info);
static VOID Download(const DownloadInfo& DLInfo, BOOL bIsModal = FALSE);
@@ -586,9 +460,46 @@ INT_PTR CALLBACK CDownloadManager::DownloadDlgProc(HWND Dlg, UINT
uMsg, WPARAM w
}
}
+BOOL UrlHasBeenCopied;
+
+VOID CDownloadManager::UpdateProgress(
+ HWND hDlg,
+ ULONG ulProgress,
+ ULONG ulProgressMax,
+ ULONG ulStatusCode,
+ LPCWSTR szStatusText)
+{
+ HWND Item;
+
+ ProgressBar.SetProgress(ulProgress, ulProgressMax);
+
+ Item = GetDlgItem(hDlg, IDC_DOWNLOAD_STATUS);
+ if (Item && szStatusText && wcslen(szStatusText) > 0 &&
UrlHasBeenCopied == FALSE)
+ {
+ SIZE_T len = wcslen(szStatusText) + 1;
+ ATL::CStringW buf;
+ DWORD dummyLen;
+
+ /* beautify our url for display purposes */
+ if (!InternetCanonicalizeUrlW(szStatusText, buf.GetBuffer(len), &dummyLen,
ICU_DECODE | ICU_NO_ENCODE))
+ {
+ /* just use the original */
+ buf.ReleaseBuffer();
+ buf = szStatusText;
+ }
+ else
+ {
+ buf.ReleaseBuffer();
+ }
+
+ /* paste it into our dialog and don't do it again in this instance */
+ SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) buf.GetString());
+ UrlHasBeenCopied = TRUE;
+ }
+}
+
DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
{
- CComPtr<IBindStatusCallback> dl;
ATL::CStringW Path;
PWSTR p, q;
@@ -700,11 +611,8 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_DOWNLOADING);
// download it
+ UrlHasBeenCopied = FALSE;
bTempfile = TRUE;
- CDownloadDialog_Constructor(hDlg, &ProgressBar,
IID_PPV_ARG(IBindStatusCallback, &dl));
-
- if (dl == NULL)
- goto end;
/* FIXME: this should just be using the system-wide proxy settings */
switch (SettingsInfo.Proxy)
@@ -843,7 +751,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
}
dwCurrentBytesRead += dwBytesRead;
- dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0,
InfoArray[iAppId].szUrl.GetString());
+ UpdateProgress(hDlg, dwCurrentBytesRead, dwContentLen, 0,
InfoArray[iAppId].szUrl.GetString());
} while (dwBytesRead && !bCancelled);
CloseHandle(hOut);
@@ -858,7 +766,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
ProgressBar.SetMarquee(FALSE);
dwContentLen = dwCurrentBytesRead;
- dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0,
InfoArray[iAppId].szUrl.GetString());
+ UpdateProgress(hDlg, dwCurrentBytesRead, dwContentLen, 0,
InfoArray[iAppId].szUrl.GetString());
}
/* if this thing isn't a RAPPS update and it has a SHA-1 checksum