ReactOS 0.4.17-dev-470-gf9e3448
loaddlg.cpp File Reference
#include "rapps.h"
#include <shlobj_undoc.h>
#include <shlguid_undoc.h>
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <wininet.h>
#include <shellutils.h>
#include <debug.h>
#include <ui/rosctrls.h>
#include <windowsx.h>
#include <shlwapi.h>
#include <shlwapi_undoc.h>
#include <process.h>
#include "rosui.h"
#include "dialogs.h"
#include "misc.h"
#include "unattended.h"
Include dependency graph for loaddlg.cpp:

Go to the source code of this file.

Classes

struct  DownloadInfo
 
class  CDownloaderProgress
 
class  CDowloadingAppsListView
 
class  CDownloadManager
 

Macros

#define FILENAME_VALID_CHAR
 

Enumerations

enum  DownloadType { DLTYPE_APPLICATION , DLTYPE_DBUPDATE , DLTYPE_DBUPDATE_UNOFFICIAL }
 
enum  DownloadStatus {
  DLSTATUS_WAITING = IDS_STATUS_WAITING , DLSTATUS_DOWNLOADING = IDS_STATUS_DOWNLOADING , DLSTATUS_WAITING_INSTALL = IDS_STATUS_DOWNLOADED , DLSTATUS_INSTALLING = IDS_STATUS_INSTALLING ,
  DLSTATUS_INSTALLED = IDS_STATUS_INSTALLED , DLSTATUS_FINISHED = IDS_STATUS_FINISHED
}
 

Functions

CStringW LoadStatusString (DownloadStatus StatusParam)
 
VOID UrlUnescapeAndMakeFileNameValid (CStringW &str)
 
static void SetFriendlyUrl (HWND hWnd, LPCWSTR pszUrl)
 
static VOID MessageBox_LoadString (HWND hOwnerWnd, INT StringID)
 
static BOOL ShowLastError (HWND hWndOwner, BOOL bInetError, DWORD dwLastError)
 
BOOL DownloadListOfApplications (const CAtlList< CAppInfo * > &AppsList, UINT Flags)
 
BOOL DownloadApplication (CAppInfo *pAppInfo)
 
VOID DownloadApplicationsDB (LPCWSTR lpUrl, BOOL IsOfficial)
 

Variables

HWND g_hDownloadWnd = NULL
 

Macro Definition Documentation

◆ FILENAME_VALID_CHAR

#define FILENAME_VALID_CHAR
Value:
( \
#define PATH_CHAR_CLASS_OTHER_VALID
Definition: path.c:2115
#define PATH_CHAR_CLASS_SPACE
Definition: path.c:2114
#define PATH_CHAR_CLASS_LETTER
Definition: path.c:2107
#define PATH_CHAR_CLASS_SEMICOLON
Definition: path.c:2112
#define PATH_CHAR_CLASS_COMMA
Definition: path.c:2113
#define PATH_CHAR_CLASS_DOT
Definition: path.c:2109

Definition at line 100 of file loaddlg.cpp.

Enumeration Type Documentation

◆ DownloadStatus

Enumerator
DLSTATUS_WAITING 
DLSTATUS_DOWNLOADING 
DLSTATUS_WAITING_INSTALL 
DLSTATUS_INSTALLING 
DLSTATUS_INSTALLED 
DLSTATUS_FINISHED 

Definition at line 82 of file loaddlg.cpp.

83{
90};
#define IDS_STATUS_FINISHED
Definition: resource.h:211
#define IDS_STATUS_WAITING
Definition: resource.h:210
#define IDS_STATUS_INSTALLING
Definition: resource.h:209
#define IDS_STATUS_DOWNLOADED
Definition: resource.h:206
#define IDS_STATUS_DOWNLOADING
Definition: resource.h:208
#define IDS_STATUS_INSTALLED
Definition: resource.h:204
@ DLSTATUS_DOWNLOADING
Definition: loaddlg.cpp:85
@ DLSTATUS_FINISHED
Definition: loaddlg.cpp:89
@ DLSTATUS_WAITING_INSTALL
Definition: loaddlg.cpp:86
@ DLSTATUS_WAITING
Definition: loaddlg.cpp:84
@ DLSTATUS_INSTALLED
Definition: loaddlg.cpp:88
@ DLSTATUS_INSTALLING
Definition: loaddlg.cpp:87

◆ DownloadType

Enumerator
DLTYPE_APPLICATION 
DLTYPE_DBUPDATE 
DLTYPE_DBUPDATE_UNOFFICIAL 

Definition at line 75 of file loaddlg.cpp.

76{
80};
@ DLTYPE_DBUPDATE_UNOFFICIAL
Definition: loaddlg.cpp:79
@ DLTYPE_DBUPDATE
Definition: loaddlg.cpp:78
@ DLTYPE_APPLICATION
Definition: loaddlg.cpp:77

Function Documentation

◆ DownloadApplication()

BOOL DownloadApplication ( CAppInfo pAppInfo)

Definition at line 1241 of file loaddlg.cpp.

1242{
1243 if (!pAppInfo)
1244 return FALSE;
1245
1247 list.AddTail(pAppInfo);
1249}
Definition: list.h:37
#define FALSE
Definition: types.h:117
BOOL DownloadListOfApplications(const CAtlList< CAppInfo * > &AppsList, UINT Flags)
Definition: loaddlg.cpp:1222

Referenced by CMainWindow::InstallApplication().

◆ DownloadApplicationsDB()

VOID DownloadApplicationsDB ( LPCWSTR  lpUrl,
BOOL  IsOfficial 
)

Definition at line 1252 of file loaddlg.cpp.

1253{
1256 return;
1257
1258 DownloadInfo DatabaseDLInfo;
1259 DatabaseDLInfo.szUrl = lpUrl;
1260 DatabaseDLInfo.szName.LoadStringW(IDS_DL_DIALOG_DB_DISP);
1261 DatabaseDLInfo.DLType = IsOfficial ? DLTYPE_DBUPDATE : DLTYPE_DBUPDATE_UNOFFICIAL;
1262
1263 pDM->Add(DatabaseDLInfo);
1264 pDM->Show();
1265}
#define IDS_DL_DIALOG_DB_DISP
Definition: resource.h:227
static BOOL CreateInstance(BOOL Modal, CComPtr< CDownloadManager > &Obj)
Definition: loaddlg.cpp:511
@ DAF_MODAL
Definition: dialogs.h:14
CStringW szName
Definition: loaddlg.cpp:170
DownloadType DLType
Definition: loaddlg.cpp:165
CStringW szUrl
Definition: loaddlg.cpp:169

Referenced by CAppDB::UpdateAvailable().

◆ DownloadListOfApplications()

BOOL DownloadListOfApplications ( const CAtlList< CAppInfo * > &  AppsList,
UINT  Flags 
)

Definition at line 1222 of file loaddlg.cpp.

1223{
1224 if (AppsList.IsEmpty())
1225 return FALSE;
1226
1229 return FALSE;
1230
1231 for (POSITION it = AppsList.GetHeadPosition(); it;)
1232 {
1233 const CAppInfo *Info = AppsList.GetNext(it);
1234 pDM->Add(DownloadInfo(*Info, Flags));
1235 }
1236 pDM->Show();
1237 return TRUE;
1238}
bool IsEmpty() const
Definition: atlcoll.h:548
POSITION GetHeadPosition() const
Definition: atlcoll.h:554
E & GetNext(_Inout_ POSITION &pos)
Definition: atlcoll.h:566
#define TRUE
Definition: types.h:120
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170

Referenced by DownloadApplication(), HandleInstallCommand(), HandleSetupCommand(), and CMainWindow::OnCommand().

◆ LoadStatusString()

CStringW LoadStatusString ( DownloadStatus  StatusParam)

Definition at line 93 of file loaddlg.cpp.

94{
95 CStringW szString;
96 szString.LoadStringW(StatusParam);
97 return szString;
98}

Referenced by CDowloadingAppsListView::AddRow(), CDownloadManager::PerformDownloadAndInstall(), and CDowloadingAppsListView::SetDownloadStatus().

◆ MessageBox_LoadString()

static VOID MessageBox_LoadString ( HWND  hOwnerWnd,
INT  StringID 
)
inlinestatic

Definition at line 442 of file loaddlg.cpp.

443{
444 CStringW szMsgText;
445 if (szMsgText.LoadStringW(StringID))
446 {
447 MessageBoxW(hOwnerWnd, szMsgText.GetString(), NULL, MB_OK | MB_ICONERROR);
448 }
449}
PXSTR GetString() noexcept
Definition: atlsimpstr.h:367
#define NULL
Definition: types.h:112
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONERROR
Definition: winuser.h:798
#define MB_OK
Definition: winuser.h:801

Referenced by CDownloadManager::PerformDownloadAndInstall().

◆ SetFriendlyUrl()

static void SetFriendlyUrl ( HWND  hWnd,
LPCWSTR  pszUrl 
)
static

Definition at line 125 of file loaddlg.cpp.

126{
128 DWORD cch = (DWORD)(wcslen(pszUrl) + 1);
129 if (InternetCanonicalizeUrlW(pszUrl, buf.GetBuffer(cch), &cch, ICU_DECODE | ICU_NO_ENCODE))
130 {
131 buf.ReleaseBuffer();
132 pszUrl = buf;
133 }
134 SetWindowTextW(hWnd, pszUrl);
135}
HWND hWnd
Definition: settings.c:17
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
BOOL WINAPI InternetCanonicalizeUrlW(LPCWSTR lpszUrl, LPWSTR lpszBuffer, LPDWORD lpdwBufferLength, DWORD dwFlags)
Definition: internet.c:2004
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define DWORD
Definition: nt_native.h:44
_In_ UINT _In_ UINT cch
Definition: shellapi.h:432
#define ICU_DECODE
Definition: winhttp.h:353
#define ICU_NO_ENCODE
Definition: winhttp.h:352
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)

Referenced by CDownloadManager::PerformDownloadAndInstall().

◆ ShowLastError()

static BOOL ShowLastError ( HWND  hWndOwner,
BOOL  bInetError,
DWORD  dwLastError 
)
static

Definition at line 452 of file loaddlg.cpp.

453{
454 CLocalPtr<WCHAR> lpMsg;
455
456 if (!FormatMessageW(
459 (bInetError ? GetModuleHandleW(L"wininet.dll") : NULL), dwLastError, LANG_USER_DEFAULT, (LPWSTR)&lpMsg, 0,
460 NULL))
461 {
462 DPRINT1("FormatMessageW unexpected failure (err %d)\n", GetLastError());
463 return FALSE;
464 }
465
466 if (hWndOwner && !IsWindowVisible(hWndOwner))
467 hWndOwner = NULL;
468 MessageBoxW(hWndOwner, lpMsg, NULL, MB_OK | MB_ICONERROR);
469 return TRUE;
470}
#define DPRINT1
Definition: precomp.h:8
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
#define L(x)
Definition: resources.c:13
#define LANG_USER_DEFAULT
Definition: tnerror.cpp:50
uint16_t * LPWSTR
Definition: typedefs.h:56
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define FORMAT_MESSAGE_IGNORE_INSERTS
Definition: winbase.h:397
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:400
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:396
#define FORMAT_MESSAGE_FROM_HMODULE
Definition: winbase.h:399
BOOL WINAPI IsWindowVisible(_In_ HWND)

Referenced by CDownloadManager::PerformDownloadAndInstall().

◆ UrlUnescapeAndMakeFileNameValid()

VOID UrlUnescapeAndMakeFileNameValid ( CStringW str)

Definition at line 109 of file loaddlg.cpp.

110{
112 DWORD cchPath = _countof(szPath);
113 UrlUnescapeW(const_cast<LPWSTR>((LPCWSTR)str), szPath, &cchPath, 0);
114
115 for (PWCHAR pch = szPath; *pch; ++pch)
116 {
118 *pch = L'_';
119 }
120
121 str = szPath;
122}
#define MAX_PATH
Definition: compat.h:34
HRESULT WINAPI UrlUnescapeW(WCHAR *url, WCHAR *unescaped, DWORD *unescaped_len, DWORD flags)
Definition: path.c:2912
BOOL WINAPI PathIsValidCharW(WCHAR c, DWORD class)
Definition: path.c:2197
#define FILENAME_VALID_CHAR
Definition: loaddlg.cpp:100
#define pch(ap)
Definition: match.c:418
LPCWSTR szPath
Definition: env.c:37
short WCHAR
Definition: pedump.c:58
const WCHAR * str
#define _countof(array)
Definition: sndvol32.h:70
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * PWCHAR
Definition: typedefs.h:56

Referenced by CDownloadManager::PerformDownloadAndInstall().

Variable Documentation

◆ g_hDownloadWnd

HWND g_hDownloadWnd = NULL

Definition at line 473 of file loaddlg.cpp.

Referenced by CDownloadManager::FindInstance(), and CDownloadManager::RealDlgProc().