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