[RAPPS] Introduce 'SizeBytes' DB entry and use it for display
authorAlexander Shaposhnikov <sanchaez@reactos.org>
Sat, 7 Apr 2018 16:17:22 +0000 (19:17 +0300)
committerAlexander Shaposhnikov <sanchaez@reactos.org>
Sat, 7 Apr 2018 16:25:12 +0000 (19:25 +0300)
This will allow us to reduce the DB size a little by avoiding
duplication for each and every entry.
Original patch by JIRA user "swyter"

CORE-10310

base/applications/rapps/available.cpp
base/applications/rapps/include/available.h
base/applications/rapps/include/misc.h
base/applications/rapps/include/resource.h
base/applications/rapps/installed.cpp
base/applications/rapps/misc.cpp

index 5ed7119..61c5a16 100644 (file)
@@ -38,7 +38,7 @@ VOID CAvailableApplicationInfo::RetrieveGeneralInfo()
 {
     m_Parser = new CConfigParser(m_sFileName);
 
-    m_Category = m_Parser->GetInt(L"Category");
+    m_Parser->GetInt(L"Category", m_Category);
 
     if (!GetString(L"Name", m_szName)
         || !GetString(L"URLDownload", m_szUrlDownload))
@@ -51,15 +51,16 @@ VOID CAvailableApplicationInfo::RetrieveGeneralInfo()
     GetString(L"Version", m_szVersion);
     GetString(L"License", m_szLicense);
     GetString(L"Description", m_szDesc);
-    GetString(L"Size", m_szSize);
     GetString(L"URLSite", m_szUrlSite);
     GetString(L"CDPath", m_szCDPath);
     GetString(L"Language", m_szRegName);
     GetString(L"SHA1", m_szSHA1);
 
+    RetrieveSize();
     RetrieveLicenseType();
     RetrieveLanguages();
     RetrieveInstalledStatus();
+
     if (m_IsInstalled)
     {
         RetrieveInstalledVersion();
@@ -128,7 +129,9 @@ VOID CAvailableApplicationInfo::RetrieveLanguages()
 
 VOID CAvailableApplicationInfo::RetrieveLicenseType()
 {
-    INT IntBuffer = m_Parser->GetInt(L"LicenseType");
+    INT IntBuffer;
+
+    m_Parser->GetInt(L"LicenseType", IntBuffer);
 
     if (IsLicenseType(IntBuffer))
     {
@@ -140,6 +143,21 @@ VOID CAvailableApplicationInfo::RetrieveLicenseType()
     }
 }
 
+VOID CAvailableApplicationInfo::RetrieveSize()
+{
+    INT iSizeBytes;
+
+    if (!m_Parser->GetInt(L"SizeBytes", iSizeBytes))
+    {
+        // fall back to "Size" string
+        GetString(L"Size", m_szSize);
+        return;
+    }
+    StrFormatByteSizeW(iSizeBytes, m_szSize.GetBuffer(MAX_PATH), MAX_PATH);
+    m_szSize.ReleaseBuffer();
+}
+
 BOOL CAvailableApplicationInfo::FindInLanguages(LCID what) const
 {
     if (!m_HasLanguageInfo)
index 876465f..c0b0f20 100644 (file)
@@ -75,6 +75,7 @@ private:
     VOID RetrieveInstalledVersion();
     VOID RetrieveLanguages();
     VOID RetrieveLicenseType();
+    VOID RetrieveSize();
     inline BOOL FindInLanguages(LCID what) const;
 };
 
index 738f674..143d976 100644 (file)
@@ -41,6 +41,6 @@ class CConfigParser
 public:
     CConfigParser(const ATL::CStringW& FileName = "");
 
-    UINT GetString(const ATL::CStringW& KeyName, ATL::CStringW& ResultString);
-    UINT GetInt(const ATL::CStringW& KeyName);
+    BOOL GetString(const ATL::CStringW& KeyName, ATL::CStringW& ResultString);
+    BOOL GetInt(const ATL::CStringW& KeyName, INT& iResult);
 };
index 9f4c4b1..7d5a9b9 100644 (file)
 #define IDS_AINFO_URLDOWNLOAD        355
 #define IDS_AINFO_AVAILABLEVERSION   356
 #define IDS_AINFO_LANGUAGES          357
+#define IDS_AINFO_KILOBYTE_EXT       358
+#define IDS_AINFO_MEGABYTE_EXT       359
+#define IDS_AINFO_GIGABYTE_EXT       360
 
 
 /* Names of categories */
index e132577..c8418dc 100644 (file)
@@ -129,7 +129,7 @@ BOOL ShowInstalledAppInfo(INT Index)
     GET_INFO(L"UninstallString", IDS_INFO_UNINSTALLSTR, CFE_BOLD, 0);
     GET_INFO(L"InstallSource", IDS_INFO_INSTALLSRC, CFE_BOLD, 0);
     GET_INFO(L"ModifyPath", IDS_INFO_MODIFYPATH, CFE_BOLD, 0);
-
+    
     return TRUE;
 }
 
index db0ae0b..cc1dc65 100644 (file)
@@ -354,7 +354,7 @@ VOID CConfigParser::CacheINILocale()
     m_szCachedINISectionLocaleNeutral = m_szCachedINISectionLocale + m_szLocaleID.Right(2);
 }
 
-UINT CConfigParser::GetString(const ATL::CStringW& KeyName, ATL::CStringW& ResultString)
+BOOL CConfigParser::GetString(const ATL::CStringW& KeyName, ATL::CStringW& ResultString)
 {
     DWORD dwResult;
 
@@ -392,10 +392,12 @@ UINT CConfigParser::GetString(const ATL::CStringW& KeyName, ATL::CStringW& Resul
     return (dwResult != 0 ? TRUE : FALSE);
 }
 
-UINT CConfigParser::GetInt(const ATL::CStringW& KeyName)
+BOOL CConfigParser::GetInt(const ATL::CStringW& KeyName, INT& iResult)
 {
     ATL::CStringW Buffer;
 
+    iResult = 0;
+
     // grab the text version of our entry
     if (!GetString(KeyName, Buffer))
         return FALSE;
@@ -404,8 +406,9 @@ UINT CConfigParser::GetInt(const ATL::CStringW& KeyName)
         return FALSE;
 
     // convert it to an actual integer
-    INT result = StrToIntW(Buffer.GetString());
+    iResult = StrToIntW(Buffer.GetString());
 
-    return (UINT) (result <= 0) ? 0 : result;
+    // we only care about values > 0
+    return (iResult > 0);
 }
 // CConfigParser