ReactOS 0.4.15-dev-5875-g7c755d9
CAvailableApplicationInfo Class Reference

#include <appinfo.h>

Inheritance diagram for CAvailableApplicationInfo:
Collaboration diagram for CAvailableApplicationInfo:

Public Member Functions

 CAvailableApplicationInfo (CConfigParser *Parser, const CStringW &PkgName, AppsCategories Category, const CPathW &BasePath)
 
 ~CAvailableApplicationInfo ()
 
virtual BOOL Valid () const override
 
virtual BOOL CanModify () override
 
virtual BOOL RetrieveIcon (CStringW &Path) const override
 
virtual BOOL RetrieveScreenshot (CStringW &Path) override
 
virtual VOID ShowAppInfo (CAppRichEdit *RichEdit) override
 
virtual VOID GetDownloadInfo (CStringW &Url, CStringW &Sha1, ULONG &SizeInBytes) const override
 
virtual VOID GetDisplayInfo (CStringW &License, CStringW &Size, CStringW &UrlSite, CStringW &UrlDownload) override
 
virtual BOOL UninstallApplication (BOOL bModify) override
 
- Public Member Functions inherited from CAppInfo
 CAppInfo (const CStringW &Identifier, AppsCategories Category)
 
virtual ~CAppInfo ()
 
virtual BOOL Valid () const =0
 
virtual BOOL CanModify ()=0
 
virtual BOOL RetrieveIcon (CStringW &Path) const =0
 
virtual BOOL RetrieveScreenshot (CStringW &Path)=0
 
virtual VOID ShowAppInfo (CAppRichEdit *RichEdit)=0
 
virtual VOID GetDownloadInfo (CStringW &Url, CStringW &Sha1, ULONG &SizeInBytes) const =0
 
virtual VOID GetDisplayInfo (CStringW &License, CStringW &Size, CStringW &UrlSite, CStringW &UrlDownload)=0
 
virtual BOOL UninstallApplication (BOOL bModify)=0
 

Private Member Functions

VOID InsertVersionInfo (CAppRichEdit *RichEdit)
 
VOID InsertLanguageInfo (CAppRichEdit *RichEdit)
 
VOID RetrieveLanguages ()
 
CStringW LicenseString ()
 

Private Attributes

class CConfigParserm_Parser
 
CSimpleArray< CStringWm_szScrnshotLocation
 
bool m_ScrnshotRetrieved
 
CStringW m_szUrlDownload
 
CStringW m_szSize
 
CStringW m_szUrlSite
 
CSimpleArray< LCIDm_LanguageLCIDs
 
bool m_LanguagesLoaded
 

Additional Inherited Members

- Public Attributes inherited from CAppInfo
const CStringW szIdentifier
 
const AppsCategories iCategory
 
CStringW szDisplayIcon
 
CStringW szDisplayName
 
CStringW szDisplayVersion
 
CStringW szComments
 

Detailed Description

Definition at line 100 of file appinfo.h.

Constructor & Destructor Documentation

◆ CAvailableApplicationInfo()

CAvailableApplicationInfo::CAvailableApplicationInfo ( CConfigParser Parser,
const CStringW PkgName,
AppsCategories  Category,
const CPathW BasePath 
)

Definition at line 22 of file appinfo.cpp.

27 : CAppInfo(PkgName, Category), m_Parser(Parser), m_ScrnshotRetrieved(false), m_LanguagesLoaded(false)
28{
31 m_Parser->GetString(L"URLDownload", m_szUrlDownload);
32 m_Parser->GetString(L"Description", szComments);
33
34 CPathW IconPath = BasePath;
35 IconPath += L"icons";
36
38 if (m_Parser->GetString(L"Icon", IconName))
39 {
41 }
42 else
43 {
44 // inifile.ico
45 IconPath += (szIdentifier + L".ico");
46 }
47
49 {
51 }
52
53 INT iSizeBytes;
54
55 if (m_Parser->GetInt(L"SizeBytes", iSizeBytes))
56 {
59 }
60
61 m_Parser->GetString(L"URLSite", m_szUrlSite);
62}
void ReleaseBuffer(_In_ int nNewLength=-1)
Definition: atlsimpstr.h:372
CStringW szComments
Definition: appinfo.h:80
CStringW szDisplayIcon
Definition: appinfo.h:77
CStringW szDisplayName
Definition: appinfo.h:78
CStringW szDisplayVersion
Definition: appinfo.h:79
const CStringW szIdentifier
Definition: appinfo.h:74
class CConfigParser * m_Parser
Definition: appinfo.h:102
BOOL GetString(const CStringW &KeyName, CStringW &ResultString)
BOOL GetInt(const CStringW &KeyName, INT &iResult)
LPCTSTR IconName
Definition: desktop.c:53
#define MAX_PATH
Definition: compat.h:34
static const WCHAR IconPath[]
Definition: install.c:51
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
Definition: path.c:1777
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
Definition: string.c:2380
#define L(x)
Definition: ntvdm.h:50
int32_t INT
Definition: typedefs.h:58
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ ~CAvailableApplicationInfo()

CAvailableApplicationInfo::~CAvailableApplicationInfo ( )

Definition at line 64 of file appinfo.cpp.

65{
66 delete m_Parser;
67}

Member Function Documentation

◆ CanModify()

BOOL CAvailableApplicationInfo::CanModify ( )
overridevirtual

Implements CAppInfo.

Definition at line 287 of file appinfo.cpp.

288{
289 return FALSE;
290}
#define FALSE
Definition: types.h:117

◆ GetDisplayInfo()

VOID CAvailableApplicationInfo::GetDisplayInfo ( CStringW License,
CStringW Size,
CStringW UrlSite,
CStringW UrlDownload 
)
overridevirtual

Implements CAppInfo.

Definition at line 352 of file appinfo.cpp.

353{
354 License = LicenseString();
355 Size = m_szSize;
356 UrlSite = m_szUrlSite;
357 UrlDownload = m_szUrlDownload;
358}
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533

◆ GetDownloadInfo()

VOID CAvailableApplicationInfo::GetDownloadInfo ( CStringW Url,
CStringW Sha1,
ULONG SizeInBytes 
) const
overridevirtual

Implements CAppInfo.

Definition at line 335 of file appinfo.cpp.

336{
337 Url = m_szUrlDownload;
338 m_Parser->GetString(L"SHA1", Sha1);
339 INT iSizeBytes;
340
341 if (m_Parser->GetInt(L"SizeBytes", iSizeBytes))
342 {
343 SizeInBytes = (ULONG)iSizeBytes;
344 }
345 else
346 {
347 SizeInBytes = 0;
348 }
349}
uint32_t ULONG
Definition: typedefs.h:59

◆ InsertLanguageInfo()

VOID CAvailableApplicationInfo::InsertLanguageInfo ( CAppRichEdit RichEdit)
private

Definition at line 191 of file appinfo.cpp.

192{
194 {
196 }
197
198 if (m_LanguageLCIDs.GetSize() == 0)
199 {
200 return;
201 }
202
203 const INT nTranslations = m_LanguageLCIDs.GetSize();
204 CStringW szLangInfo;
205 CStringW szLoadedTextAvailability;
206 CStringW szLoadedAInfoText;
207
208 szLoadedAInfoText.LoadStringW(IDS_AINFO_LANGUAGES);
209
212 {
213 szLoadedTextAvailability.LoadStringW(IDS_LANGUAGE_AVAILABLE_TRANSLATION);
214 if (nTranslations > 1)
215 {
218 szLangInfo.Format(buf, nTranslations - 1);
219 }
220 else
221 {
222 szLangInfo.LoadStringW(IDS_LANGUAGE_SINGLE);
223 szLangInfo = L" (" + szLangInfo + L")";
224 }
225 }
226 else if (m_LanguageLCIDs.Find(lcEnglish) >= 0)
227 {
228 szLoadedTextAvailability.LoadStringW(IDS_LANGUAGE_ENGLISH_TRANSLATION);
229 if (nTranslations > 1)
230 {
233 szLangInfo.Format(buf, nTranslations - 1);
234 }
235 else
236 {
237 szLangInfo.LoadStringW(IDS_LANGUAGE_SINGLE);
238 szLangInfo = L" (" + szLangInfo + L")";
239 }
240 }
241 else
242 {
243 szLoadedTextAvailability.LoadStringW(IDS_LANGUAGE_NO_TRANSLATION);
244 }
245
246 RichEdit->InsertText(szLoadedAInfoText, CFE_BOLD);
247 RichEdit->InsertText(szLoadedTextAvailability, NULL);
248 RichEdit->InsertText(szLangInfo, CFE_ITALIC);
249}
#define IDS_LANGUAGE_MORE_PLACEHOLDER
Definition: resource.h:213
#define IDS_LANGUAGE_SINGLE
Definition: resource.h:212
#define IDS_LANGUAGE_NO_TRANSLATION
Definition: resource.h:210
#define IDS_AINFO_LANGUAGES
Definition: resource.h:168
#define IDS_LANGUAGE_AVAILABLE_PLACEHOLDER
Definition: resource.h:214
#define IDS_LANGUAGE_AVAILABLE_TRANSLATION
Definition: resource.h:209
#define IDS_LANGUAGE_ENGLISH_TRANSLATION
Definition: resource.h:211
int GetSize() const
Definition: atlsimpcoll.h:104
int Find(const T &t) const
Definition: atlsimpcoll.h:82
void __cdecl Format(UINT nFormatID,...)
Definition: cstringt.h:753
CSimpleArray< LCID > m_LanguageLCIDs
Definition: appinfo.h:108
VOID InsertText(LPCWSTR lpszText, DWORD dwEffects)
Definition: crichedit.h:77
#define NULL
Definition: types.h:112
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
LCID WINAPI GetUserDefaultLCID(void)
Definition: lang.c:772
#define SORT_DEFAULT
#define MAKELCID(lgid, srtid)
#define CFE_BOLD
Definition: richedit.h:406
#define CFE_ITALIC
Definition: richedit.h:407
#define MAKELANGID(p, s)
Definition: nls.h:15
#define LANG_ENGLISH
Definition: nls.h:52
#define SUBLANG_DEFAULT
Definition: nls.h:168
DWORD LCID
Definition: nls.h:13

Referenced by ShowAppInfo().

◆ InsertVersionInfo()

VOID CAvailableApplicationInfo::InsertVersionInfo ( CAppRichEdit RichEdit)
private

Definition at line 116 of file appinfo.cpp.

117{
118 CStringW szRegName;
119 m_Parser->GetString(L"RegName", szRegName);
120
122 if (bIsInstalled)
123 {
124 CStringW szInstalledVersion;
125 CStringW szNameVersion = szDisplayName + L" " + szDisplayVersion;
126 BOOL bHasInstalledVersion = ::GetInstalledVersion(&szInstalledVersion, szRegName) ||
127 ::GetInstalledVersion(&szInstalledVersion, szDisplayName) ||
128 ::GetInstalledVersion(&szInstalledVersion, szNameVersion);
129
130 if (bHasInstalledVersion)
131 {
132 BOOL bHasUpdate = CompareVersion(szInstalledVersion, szDisplayVersion) < 0;
133 if (bHasUpdate)
135 else
137
138 RichEdit->LoadAndInsertText(IDS_AINFO_VERSION, szInstalledVersion, 0);
139 }
140 else
141 {
143 }
144 }
145 else
146 {
148 }
149
151}
int CompareVersion(const CStringW &left, const CStringW &right)
Definition: appinfo.cpp:85
BOOL GetInstalledVersion(CStringW *pszVersion, const CStringW &szRegName)
Definition: misc.cpp:280
#define IDS_AINFO_AVAILABLEVERSION
Definition: resource.h:167
#define IDS_STATUS_NOTINSTALLED
Definition: resource.h:195
#define IDS_AINFO_VERSION
Definition: resource.h:161
#define IDS_STATUS_UPDATE_AVAILABLE
Definition: resource.h:197
#define IDS_STATUS_INSTALLED
Definition: resource.h:194
VOID LoadAndInsertText(UINT uStringID, const CStringW &szText, DWORD TextFlags)
Definition: appview.cpp:234
unsigned int BOOL
Definition: ntddk_ex.h:94

Referenced by ShowAppInfo().

◆ LicenseString()

CStringW CAvailableApplicationInfo::LicenseString ( )
private

Definition at line 154 of file appinfo.cpp.

155{
156 INT IntBuffer;
157 m_Parser->GetInt(L"LicenseType", IntBuffer);
158 CStringW szLicenseString;
159 m_Parser->GetString(L"License", szLicenseString);
160 LicenseType licenseType;
161
162 if (IsLicenseType(IntBuffer))
163 {
164 licenseType = static_cast<LicenseType>(IntBuffer);
165 }
166 else
167 {
168 licenseType = LICENSE_NONE;
169 }
170
171 CStringW szLicense;
172 switch (licenseType)
173 {
175 szLicense.LoadStringW(IDS_LICENSE_OPENSOURCE);
176 break;
177 case LICENSE_FREEWARE:
178 szLicense.LoadStringW(IDS_LICENSE_FREEWARE);
179 break;
180 case LICENSE_TRIAL:
181 szLicense.LoadStringW(IDS_LICENSE_TRIAL);
182 break;
183 default:
184 return szLicenseString;
185 }
186
187 return szLicense + L" (" + szLicenseString + L")";
188}
LicenseType
Definition: appinfo.h:9
@ LICENSE_NONE
Definition: appinfo.h:10
@ LICENSE_OPENSOURCE
Definition: appinfo.h:11
@ LICENSE_TRIAL
Definition: appinfo.h:13
@ LICENSE_FREEWARE
Definition: appinfo.h:12
BOOL IsLicenseType(INT x)
Definition: appinfo.h:19
#define IDS_LICENSE_TRIAL
Definition: resource.h:206
#define IDS_LICENSE_FREEWARE
Definition: resource.h:205
#define IDS_LICENSE_OPENSOURCE
Definition: resource.h:204

Referenced by GetDisplayInfo(), and ShowAppInfo().

◆ RetrieveIcon()

BOOL CAvailableApplicationInfo::RetrieveIcon ( CStringW Path) const
overridevirtual

Implements CAppInfo.

Definition at line 293 of file appinfo.cpp.

294{
296 return !Path.IsEmpty();
297}
PRTL_UNICODE_STRING_BUFFER Path

◆ RetrieveLanguages()

VOID CAvailableApplicationInfo::RetrieveLanguages ( )
private

Definition at line 252 of file appinfo.cpp.

253{
254 m_LanguagesLoaded = true;
255
256 CStringW szBuffer;
257 if (!m_Parser->GetString(L"Languages", szBuffer))
258 {
259 return;
260 }
261
262 // Parse parameter string
263 int iIndex = 0;
264 while (true)
265 {
266 CStringW szLocale = szBuffer.Tokenize(L"|", iIndex);
267 if (szLocale.IsEmpty())
268 break;
269
270 szLocale = L"0x" + szLocale;
271
272 INT iLCID;
273 if (StrToIntExW(szLocale, STIF_SUPPORT_HEX, &iLCID))
274 {
275 m_LanguageLCIDs.Add(static_cast<LCID>(iLCID));
276 }
277 }
278}
BOOL Add(const T &t)
Definition: atlsimpcoll.h:58
bool IsEmpty() const
Definition: atlsimpstr.h:379
CStringT Tokenize(_In_z_ PCXSTR pszTokens, _Inout_ int &iStart) const
Definition: cstringt.h:872
BOOL WINAPI StrToIntExW(LPCWSTR lpszStr, DWORD dwFlags, LPINT lpiRet)
Definition: string.c:970
#define STIF_SUPPORT_HEX
Definition: shlwapi.h:1452

Referenced by InsertLanguageInfo().

◆ RetrieveScreenshot()

BOOL CAvailableApplicationInfo::RetrieveScreenshot ( CStringW Path)
overridevirtual

Implements CAppInfo.

Definition at line 301 of file appinfo.cpp.

302{
304 {
305 static_assert(MAX_SCRNSHOT_NUM < 10000, "MAX_SCRNSHOT_NUM is too big");
306 for (int i = 0; i < MAX_SCRNSHOT_NUM; i++)
307 {
308 CStringW ScrnshotField;
309 ScrnshotField.Format(L"Screenshot%d", i + 1);
310 CStringW ScrnshotLocation;
311 if (!m_Parser->GetString(ScrnshotField, ScrnshotLocation))
312 {
313 // We stop at the first screenshot not found,
314 // so screenshots _have_ to be consecutive
315 break;
316 }
317
318 if (PathIsURLW(ScrnshotLocation.GetString()))
319 {
320 m_szScrnshotLocation.Add(ScrnshotLocation);
321 }
322 }
323 m_ScrnshotRetrieved = true;
324 }
325
326 if (m_szScrnshotLocation.GetSize() > 0)
327 {
329 }
330
331 return !Path.IsEmpty();
332}
#define MAX_SCRNSHOT_NUM
Definition: appinfo.cpp:299
PCXSTR GetString() const
Definition: atlsimpstr.h:361
CSimpleArray< CStringW > m_szScrnshotLocation
Definition: appinfo.h:103
BOOL WINAPI PathIsURLW(LPCWSTR lpstrPath)
Definition: url.c:2432
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248

◆ ShowAppInfo()

VOID CAvailableApplicationInfo::ShowAppInfo ( CAppRichEdit RichEdit)
overridevirtual

Implements CAppInfo.

Definition at line 70 of file appinfo.cpp.

71{
72 RichEdit->SetText(szDisplayName, CFE_BOLD);
73 InsertVersionInfo(RichEdit);
75 InsertLanguageInfo(RichEdit);
76
82}
#define IDS_AINFO_SIZE
Definition: resource.h:163
#define IDS_AINFO_PACKAGE_NAME
Definition: resource.h:172
#define IDS_AINFO_LICENSE
Definition: resource.h:165
#define IDS_AINFO_DESCRIPTION
Definition: resource.h:162
#define IDS_AINFO_URLSITE
Definition: resource.h:164
#define IDS_AINFO_URLDOWNLOAD
Definition: resource.h:166
VOID InsertLanguageInfo(CAppRichEdit *RichEdit)
Definition: appinfo.cpp:191
VOID InsertVersionInfo(CAppRichEdit *RichEdit)
Definition: appinfo.cpp:116
VOID SetText(LPCWSTR lpszText, DWORD dwEffects)
Definition: crichedit.h:91
#define CFE_LINK
Definition: richedit.h:411

◆ UninstallApplication()

BOOL CAvailableApplicationInfo::UninstallApplication ( BOOL  bModify)
overridevirtual

Implements CAppInfo.

Definition at line 361 of file appinfo.cpp.

362{
363 ATLASSERT(FALSE && "Should not be called");
364 return FALSE;
365}
#define ATLASSERT(x)
Definition: CComVariant.cpp:10

◆ Valid()

BOOL CAvailableApplicationInfo::Valid ( ) const
overridevirtual

Implements CAppInfo.

Definition at line 281 of file appinfo.cpp.

282{
284}

Member Data Documentation

◆ m_LanguageLCIDs

CSimpleArray<LCID> CAvailableApplicationInfo::m_LanguageLCIDs
private

Definition at line 108 of file appinfo.h.

Referenced by InsertLanguageInfo(), and RetrieveLanguages().

◆ m_LanguagesLoaded

bool CAvailableApplicationInfo::m_LanguagesLoaded
private

Definition at line 109 of file appinfo.h.

Referenced by InsertLanguageInfo(), and RetrieveLanguages().

◆ m_Parser

◆ m_ScrnshotRetrieved

bool CAvailableApplicationInfo::m_ScrnshotRetrieved
private

Definition at line 104 of file appinfo.h.

Referenced by RetrieveScreenshot().

◆ m_szScrnshotLocation

CSimpleArray<CStringW> CAvailableApplicationInfo::m_szScrnshotLocation
private

Definition at line 103 of file appinfo.h.

Referenced by RetrieveScreenshot().

◆ m_szSize

CStringW CAvailableApplicationInfo::m_szSize
private

Definition at line 106 of file appinfo.h.

Referenced by CAvailableApplicationInfo(), GetDisplayInfo(), and ShowAppInfo().

◆ m_szUrlDownload

CStringW CAvailableApplicationInfo::m_szUrlDownload
private

◆ m_szUrlSite

CStringW CAvailableApplicationInfo::m_szUrlSite
private

Definition at line 107 of file appinfo.h.

Referenced by CAvailableApplicationInfo(), GetDisplayInfo(), and ShowAppInfo().


The documentation for this class was generated from the following files: