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/ap…
==============================================================================
--- 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/ap…
==============================================================================
--- 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/ap…
==============================================================================
--- 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/ap…
==============================================================================
--- 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/ap…
==============================================================================
--- 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/ap…
==============================================================================
--- 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