Author: ashaposhnikov
Date: Thu Aug 24 22:04:44 2017
New Revision: 75662
URL:
http://svn.reactos.org/svn/reactos?rev=75662&view=rev
Log:
[RAPPS]
Changes in the update process:
- Made UpdateAppsDB() functions static and added ForceUpdateAppsDB()
- EnumAvailableApplications() doesn't update DB on it's own
- Force updating now done only if bUpdateAtStart set or if no settings loaded (first run)
- Minor cleanup
Modified:
branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp
branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp
branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h
branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp
branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp
branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp
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]
Thu Aug 24 22:04:44 2017
@@ -201,15 +201,28 @@
// CAvailableApplicationInfo
// CAvailableApps
-CAvailableApps::CAvailableApps()
-{
- //set all paths
- if (GetStorageDirectory(m_szPath))
+ATL::CStringW CAvailableApps::m_szPath;
+ATL::CStringW CAvailableApps::m_szCabPath;
+ATL::CStringW CAvailableApps::m_szAppsPath;
+ATL::CStringW CAvailableApps::m_szSearchPath;
+
+BOOL CAvailableApps::InitializeStaticStrings()
+{
+ //FIXME: maybe provide a fallback?
+ if (m_szPath.IsEmpty() && GetStorageDirectory(m_szPath))
{
m_szAppsPath = m_szPath + L"\\rapps\\";
m_szCabPath = m_szPath + L"\\rappmgr.cab";
m_szSearchPath = m_szAppsPath + L"*.txt";
- }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+CAvailableApps::CAvailableApps()
+{
+ //set all paths
+ InitializeStaticStrings();
}
VOID CAvailableApps::FreeCachedEntries()
@@ -235,7 +248,6 @@
if (m_szPath.IsEmpty())
return;
- DeleteFileW(m_szCabPath.GetString());
hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData);
if (hFind != INVALID_HANDLE_VALUE)
@@ -248,50 +260,62 @@
} while (FindNextFileW(hFind, &FindFileData) != 0);
FindClose(hFind);
}
+
+ RemoveDirectoryW(m_szAppsPath);
+ RemoveDirectoryW(m_szPath);
}
BOOL CAvailableApps::UpdateAppsDB()
-{
- DeleteCurrentAppsDB();
-
- CDownloadManager::DownloadApplicationsDB(APPLICATION_DATABASE_URL);
-
- if (m_szPath.IsEmpty())
- return FALSE;
-
- if (!ExtractFilesFromCab(m_szCabPath, m_szAppsPath))
- {
- return FALSE;
- }
-
- return TRUE;
-}
-
-BOOL CAvailableApps::EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc)
{
HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATAW FindFileData;
- if (!CreateDirectoryW(m_szPath.GetString(), NULL) &&
- GetLastError() != ERROR_ALREADY_EXISTS)
- {
- return FALSE;
- }
-
+ if (m_szPath.IsEmpty() && !InitializeStaticStrings())
+ {
+ return FALSE;
+ }
+
+ if (!CreateDirectoryW(m_szPath.GetString(), NULL) && GetLastError() !=
ERROR_ALREADY_EXISTS)
+ {
+ return FALSE;
+ }
+
+ //if there are some files in the db folder - we're good
hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData);
+ if (hFind != INVALID_HANDLE_VALUE)
+ {
+ return TRUE;
+ }
+
+ CDownloadManager::DownloadApplicationsDB(APPLICATION_DATABASE_URL);
+
+ if (!ExtractFilesFromCab(m_szCabPath, m_szAppsPath))
+ {
+ return FALSE;
+ }
+
+ DeleteFileW(m_szCabPath.GetString());
+
+ return TRUE;
+}
+
+BOOL CAvailableApps::ForceUpdateAppsDB()
+{
+ DeleteCurrentAppsDB();
+ return UpdateAppsDB();
+}
+
+BOOL CAvailableApps::EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc)
+{
+ HANDLE hFind = INVALID_HANDLE_VALUE;
+ WIN32_FIND_DATAW FindFileData;
+
+ hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
- if(!UpdateAppsDB()) {
- return FALSE;
- }
-
- hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData);
-
- if (hFind == INVALID_HANDLE_VALUE)
- {
- return FALSE;
- }
+ //no db yet
+ return FALSE;
}
do
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] Thu Aug
24 22:04:44 2017
@@ -1321,7 +1321,7 @@
break;
case ID_RESETDB:
- m_AvailableApps.UpdateAppsDB();
+ CAvailableApps::ForceUpdateAppsDB();
UpdateApplicationsList(-1);
break;
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/ap…
==============================================================================
---
branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h [iso-8859-1]
(original)
+++
branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h [iso-8859-1]
Thu Aug 24 22:04:44 2017
@@ -107,16 +107,21 @@
class CAvailableApps
{
ATL::CAtlList<CAvailableApplicationInfo*> m_InfoList;
- ATL::CStringW m_szPath;
- ATL::CStringW m_szCabPath;
- ATL::CStringW m_szAppsPath;
- ATL::CStringW m_szSearchPath;
+ static ATL::CStringW m_szPath;
+ static ATL::CStringW m_szCabPath;
+ static ATL::CStringW m_szAppsPath;
+ static ATL::CStringW m_szSearchPath;
+
+ static BOOL InitializeStaticStrings();
public:
CAvailableApps();
+
+ static BOOL UpdateAppsDB();
+ static BOOL ForceUpdateAppsDB();
+
VOID FreeCachedEntries();
- VOID DeleteCurrentAppsDB();
- BOOL UpdateAppsDB();
+ static VOID DeleteCurrentAppsDB();
BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc);
const PAPPLICATION_INFO FindInfo(const ATL::CStringW& szAppName);
ATL::CSimpleArray<PAPPLICATION_INFO> FindInfoList(const
ATL::CSimpleArray<ATL::CStringW> &arrAppsNames);
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/ap…
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp [iso-8859-1]
(original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp [iso-8859-1] Thu
Aug 24 22:04:44 2017
@@ -565,7 +565,6 @@
continue;
}
-
// build the path for the download
p = wcsrchr(pCurrentInfo->szUrlDownload.GetString(), L'/');
q = wcsrchr(pCurrentInfo->szUrlDownload.GetString(), L'?');
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/ap…
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp [iso-8859-1]
(original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp [iso-8859-1]
Thu Aug 24 22:04:44 2017
@@ -56,6 +56,7 @@
}
CAvailableApps apps;
+ CAvailableApps::UpdateAppsDB();
apps.EnumAvailableApplications(ENUM_ALL_AVAILABLE, NULL);
ATL::CSimpleArray<PAPPLICATION_INFO> arrAppInfo = apps.FindInfoList(arrNames);
if (arrAppInfo.GetSize() > 0)
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/ap…
==============================================================================
--- branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp [iso-8859-1]
(original)
+++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp [iso-8859-1] Thu
Aug 24 22:04:44 2017
@@ -128,6 +128,7 @@
HANDLE hMutex;
HACCEL KeyBrd;
MSG Msg;
+ BOOL bFirstLaunch;
InitializeAtlModule(hInstance, TRUE);
@@ -149,8 +150,8 @@
SetForegroundWindow(hWindow);
return 1;
}
-
- if (!LoadSettings())
+ bFirstLaunch = LoadSettings();
+ if (bFirstLaunch)
{
FillDefaultSettings(&SettingsInfo);
}
@@ -158,19 +159,19 @@
InitLogs();
InitCommonControls();
- //skip window creation if there were some keys
+ // skip window creation if there were some keys
if (!CmdParser(lpCmdLine))
{
+ if (SettingsInfo.bUpdateAtStart || bFirstLaunch)
+ CAvailableApps::ForceUpdateAppsDB();
+
hMainWnd = CreateMainWindow();
+
if (hMainWnd)
{
/* Maximize it if we must */
- ShowWindow(hMainWnd, (SettingsInfo.bSaveWndPos &&
SettingsInfo.Maximized ? SW_MAXIMIZE : nShowCmd));
+ ShowWindow(hMainWnd, ((SettingsInfo.bSaveWndPos &&
SettingsInfo.Maximized) ? SW_MAXIMIZE : nShowCmd));
UpdateWindow(hMainWnd);
-
- //TODO: get around the ugliness
- if (SettingsInfo.bUpdateAtStart)
- GetAvailableApps()->UpdateAppsDB();
/* Load the menu hotkeys */
KeyBrd = LoadAcceleratorsW(NULL, MAKEINTRESOURCEW(HOTKEYS));