From cf6bf15e6582398994505c8459557e3eb2a5d276 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 18 Jan 2014 13:07:59 +0000 Subject: [PATCH] [RAPPS] - Store settings in HKEY_CURRENT_USER - Correctly show the main window if UpdateAtStart is enabled - Improve error handling svn path=/trunk/; revision=61672 --- reactos/base/applications/rapps/available.c | 42 ++++++++++----------- reactos/base/applications/rapps/misc.c | 4 +- reactos/base/applications/rapps/parser.c | 14 ++++--- reactos/base/applications/rapps/richedit.c | 8 ++-- reactos/base/applications/rapps/winmain.c | 15 ++++---- 5 files changed, 42 insertions(+), 41 deletions(-) diff --git a/reactos/base/applications/rapps/available.c b/reactos/base/applications/rapps/available.c index f650af27269..e4f4193adee 100644 --- a/reactos/base/applications/rapps/available.c +++ b/reactos/base/applications/rapps/available.c @@ -47,6 +47,7 @@ DeleteCurrentAppsDB(VOID) WCHAR szPath[MAX_PATH]; WCHAR szTmp[MAX_PATH]; HRESULT hr; + BOOL result = TRUE; if (!GetStorageDirectory(szPath, sizeof(szPath) / sizeof(szPath[0]))) return FALSE; @@ -57,11 +58,7 @@ DeleteCurrentAppsDB(VOID) if (FAILED(hr)) return FALSE; - if (GetFileAttributesW(szCabPath) != INVALID_FILE_ATTRIBUTES) - { - if (!DeleteFileW(szCabPath)) - return FALSE; - } + result = result && DeleteFileW(szCabPath); hr = StringCbCatW(szPath, sizeof(szPath), L"\\rapps\\"); if (FAILED(hr)) @@ -75,24 +72,21 @@ DeleteCurrentAppsDB(VOID) hFind = FindFirstFileW(szSearchPath, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) - return TRUE; + return result; do { hr = StringCbPrintfW(szTmp, sizeof(szTmp), L"%ls%ls", szPath, FindFileData.cFileName); - if (FAILED(hr) || !DeleteFileW(szTmp)) - { - FindClose(hFind); - return FALSE; - } - } - while (FindNextFileW(hFind, &FindFileData) != 0); + if (FAILED(hr)) + continue; + result = result && DeleteFileW(szTmp); + } while (FindNextFileW(hFind, &FindFileData) != 0); FindClose(hFind); - return TRUE; + return result; } @@ -145,9 +139,7 @@ EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc) HRESULT hr; if (!GetStorageDirectory(szPath, sizeof(szPath) / sizeof(szPath[0]))) - { return FALSE; - } hr = StringCbPrintfW(szCabPath, sizeof(szCabPath), L"%ls\\rappmgr.cab", @@ -168,11 +160,6 @@ EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc) return FALSE; } - GetLocaleInfoW(GetUserDefaultLCID(), LOCALE_ILANGUAGE, szLocale, sizeof(szLocale) / sizeof(WCHAR)); - hr = StringCbCatW(szSectionLocale, sizeof(szSectionLocale), szLocale); - if (FAILED(hr)) - return FALSE; - hr = StringCbCatW(szPath, sizeof(szPath), L"*.txt"); if (FAILED(hr)) return FALSE; @@ -189,6 +176,16 @@ EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc) return FALSE; } + if (!GetLocaleInfoW(GetUserDefaultLCID(), LOCALE_ILANGUAGE, + szLocale, sizeof(szLocale) / sizeof(WCHAR))) + { + return FALSE; + } + + hr = StringCbCatW(szSectionLocale, sizeof(szSectionLocale), szLocale); + if (FAILED(hr)) + return FALSE; + #define GET_STRING1(a, b) \ if (!ParserGetString(szSectionLocale, a, b, MAX_PATH, FindFileData.cFileName)) \ if (!ParserGetString(L"Section", a, b, MAX_PATH, FindFileData.cFileName)) \ @@ -223,8 +220,7 @@ EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc) GET_STRING2(L"CDPath", Info.szCDPath); if (!lpEnumProc(Info)) break; - } - while (FindNextFileW(hFind, &FindFileData) != 0); + } while (FindNextFileW(hFind, &FindFileData) != 0); FindClose(hFind); diff --git a/reactos/base/applications/rapps/misc.c b/reactos/base/applications/rapps/misc.c index 8dbe99ce9a2..aa944a60f80 100644 --- a/reactos/base/applications/rapps/misc.c +++ b/reactos/base/applications/rapps/misc.c @@ -113,7 +113,7 @@ CopyTextToClipboard(LPCWSTR lpszText) { HRESULT hr; - if(OpenClipboard(NULL)) + if (OpenClipboard(NULL)) { HGLOBAL ClipBuffer; WCHAR *Buffer; @@ -122,7 +122,7 @@ CopyTextToClipboard(LPCWSTR lpszText) EmptyClipboard(); cchBuffer = wcslen(lpszText) + 1; ClipBuffer = GlobalAlloc(GMEM_DDESHARE, cchBuffer * sizeof(WCHAR)); - Buffer = (WCHAR*)GlobalLock(ClipBuffer); + Buffer = GlobalLock(ClipBuffer); hr = StringCchCopyW(Buffer, cchBuffer, lpszText); GlobalUnlock(ClipBuffer); diff --git a/reactos/base/applications/rapps/parser.c b/reactos/base/applications/rapps/parser.c index d8795d6a365..0bd162c6fea 100644 --- a/reactos/base/applications/rapps/parser.c +++ b/reactos/base/applications/rapps/parser.c @@ -489,7 +489,7 @@ SECTIONKEY if (!create) return NULL; cch = wcslen(section_name) + 1; *section = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(SECTION, name) + cch * sizeof(WCHAR)); - if(*section == NULL) return NULL; + if (*section == NULL) return NULL; StringCchCopyW((*section)->name, cch, section_name); (*section)->next = NULL; cch = wcslen(key_name) + 1; @@ -562,11 +562,15 @@ ParserOpen(LPCWSTR filename, BOOL write_access) ItemsArray[i]->encoding = ENCODING_UTF8; } - GetStorageDirectory(szDir, sizeof(szDir) / sizeof(szDir[0])); + if (!GetStorageDirectory(szDir, sizeof(szDir) / sizeof(szDir[0]))) + return FALSE; - StringCbPrintfW(buffer, sizeof(buffer), - L"%ls\\rapps\\%ls", - szDir, filename); + if (FAILED(StringCbPrintfW(buffer, sizeof(buffer), + L"%ls\\rapps\\%ls", + szDir, filename))) + { + return FALSE; + } hFile = CreateFileW(buffer, GENERIC_READ | (write_access ? GENERIC_WRITE : 0), FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, diff --git a/reactos/base/applications/rapps/richedit.c b/reactos/base/applications/rapps/richedit.c index fad3ba39321..97aa9c60b0e 100644 --- a/reactos/base/applications/rapps/richedit.c +++ b/reactos/base/applications/rapps/richedit.c @@ -23,10 +23,10 @@ RichEditOnLink(HWND hwnd, ENLINK *Link) { if (pLink) HeapFree(GetProcessHeap(), 0, pLink); - pLink = (PWSTR) HeapAlloc(GetProcessHeap(), - 0, - (max(Link->chrg.cpMin, Link->chrg.cpMax) - - min(Link->chrg.cpMin, Link->chrg.cpMax) + 1) * sizeof(WCHAR)); + pLink = HeapAlloc(GetProcessHeap(), + 0, + (max(Link->chrg.cpMin, Link->chrg.cpMax) - + min(Link->chrg.cpMin, Link->chrg.cpMax) + 1) * sizeof(WCHAR)); if (!pLink) { /* TODO: Error message */ diff --git a/reactos/base/applications/rapps/winmain.c b/reactos/base/applications/rapps/winmain.c index a4e51ca92cc..a21326aab06 100644 --- a/reactos/base/applications/rapps/winmain.c +++ b/reactos/base/applications/rapps/winmain.c @@ -40,7 +40,7 @@ LoadSettings(VOID) HKEY hKey; DWORD dwSize; - if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\ReactOS\\rapps", 0, KEY_READ, &hKey) == ERROR_SUCCESS) + if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\rapps", 0, KEY_READ, &hKey) == ERROR_SUCCESS) { dwSize = sizeof(SETTINGS_INFO); if (RegQueryValueExW(hKey, L"Settings", NULL, NULL, (LPBYTE)&SettingsInfo, &dwSize) == ERROR_SUCCESS) @@ -73,7 +73,7 @@ SaveSettings(HWND hwnd) SettingsInfo.Maximized = (IsZoomed(hwnd) || (wp.flags & WPF_RESTORETOMAXIMIZED)); } - if (RegCreateKeyExW(HKEY_LOCAL_MACHINE, L"Software\\ReactOS\\rapps", 0, NULL, + if (RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\rapps", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS) { RegSetValueExW(hKey, L"Settings", 0, REG_BINARY, (LPBYTE)&SettingsInfo, sizeof(SETTINGS_INFO)); @@ -115,10 +115,10 @@ EnumInstalledAppProc(INT ItemIndex, LPWSTR lpName, INSTALLED_INFO Info) Index = ListViewAddItem(ItemIndex, 0, lpName, (LPARAM)ItemInfo); /* Get version info */ - GetApplicationString((HKEY)ItemInfo->hSubKey, L"DisplayVersion", szText); + GetApplicationString(ItemInfo->hSubKey, L"DisplayVersion", szText); ListView_SetItemText(hListView, Index, 1, szText); /* Get comments */ - GetApplicationString((HKEY)ItemInfo->hSubKey, L"Comments", szText); + GetApplicationString(ItemInfo->hSubKey, L"Comments", szText); ListView_SetItemText(hListView, Index, 2, szText); return TRUE; @@ -538,8 +538,6 @@ MainWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) if (!InitControls(hwnd)) PostMessage(hwnd, WM_CLOSE, 0, 0); - if (SettingsInfo.bUpdateAtStart) - UpdateAppsDB(); break; case WM_COMMAND: @@ -843,9 +841,12 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nSh if (!hMainWnd) goto Exit; /* Show it */ - ShowWindow(hMainWnd, SW_SHOW); + ShowWindow(hMainWnd, nShowCmd); UpdateWindow(hMainWnd); + if (SettingsInfo.bUpdateAtStart) + UpdateAppsDB(); + /* Message Loop */ while (GetMessage(&Msg, NULL, 0, 0)) { -- 2.17.1