Author: ashaposhnikov
Date: Sun Jun  4 21:36:14 2017
New Revision: 74920

URL: http://svn.reactos.org/svn/reactos?rev=74920&view=rev
Log:
[RAPPS]
* Added constants in resource.h for stringtables
* Removed "Installed apps" from the TreeView
* Added intallation status to the RichEdit using existing check
* Changed IsInstalledApplication signature to accept access righta 
  This is needed for the 64 bit systems.

Modified:
    branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp
    branches/GSoC_2017/rapps/reactos/base/applications/rapps/crichedit.h
    branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp
    branches/GSoC_2017/rapps/reactos/base/applications/rapps/installed.cpp
    branches/GSoC_2017/rapps/reactos/base/applications/rapps/rapps.h
    branches/GSoC_2017/rapps/reactos/base/applications/rapps/resource.h

Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp?rev=74920&r1=74919&r2=74920&view=diff
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp      
[iso-8859-1] (original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp      
[iso-8859-1] Sun Jun  4 21:36:14 2017
@@ -17,6 +17,12 @@
         InsertRichEditText(b, d); \
     } \
 
+#define ADD_TEXT_NEWL(a, b) \
+  LoadStringW(hInst, a, szText, _countof(szText)); \
+  InsertRichEditText(L"\n", 0); \
+  InsertRichEditText(szText, b); \
+  InsertRichEditText(L"\n", 0);
+
 #define GET_STRING1(a, b)  \
     if (!ParserGetString(a, b, _countof(b), FindFileData.cFileName)) \
         continue;
@@ -25,6 +31,16 @@
     if (!ParserGetString(a, b, _countof(b), FindFileData.cFileName)) \
         b[0] = '\0';
 
+//App is "installed" if the RegName is in the registry
+#define APP_INSTALL_CHECK_K(Info, key) \
+ (*Info->szRegName && (IsInstalledApplicationEx(Info->szRegName, FALSE, key) \
+                        || IsInstalledApplicationEx(Info->szRegName, TRUE, 
key)))
+
+//Check both registry keys in 64bit system
+//TODO: check system type beforehand to avoid double checks?
+#define APP_INSTALL_CHECK(Info) \
+  (APP_INSTALL_CHECK_K(Info, KEY_WOW64_32KEY) || APP_INSTALL_CHECK_K(Info, 
KEY_WOW64_64KEY))
+
 LIST_ENTRY CachedEntriesHead = { &CachedEntriesHead, &CachedEntriesHead };
 PLIST_ENTRY pCachedEntry = &CachedEntriesHead;
 
@@ -37,8 +53,13 @@
     if (!Info) return FALSE;
 
     NewRichEditText(Info->szName, CFE_BOLD);
-
-    InsertRichEditText(L"\n", 0);
+    if (APP_INSTALL_CHECK(Info))
+    {
+      ADD_TEXT_NEWL(IDS_STATUS_INSTALLED, CFE_ITALIC);
+    } else 
+    {
+      ADD_TEXT_NEWL(IDS_STATUS_NOTINSTALLED, CFE_ITALIC);
+    }
 
     ADD_TEXT(IDS_AINFO_VERSION,     Info->szVersion, CFE_BOLD, 0);
     ADD_TEXT(IDS_AINFO_LICENSE,     Info->szLicense, CFE_BOLD, 0);

Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/crichedit.h
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/applications/rapps/crichedit.h?rev=74920&r1=74919&r2=74920&view=diff
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/crichedit.h        
[iso-8859-1] (original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/crichedit.h        
[iso-8859-1] Sun Jun  4 21:36:14 2017
@@ -90,7 +90,6 @@
         return m_hWnd;
     }
 
-public:
     virtual VOID OnLink(ENLINK *Link)
     {
     }

Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp?rev=74920&r1=74919&r2=74920&view=diff
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp    
[iso-8859-1] (original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp    
[iso-8859-1] Sun Jun  4 21:36:14 2017
@@ -372,33 +372,28 @@
 
     VOID InitCategoriesList(VOID)
     {
-        HTREEITEM hRootItem1, hRootItem2;
-
-        hRootItem1 = AddCategory(TVI_ROOT, IDS_INSTALLED, IDI_CATEGORY);
-        AddCategory(hRootItem1, IDS_APPLICATIONS, IDI_APPS);
-        AddCategory(hRootItem1, IDS_UPDATES, IDI_APPUPD);
-
-        hRootItem2 = AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY);
-        AddCategory(hRootItem2, IDS_CAT_AUDIO, IDI_CAT_AUDIO);
-        AddCategory(hRootItem2, IDS_CAT_VIDEO, IDI_CAT_VIDEO);
-        AddCategory(hRootItem2, IDS_CAT_GRAPHICS, IDI_CAT_GRAPHICS);
-        AddCategory(hRootItem2, IDS_CAT_GAMES, IDI_CAT_GAMES);
-        AddCategory(hRootItem2, IDS_CAT_INTERNET, IDI_CAT_INTERNET);
-        AddCategory(hRootItem2, IDS_CAT_OFFICE, IDI_CAT_OFFICE);
-        AddCategory(hRootItem2, IDS_CAT_DEVEL, IDI_CAT_DEVEL);
-        AddCategory(hRootItem2, IDS_CAT_EDU, IDI_CAT_EDU);
-        AddCategory(hRootItem2, IDS_CAT_ENGINEER, IDI_CAT_ENGINEER);
-        AddCategory(hRootItem2, IDS_CAT_FINANCE, IDI_CAT_FINANCE);
-        AddCategory(hRootItem2, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE);
-        AddCategory(hRootItem2, IDS_CAT_TOOLS, IDI_CAT_TOOLS);
-        AddCategory(hRootItem2, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS);
-        AddCategory(hRootItem2, IDS_CAT_LIBS, IDI_CAT_LIBS);
-        AddCategory(hRootItem2, IDS_CAT_OTHER, IDI_CAT_OTHER);
+        HTREEITEM hRootItem;
+
+        hRootItem = AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY);
+        AddCategory(hRootItem, IDS_CAT_AUDIO, IDI_CAT_AUDIO);
+        AddCategory(hRootItem, IDS_CAT_VIDEO, IDI_CAT_VIDEO);
+        AddCategory(hRootItem, IDS_CAT_GRAPHICS, IDI_CAT_GRAPHICS);
+        AddCategory(hRootItem, IDS_CAT_GAMES, IDI_CAT_GAMES);
+        AddCategory(hRootItem, IDS_CAT_INTERNET, IDI_CAT_INTERNET);
+        AddCategory(hRootItem, IDS_CAT_OFFICE, IDI_CAT_OFFICE);
+        AddCategory(hRootItem, IDS_CAT_DEVEL, IDI_CAT_DEVEL);
+        AddCategory(hRootItem, IDS_CAT_EDU, IDI_CAT_EDU);
+        AddCategory(hRootItem, IDS_CAT_ENGINEER, IDI_CAT_ENGINEER);
+        AddCategory(hRootItem, IDS_CAT_FINANCE, IDI_CAT_FINANCE);
+        AddCategory(hRootItem, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE);
+        AddCategory(hRootItem, IDS_CAT_TOOLS, IDI_CAT_TOOLS);
+        AddCategory(hRootItem, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS);
+        AddCategory(hRootItem, IDS_CAT_LIBS, IDI_CAT_LIBS);
+        AddCategory(hRootItem, IDS_CAT_OTHER, IDI_CAT_OTHER);
 
         m_TreeView->SetImageList(hImageTreeView, TVSIL_NORMAL);
-        m_TreeView->Expand(hRootItem2, TVE_EXPAND);
-        m_TreeView->Expand(hRootItem1, TVE_EXPAND);
-        m_TreeView->SelectItem(hRootItem1);
+        m_TreeView->Expand(hRootItem, TVE_EXPAND);
+        m_TreeView->SelectItem(hRootItem);
     }
 
     BOOL CreateStatusBar()
@@ -1138,17 +1133,10 @@
             return TRUE;
         }
 
-        /* Only add a ListView entry if...
-        - no RegName was supplied (so we cannot determine whether the 
application is installed or not) or
-        -  a RegName was supplied and the application is not installed
-        */
-        if (!*Info->szRegName || (!IsInstalledApplication(Info->szRegName, 
FALSE) && !IsInstalledApplication(Info->szRegName, TRUE)))
-        {
-            Index = ListViewAddItem(Info->Category, 0, Info->szName, (LPARAM) 
Info);
-
-            ListView_SetItemText(hListView, Index, 1, Info->szVersion);
-            ListView_SetItemText(hListView, Index, 2, Info->szDesc);
-        }
+        Index = ListViewAddItem(Info->Category, 0, Info->szName, (LPARAM) 
Info);
+
+        ListView_SetItemText(hListView, Index, 1, Info->szVersion);
+        ListView_SetItemText(hListView, Index, 2, Info->szDesc);
 
         return TRUE;
     }
@@ -1183,14 +1171,15 @@
 
         ImageList_AddIcon(hImageListView, hIcon);
         DestroyIcon(hIcon);
-
+        /*
         if (IS_INSTALLED_ENUM(EnumType))
         {
-            /* Enum installed applications and updates */
+            / Enum installed applications and updates 
             EnumInstalledApplications(EnumType, TRUE, s_EnumInstalledAppProc);
             EnumInstalledApplications(EnumType, FALSE, s_EnumInstalledAppProc);
         }
-        else if (IS_AVAILABLE_ENUM(EnumType))
+
+        else */if (IS_AVAILABLE_ENUM(EnumType))
         {
             /* Enum available applications */
             EnumAvailableApplications(EnumType, s_EnumAvailableAppProc);

Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/installed.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/applications/rapps/installed.cpp?rev=74920&r1=74919&r2=74920&view=diff
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/installed.cpp      
[iso-8859-1] (original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/installed.cpp      
[iso-8859-1] Sun Jun  4 21:36:14 2017
@@ -28,9 +28,8 @@
     return FALSE;
 }
 
-
-BOOL
-IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey)
+BOOL
+IsInstalledApplicationEx(LPWSTR lpRegName, BOOL IsUserKey, REGSAM keyWow)
 {
     DWORD dwSize = MAX_PATH, dwType;
     WCHAR szName[MAX_PATH];
@@ -38,8 +37,8 @@
     HKEY hKey, hSubKey;
     INT ItemIndex = 0;
 
-    if (RegOpenKeyW(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
-                    L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall",
+    if (RegOpenKeyExW(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
+                    
L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, keyWow | 
KEY_ENUMERATE_SUB_KEYS,
                     &hKey) != ERROR_SUCCESS)
     {
         return FALSE;
@@ -47,8 +46,9 @@
 
     while (RegEnumKeyExW(hKey, ItemIndex, szName, &dwSize, NULL, NULL, NULL, 
NULL) == ERROR_SUCCESS)
     {
-        if (RegOpenKeyW(hKey, szName, &hSubKey) == ERROR_SUCCESS)
+        if (RegOpenKeyExW(hKey, szName, 0, keyWow | KEY_READ, &hSubKey) == 
ERROR_SUCCESS)
         {
+
             dwType = REG_SZ;
             dwSize = sizeof(szDisplayName);
             if (RegQueryValueExW(hSubKey,
@@ -63,15 +63,13 @@
                     RegCloseKey(hSubKey);
                     RegCloseKey(hKey);
                     return TRUE;
-                }
+                } 
             }
         }
-
         RegCloseKey(hSubKey);
         dwSize = MAX_PATH;
         ItemIndex++;
     }
-
     RegCloseKey(hKey);
     return FALSE;
 }

Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/rapps.h
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/applications/rapps/rapps.h?rev=74920&r1=74919&r2=74920&view=diff
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/rapps.h    
[iso-8859-1] (original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/rapps.h    
[iso-8859-1] Sun Jun  4 21:36:14 2017
@@ -142,7 +142,7 @@
 BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR lpString);
 BOOL ShowInstalledAppInfo(INT Index);
 BOOL UninstallApplication(INT Index, BOOL bModify);
-BOOL IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey);
+BOOL IsInstalledApplicationEx(LPWSTR lpRegName, BOOL IsUserKey, REGSAM keyWow);
 VOID RemoveAppFromRegistry(INT Index);
 
 /* winmain.c */

Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/resource.h
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/applications/rapps/resource.h?rev=74920&r1=74919&r2=74920&view=diff
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/resource.h 
[iso-8859-1] (original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/resource.h 
[iso-8859-1] Sun Jun  4 21:36:14 2017
@@ -111,7 +111,7 @@
 #define IDS_TOOLTIP_SETTINGS     203
 #define IDS_TOOLTIP_REFRESH      204
 #define IDS_TOOLTIP_EXIT         205
-#define IDS_TOOLTIP_UPDATE_DB            206
+#define IDS_TOOLTIP_UPDATE_DB    206
 
 /* Columns info */
 #define IDS_APP_NAME             250
@@ -162,6 +162,15 @@
 #define IDS_CAT_TOOLS            713
 #define IDS_CAT_VIDEO            714
 
+/* App installation status */
+#define IDS_STATUS_INSTALLED          800     
+#define IDS_STATUS_NOTINSTALLED       801
+#define IDS_STATUS_DOWNLOADED         802
+#define IDS_STATUS_UPDATE_AVAILABLE   803
+#define IDS_STATUS_DOWNLOADING        804
+#define IDS_STATUS_INSTALLING         805
+
+
 /* Accelerators */
 #define HOTKEYS                  715
 


Reply via email to