From 8a401eb299e75b145263c4db952dd88e35c4bd31 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Sun, 28 Apr 2019 16:47:23 +0300 Subject: [PATCH 1/1] [RAPPS] CMainWindow: Move gui part of UninstallApplication in it --- base/applications/rapps/gui.cpp | 31 +++++++++++------ base/applications/rapps/include/installed.h | 3 +- base/applications/rapps/installed.cpp | 38 ++------------------- 3 files changed, 24 insertions(+), 48 deletions(-) diff --git a/base/applications/rapps/gui.cpp b/base/applications/rapps/gui.cpp index b30cf80d14a..be6da8ff8f4 100644 --- a/base/applications/rapps/gui.cpp +++ b/base/applications/rapps/gui.cpp @@ -511,7 +511,6 @@ public: PVOID GetLParam(INT Index) { INT ItemIndex; - LVITEMW Item; if (Index == -1) { @@ -524,14 +523,7 @@ public: ItemIndex = Index; } - ZeroMemory(&Item, sizeof(Item)); - - Item.mask = LVIF_PARAM; - Item.iItem = ItemIndex; - if (!GetItem(&Item)) - return NULL; - - return (PVOID) Item.lParam; + return (PVOID) GetItemData(ItemIndex); } BOOL AddColumn(INT Index, ATL::CStringW& Text, INT Width, INT Format) @@ -1134,6 +1126,23 @@ private: } } + BOOL UninstallSelectedApp(BOOL bModify) + { + WCHAR szAppName[MAX_STR_LEN]; + + if (!IsInstalledEnum(SelectedEnumType)) + return FALSE; + + INT ItemIndex = m_ListView->GetNextItem(-1, LVNI_FOCUSED); + if (ItemIndex == -1) + return FALSE; + + m_ListView->GetItemText(ItemIndex, 0, szAppName, _countof(szAppName)); + WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_REMOVE, szAppName); + + PINSTALLED_INFO ItemInfo = (PINSTALLED_INFO)m_ListView->GetItemData(ItemIndex); + return UninstallApplication(ItemInfo, bModify); + } BOOL ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT& theResult, DWORD dwMapId) { theResult = 0; @@ -1593,12 +1602,12 @@ private: break; case ID_UNINSTALL: - if (UninstallApplication(-1, FALSE)) + if (UninstallSelectedApp(FALSE)) UpdateApplicationsList(-1); break; case ID_MODIFY: - if (UninstallApplication(-1, TRUE)) + if (UninstallSelectedApp(TRUE)) UpdateApplicationsList(-1); break; diff --git a/base/applications/rapps/include/installed.h b/base/applications/rapps/include/installed.h index 876c7423522..76a12418c1c 100644 --- a/base/applications/rapps/include/installed.h +++ b/base/applications/rapps/include/installed.h @@ -18,5 +18,4 @@ typedef BOOL(CALLBACK *APPENUMPROC)(INT ItemIndex, ATL::CStringW &Name, PINSTALL BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc, PVOID param); BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR szString); -BOOL UninstallApplication(INT Index, BOOL bModify); -VOID RemoveAppFromRegistry(INT Index); +BOOL UninstallApplication(PINSTALLED_INFO ItemInfo, BOOL bModify); diff --git a/base/applications/rapps/installed.cpp b/base/applications/rapps/installed.cpp index cb53b88be7f..dda0bbfdcff 100644 --- a/base/applications/rapps/installed.cpp +++ b/base/applications/rapps/installed.cpp @@ -38,48 +38,16 @@ BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR szString) return FALSE; } -BOOL UninstallApplication(INT Index, BOOL bModify) +BOOL UninstallApplication(PINSTALLED_INFO ItemInfo, BOOL bModify) { LPCWSTR szModify = L"ModifyPath"; LPCWSTR szUninstall = L"UninstallString"; - WCHAR szPath[MAX_PATH]; - WCHAR szAppName[MAX_STR_LEN]; DWORD dwType, dwSize; - INT ItemIndex; - LVITEMW Item; - HKEY hKey; - PINSTALLED_INFO ItemInfo; - - if (!IsInstalledEnum(SelectedEnumType)) - return FALSE; - - if (Index == -1) - { - ItemIndex = (INT) SendMessageW(hListView, LVM_GETNEXTITEM, -1, LVNI_FOCUSED); - if (ItemIndex == -1) - return FALSE; - } - else - { - ItemIndex = Index; - } - - ListView_GetItemText(hListView, ItemIndex, 0, szAppName, _countof(szAppName)); - WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_REMOVE, szAppName); - - ZeroMemory(&Item, sizeof(Item)); - - Item.mask = LVIF_PARAM; - Item.iItem = ItemIndex; - if (!ListView_GetItem(hListView, &Item)) - return FALSE; - - ItemInfo = (PINSTALLED_INFO) Item.lParam; - hKey = ItemInfo->hSubKey; + WCHAR szPath[MAX_PATH]; dwType = REG_SZ; dwSize = MAX_PATH * sizeof(WCHAR); - if (RegQueryValueExW(hKey, + if (RegQueryValueExW(ItemInfo->hSubKey, bModify ? szModify : szUninstall, NULL, &dwType, -- 2.17.1