- Use COM for calling SHBrowseForFolder.
- Allow choosing a directory for downloading.
- Correct a typo in the name of a function.

svn path=/trunk/; revision=57553
This commit is contained in:
Hermès Bélusca-Maïto 2012-10-13 13:35:55 +00:00
parent 8cd7c7dc7c
commit 2f2319d2f8
4 changed files with 28 additions and 19 deletions

View file

@ -29,7 +29,7 @@ add_pch(rapps rapps.h)
set_module_type(rapps win32gui UNICODE)
target_link_libraries(rapps uuid)
add_importlibs(rapps advapi32 comctl32 gdi32 urlmon user32 shell32 shlwapi msvcrt kernel32 ntdll)
add_importlibs(rapps advapi32 comctl32 gdi32 urlmon user32 shell32 shlwapi ole32 msvcrt kernel32 ntdll)
add_dependencies(rapps rappsmsg)
add_message_headers(ANSI rappsmsg.mc)
add_cd_file(TARGET rapps DESTINATION reactos/system32 FOR all)

View file

@ -115,7 +115,7 @@ extern HINSTANCE hInst;
extern INT SelectedEnumType;
extern SETTINGS_INFO SettingsInfo;
VOID SaveSettings(HWND hwnd);
VOID FillDafaultSettings(PSETTINGS_INFO pSettingsInfo);
VOID FillDefaultSettings(PSETTINGS_INFO pSettingsInfo);
/* listview.c */
extern HWND hListView;

View file

@ -6,6 +6,7 @@
* PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org)
*/
#define _WIN32_DCOM // For CoInitializeEx, etc...
#include "rapps.h"
SETTINGS_INFO NewSettingsInfo;
@ -16,27 +17,35 @@ SETTINGS_INFO NewSettingsInfo;
BOOL
ChooseFolder(HWND hwnd)
{
BROWSEINFO fi;
LPCITEMIDLIST lpItemList;
BOOL bRet = FALSE;
BROWSEINFO bi;
WCHAR szPath[MAX_PATH], szBuf[MAX_STR_LEN];
LoadStringW(hInst, IDS_CHOOSE_FOLDER_TEXT, szBuf, sizeof(szBuf) / sizeof(TCHAR));
ZeroMemory(&fi, sizeof(BROWSEINFO));
fi.hwndOwner = hwnd;
fi.lpszTitle = szBuf;
fi.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_BROWSEFORCOMPUTER | BIF_NEWDIALOGSTYLE;
fi.lpfn = NULL;
fi.lParam = -1;
fi.iImage = 0;
ZeroMemory(&bi, sizeof(bi));
bi.hwndOwner = hwnd;
bi.pidlRoot = NULL;
bi.lpszTitle = szBuf;
bi.ulFlags = BIF_USENEWUI | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE;
if (!(lpItemList = SHBrowseForFolder(&fi))) return FALSE;
SHGetPathFromIDList(lpItemList, szPath);
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
LPITEMIDLIST lpItemList = SHBrowseForFolder(&bi);
if (lpItemList && SHGetPathFromIDList(lpItemList, szPath))
{
if (szPath[0] != 0)
{
SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szPath);
bRet = TRUE;
}
}
if (wcslen(szPath) == 0) return FALSE;
SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szPath);
CoTaskMemFree(lpItemList);
CoUninitialize();
}
return TRUE;
return bRet;
}
static VOID
@ -89,7 +98,7 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
break;
case IDC_DEFAULT_SETTINGS:
FillDafaultSettings(&NewSettingsInfo);
FillDefaultSettings(&NewSettingsInfo);
InitSettingsControls(hDlg, NewSettingsInfo);
break;

View file

@ -16,7 +16,7 @@ SETTINGS_INFO SettingsInfo;
VOID
FillDafaultSettings(PSETTINGS_INFO pSettingsInfo)
FillDefaultSettings(PSETTINGS_INFO pSettingsInfo)
{
pSettingsInfo->bSaveWndPos = TRUE;
pSettingsInfo->bUpdateAtStart = FALSE;
@ -782,7 +782,7 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nSh
if (!LoadSettings())
{
FillDafaultSettings(&SettingsInfo);
FillDefaultSettings(&SettingsInfo);
}
InitLogs();