https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e694e247204f85b7590813bb81acb77eb7d357e4
commit e694e247204f85b7590813bb81acb77eb7d357e4 Author: Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> AuthorDate: Wed Jan 10 11:36:30 2024 +0900 Commit: GitHub <nore...@github.com> CommitDate: Wed Jan 10 11:36:30 2024 +0900 [RAPPS] Don't download database at startup if appwiz mode (#6319) Providing quick access of Control Panel "Add/Remove Programs". JIRA issue: CORE-19419 - Don't download the database if bAppwizMode in ParseCmdAndExecute function. - Add CAppDB::GetAvailableCount method. - Add CMainWindow::CheckAvailable method. - Use CMainWindow::CheckAvailable in some cases of TVN_SELCHANGED handling. --- base/applications/rapps/gui.cpp | 49 +++++++++++++++++++++------------ base/applications/rapps/include/appdb.h | 5 ++++ base/applications/rapps/include/gui.h | 5 +++- base/applications/rapps/unattended.cpp | 17 ++++-------- 4 files changed, 46 insertions(+), 30 deletions(-) diff --git a/base/applications/rapps/gui.cpp b/base/applications/rapps/gui.cpp index 3283c71ef79..d0b518967df 100644 --- a/base/applications/rapps/gui.cpp +++ b/base/applications/rapps/gui.cpp @@ -293,6 +293,16 @@ CMainWindow::UninstallSelectedApp(BOOL bModify) return InstalledApp->UninstallApplication(bModify); } +VOID +CMainWindow::CheckAvailable() +{ + if (m_Db->GetAvailableCount() == 0) + { + m_Db->RemoveCached(); + m_Db->UpdateAvailable(); + } +} + BOOL CMainWindow::ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT &theResult, DWORD dwMapId) { @@ -346,71 +356,71 @@ CMainWindow::ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPa break; case IDS_AVAILABLEFORINST: - UpdateApplicationsList(ENUM_ALL_AVAILABLE); + UpdateApplicationsList(ENUM_ALL_AVAILABLE, FALSE, TRUE); break; case IDS_CAT_AUDIO: - UpdateApplicationsList(ENUM_CAT_AUDIO); + UpdateApplicationsList(ENUM_CAT_AUDIO, FALSE, TRUE); break; case IDS_CAT_DEVEL: - UpdateApplicationsList(ENUM_CAT_DEVEL); + UpdateApplicationsList(ENUM_CAT_DEVEL, FALSE, TRUE); break; case IDS_CAT_DRIVERS: - UpdateApplicationsList(ENUM_CAT_DRIVERS); + UpdateApplicationsList(ENUM_CAT_DRIVERS, FALSE, TRUE); break; case IDS_CAT_EDU: - UpdateApplicationsList(ENUM_CAT_EDU); + UpdateApplicationsList(ENUM_CAT_EDU, FALSE, TRUE); break; case IDS_CAT_ENGINEER: - UpdateApplicationsList(ENUM_CAT_ENGINEER); + UpdateApplicationsList(ENUM_CAT_ENGINEER, FALSE, TRUE); break; case IDS_CAT_FINANCE: - UpdateApplicationsList(ENUM_CAT_FINANCE); + UpdateApplicationsList(ENUM_CAT_FINANCE, FALSE, TRUE); break; case IDS_CAT_GAMES: - UpdateApplicationsList(ENUM_CAT_GAMES); + UpdateApplicationsList(ENUM_CAT_GAMES, FALSE, TRUE); break; case IDS_CAT_GRAPHICS: - UpdateApplicationsList(ENUM_CAT_GRAPHICS); + UpdateApplicationsList(ENUM_CAT_GRAPHICS, FALSE, TRUE); break; case IDS_CAT_INTERNET: - UpdateApplicationsList(ENUM_CAT_INTERNET); + UpdateApplicationsList(ENUM_CAT_INTERNET, FALSE, TRUE); break; case IDS_CAT_LIBS: - UpdateApplicationsList(ENUM_CAT_LIBS); + UpdateApplicationsList(ENUM_CAT_LIBS, FALSE, TRUE); break; case IDS_CAT_OFFICE: - UpdateApplicationsList(ENUM_CAT_OFFICE); + UpdateApplicationsList(ENUM_CAT_OFFICE, FALSE, TRUE); break; case IDS_CAT_OTHER: - UpdateApplicationsList(ENUM_CAT_OTHER); + UpdateApplicationsList(ENUM_CAT_OTHER, FALSE, TRUE); break; case IDS_CAT_SCIENCE: - UpdateApplicationsList(ENUM_CAT_SCIENCE); + UpdateApplicationsList(ENUM_CAT_SCIENCE, FALSE, TRUE); break; case IDS_CAT_TOOLS: - UpdateApplicationsList(ENUM_CAT_TOOLS); + UpdateApplicationsList(ENUM_CAT_TOOLS, FALSE, TRUE); break; case IDS_CAT_VIDEO: - UpdateApplicationsList(ENUM_CAT_VIDEO); + UpdateApplicationsList(ENUM_CAT_VIDEO, FALSE, TRUE); break; case IDS_CAT_THEMES: - UpdateApplicationsList(ENUM_CAT_THEMES); + UpdateApplicationsList(ENUM_CAT_THEMES, FALSE, TRUE); break; case IDS_SELECTEDFORINST: @@ -591,10 +601,13 @@ CMainWindow::AddApplicationsToView(CAtlList<CAppInfo *> &List) } VOID -CMainWindow::UpdateApplicationsList(AppsCategories EnumType, BOOL bReload) +CMainWindow::UpdateApplicationsList(AppsCategories EnumType, BOOL bReload, BOOL bCheckAvailable) { bUpdating = TRUE; + if (bCheckAvailable) + CheckAvailable(); + if (SelectedEnumType != EnumType) SelectedEnumType = EnumType; diff --git a/base/applications/rapps/include/appdb.h b/base/applications/rapps/include/appdb.h index 4e9c5386b3b..1f6bf531a35 100644 --- a/base/applications/rapps/include/appdb.h +++ b/base/applications/rapps/include/appdb.h @@ -32,4 +32,9 @@ class CAppDB BOOL RemoveInstalledAppFromRegistry(const CAppInfo *Info); + + size_t GetAvailableCount() const + { + return m_Available.GetCount(); + } }; diff --git a/base/applications/rapps/include/gui.h b/base/applications/rapps/include/gui.h index e81b4eb8227..cf6fc90859a 100644 --- a/base/applications/rapps/include/gui.h +++ b/base/applications/rapps/include/gui.h @@ -90,6 +90,9 @@ class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits> VOID OnSize(HWND hwnd, WPARAM wParam, LPARAM lParam); + VOID + CheckAvailable(); + BOOL RemoveSelectedAppFromRegistry(); BOOL @@ -105,7 +108,7 @@ class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits> UpdateStatusBarText(); VOID - UpdateApplicationsList(AppsCategories EnumType, BOOL bReload = FALSE); + UpdateApplicationsList(AppsCategories EnumType, BOOL bReload = FALSE, BOOL bCheckAvailable = FALSE); VOID AddApplicationsToView(CAtlList<CAppInfo *> &List); diff --git a/base/applications/rapps/unattended.cpp b/base/applications/rapps/unattended.cpp index 1525e4b07b9..ab6aaec676e 100644 --- a/base/applications/rapps/unattended.cpp +++ b/base/applications/rapps/unattended.cpp @@ -222,27 +222,22 @@ ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow) { INT argc; LPWSTR *argv = CommandLineToArgvW(lpCmdLine, &argc); - BOOL bAppwizMode = FALSE; - if (!argv) - { return FALSE; - } CStringW Directory; GetStorageDirectory(Directory); CAppDB db(Directory); - if (argc > 1 && MatchCmdOption(argv[1], CMD_KEY_APPWIZ)) + BOOL bAppwizMode = (argc > 1 && MatchCmdOption(argv[1], CMD_KEY_APPWIZ)); + if (!bAppwizMode) { - bAppwizMode = TRUE; - } + if (SettingsInfo.bUpdateAtStart || bIsFirstLaunch) + db.RemoveCached(); - if (SettingsInfo.bUpdateAtStart || bIsFirstLaunch) - { - db.RemoveCached(); + db.UpdateAvailable(); } - db.UpdateAvailable(); + db.UpdateInstalled(); if (argc == 1 || bAppwizMode) // RAPPS is launched without options or APPWIZ mode is requested