mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[RAPPS] Settings Dialog changes
- replaced `static` with unnamed namespace (static in this context was deprecated in C++03) - fixed `Choose Folder` dialog text not loading the first time (trivial) svn path=/branches/GSoC_2017/rapps/; revision=75810
This commit is contained in:
parent
94e82f5f37
commit
840044411f
1 changed files with 151 additions and 144 deletions
|
@ -12,39 +12,38 @@
|
||||||
|
|
||||||
SETTINGS_INFO NewSettingsInfo;
|
SETTINGS_INFO NewSettingsInfo;
|
||||||
|
|
||||||
#define IS_CHECKED(a, b) \
|
BOOL ChooseFolder(HWND hwnd)
|
||||||
a = (SendDlgItemMessageW(hDlg, b, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE
|
|
||||||
|
|
||||||
BOOL
|
|
||||||
ChooseFolder(HWND hwnd)
|
|
||||||
{
|
{
|
||||||
BOOL bRet = FALSE;
|
BOOL bRet = FALSE;
|
||||||
BROWSEINFOW bi;
|
BROWSEINFOW bi;
|
||||||
ATL::CStringW szBuf;
|
ATL::CStringW szChooseFolderText;
|
||||||
|
|
||||||
szBuf.LoadStringW(IDS_CHOOSE_FOLDER_TEXT);
|
szChooseFolderText.LoadStringW(IDS_CHOOSE_FOLDER_TEXT);
|
||||||
|
|
||||||
ZeroMemory(&bi, sizeof(bi));
|
ZeroMemory(&bi, sizeof(bi));
|
||||||
bi.hwndOwner = hwnd;
|
bi.hwndOwner = hwnd;
|
||||||
bi.pidlRoot = NULL;
|
bi.pidlRoot = NULL;
|
||||||
bi.lpszTitle = szBuf.GetString();
|
bi.lpszTitle = szChooseFolderText.GetString();
|
||||||
bi.ulFlags = BIF_USENEWUI | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE;
|
bi.ulFlags = BIF_USENEWUI | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE;
|
||||||
|
|
||||||
szBuf.Empty();
|
|
||||||
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
|
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
|
||||||
{
|
{
|
||||||
|
ATL::CStringW szBuf;
|
||||||
|
|
||||||
LPITEMIDLIST lpItemList = SHBrowseForFolderW(&bi);
|
LPITEMIDLIST lpItemList = SHBrowseForFolderW(&bi);
|
||||||
if (lpItemList && SHGetPathFromIDListW(lpItemList, szBuf.GetBuffer(MAX_PATH)))
|
if (lpItemList && SHGetPathFromIDListW(lpItemList, szBuf.GetBuffer(MAX_PATH)))
|
||||||
{
|
{
|
||||||
szBuf.ReleaseBuffer();
|
szBuf.ReleaseBuffer();
|
||||||
if (!szBuf.IsEmpty())
|
if (!szBuf.IsEmpty())
|
||||||
{
|
{
|
||||||
SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szBuf);
|
SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szBuf.GetString());
|
||||||
bRet = TRUE;
|
bRet = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
szBuf.ReleaseBuffer();
|
szBuf.ReleaseBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
CoTaskMemFree(lpItemList);
|
CoTaskMemFree(lpItemList);
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
|
@ -53,156 +52,164 @@ ChooseFolder(HWND hwnd)
|
||||||
return bRet;
|
return bRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID InitSettingsControls(HWND hDlg, PSETTINGS_INFO Info)
|
namespace
|
||||||
{
|
{
|
||||||
SendDlgItemMessageW(hDlg, IDC_SAVE_WINDOW_POS, BM_SETCHECK, Info->bSaveWndPos, 0);
|
inline BOOL IsCheckedDlgItem(HWND hDlg, INT nIDDlgItem)
|
||||||
SendDlgItemMessageW(hDlg, IDC_UPDATE_AVLIST, BM_SETCHECK, Info->bUpdateAtStart, 0);
|
|
||||||
SendDlgItemMessageW(hDlg, IDC_LOG_ENABLED, BM_SETCHECK, Info->bLogEnabled, 0);
|
|
||||||
SendDlgItemMessageW(hDlg, IDC_DEL_AFTER_INSTALL, BM_SETCHECK, Info->bDelInstaller, 0);
|
|
||||||
|
|
||||||
SetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
|
|
||||||
Info->szDownloadDir);
|
|
||||||
|
|
||||||
CheckRadioButton(hDlg, IDC_PROXY_DEFAULT, IDC_USE_PROXY, IDC_PROXY_DEFAULT + Info->Proxy);
|
|
||||||
|
|
||||||
if (IDC_PROXY_DEFAULT + Info->Proxy == IDC_USE_PROXY)
|
|
||||||
{
|
{
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
|
return (SendDlgItemMessageW(hDlg, nIDDlgItem, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE;
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER), Info->szProxyServer);
|
VOID InitSettingsControls(HWND hDlg, PSETTINGS_INFO Info)
|
||||||
SetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), Info->szNoProxyFor);
|
{
|
||||||
}
|
SendDlgItemMessageW(hDlg, IDC_SAVE_WINDOW_POS, BM_SETCHECK, Info->bSaveWndPos, 0);
|
||||||
|
SendDlgItemMessageW(hDlg, IDC_UPDATE_AVLIST, BM_SETCHECK, Info->bUpdateAtStart, 0);
|
||||||
|
SendDlgItemMessageW(hDlg, IDC_LOG_ENABLED, BM_SETCHECK, Info->bLogEnabled, 0);
|
||||||
|
SendDlgItemMessageW(hDlg, IDC_DEL_AFTER_INSTALL, BM_SETCHECK, Info->bDelInstaller, 0);
|
||||||
|
|
||||||
static INT_PTR CALLBACK SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
SetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
|
||||||
{
|
Info->szDownloadDir);
|
||||||
switch (Msg)
|
|
||||||
{
|
|
||||||
case WM_INITDIALOG:
|
|
||||||
{
|
|
||||||
NewSettingsInfo = SettingsInfo;
|
|
||||||
InitSettingsControls(hDlg, &SettingsInfo);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_COMMAND:
|
CheckRadioButton(hDlg, IDC_PROXY_DEFAULT, IDC_USE_PROXY, IDC_PROXY_DEFAULT + Info->Proxy);
|
||||||
{
|
|
||||||
switch (LOWORD(wParam))
|
if (IDC_PROXY_DEFAULT + Info->Proxy == IDC_USE_PROXY)
|
||||||
{
|
{
|
||||||
case IDC_CHOOSE:
|
|
||||||
ChooseFolder(hDlg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_SAVE_WINDOW_POS:
|
|
||||||
IS_CHECKED(NewSettingsInfo.bSaveWndPos, IDC_SAVE_WINDOW_POS);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_UPDATE_AVLIST:
|
|
||||||
IS_CHECKED(NewSettingsInfo.bUpdateAtStart, IDC_UPDATE_AVLIST);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_LOG_ENABLED:
|
|
||||||
IS_CHECKED(NewSettingsInfo.bLogEnabled, IDC_LOG_ENABLED);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_DEL_AFTER_INSTALL:
|
|
||||||
IS_CHECKED(NewSettingsInfo.bDelInstaller, IDC_DEL_AFTER_INSTALL);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_PROXY_DEFAULT:
|
|
||||||
NewSettingsInfo.Proxy = 0;
|
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
|
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_NO_PROXY:
|
|
||||||
NewSettingsInfo.Proxy = 1;
|
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
|
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_USE_PROXY:
|
|
||||||
NewSettingsInfo.Proxy = 2;
|
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
|
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
|
||||||
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
|
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
|
||||||
break;
|
}
|
||||||
|
|
||||||
case IDC_DEFAULT_SETTINGS:
|
SetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER), Info->szProxyServer);
|
||||||
FillDefaultSettings(&NewSettingsInfo);
|
SetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), Info->szNoProxyFor);
|
||||||
InitSettingsControls(hDlg, &NewSettingsInfo);
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case IDOK:
|
INT_PTR CALLBACK SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
switch (Msg)
|
||||||
{
|
{
|
||||||
ATL::CStringW szDir;
|
case WM_INITDIALOG:
|
||||||
ATL::CStringW szProxy;
|
{
|
||||||
ATL::CStringW szNoProxy;
|
NewSettingsInfo = SettingsInfo;
|
||||||
DWORD dwAttr;
|
InitSettingsControls(hDlg, &SettingsInfo);
|
||||||
|
|
||||||
GetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
|
|
||||||
szDir.GetBuffer(MAX_PATH), MAX_PATH);
|
|
||||||
szDir.ReleaseBuffer();
|
|
||||||
|
|
||||||
GetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER),
|
|
||||||
szProxy.GetBuffer(MAX_PATH), MAX_PATH);
|
|
||||||
szProxy.ReleaseBuffer();
|
|
||||||
ATL::CStringW::CopyChars(NewSettingsInfo.szProxyServer,
|
|
||||||
_countof(NewSettingsInfo.szProxyServer),
|
|
||||||
szProxy.GetString(),
|
|
||||||
szProxy.GetLength() + 1);
|
|
||||||
|
|
||||||
GetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR),
|
|
||||||
szNoProxy.GetBuffer(MAX_PATH), MAX_PATH);
|
|
||||||
szNoProxy.ReleaseBuffer();
|
|
||||||
ATL::CStringW::CopyChars(NewSettingsInfo.szNoProxyFor,
|
|
||||||
_countof(NewSettingsInfo.szNoProxyFor),
|
|
||||||
szNoProxy.GetString(),
|
|
||||||
szNoProxy.GetLength() + 1);
|
|
||||||
|
|
||||||
dwAttr = GetFileAttributesW(szDir.GetString());
|
|
||||||
if (dwAttr != INVALID_FILE_ATTRIBUTES &&
|
|
||||||
(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
|
|
||||||
{
|
|
||||||
ATL::CStringW::CopyChars(NewSettingsInfo.szDownloadDir,
|
|
||||||
_countof(NewSettingsInfo.szDownloadDir),
|
|
||||||
szDir.GetString(),
|
|
||||||
szDir.GetLength() + 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ATL::CStringW szMsgText;
|
|
||||||
szMsgText.LoadStringW(IDS_CHOOSE_FOLDER_ERROR);
|
|
||||||
|
|
||||||
if (MessageBoxW(hDlg, szMsgText.GetString(), NULL, MB_YESNO) == IDYES)
|
|
||||||
{
|
|
||||||
if (CreateDirectoryW(szDir.GetString(), NULL))
|
|
||||||
{
|
|
||||||
EndDialog(hDlg, LOWORD(wParam));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetFocus(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsInfo = NewSettingsInfo;
|
|
||||||
SaveSettings(GetParent(hDlg));
|
|
||||||
EndDialog(hDlg, LOWORD(wParam));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDCANCEL:
|
case WM_COMMAND:
|
||||||
EndDialog(hDlg, LOWORD(wParam));
|
{
|
||||||
break;
|
switch (LOWORD(wParam))
|
||||||
}
|
{
|
||||||
}
|
case IDC_CHOOSE:
|
||||||
break;
|
ChooseFolder(hDlg);
|
||||||
}
|
break;
|
||||||
|
|
||||||
return FALSE;
|
case IDC_SAVE_WINDOW_POS:
|
||||||
|
NewSettingsInfo.bSaveWndPos = IsCheckedDlgItem(hDlg, IDC_SAVE_WINDOW_POS);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_UPDATE_AVLIST:
|
||||||
|
NewSettingsInfo.bUpdateAtStart = IsCheckedDlgItem(hDlg, IDC_UPDATE_AVLIST);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_LOG_ENABLED:
|
||||||
|
NewSettingsInfo.bLogEnabled = IsCheckedDlgItem(hDlg, IDC_LOG_ENABLED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_DEL_AFTER_INSTALL:
|
||||||
|
NewSettingsInfo.bDelInstaller = IsCheckedDlgItem(hDlg, IDC_DEL_AFTER_INSTALL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_PROXY_DEFAULT:
|
||||||
|
NewSettingsInfo.Proxy = 0;
|
||||||
|
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_NO_PROXY:
|
||||||
|
NewSettingsInfo.Proxy = 1;
|
||||||
|
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_USE_PROXY:
|
||||||
|
NewSettingsInfo.Proxy = 2;
|
||||||
|
EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
|
||||||
|
EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_DEFAULT_SETTINGS:
|
||||||
|
FillDefaultSettings(&NewSettingsInfo);
|
||||||
|
InitSettingsControls(hDlg, &NewSettingsInfo);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDOK:
|
||||||
|
{
|
||||||
|
ATL::CStringW szDir;
|
||||||
|
ATL::CStringW szProxy;
|
||||||
|
ATL::CStringW szNoProxy;
|
||||||
|
DWORD dwAttr;
|
||||||
|
|
||||||
|
GetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
|
||||||
|
szDir.GetBuffer(MAX_PATH), MAX_PATH);
|
||||||
|
szDir.ReleaseBuffer();
|
||||||
|
|
||||||
|
GetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER),
|
||||||
|
szProxy.GetBuffer(MAX_PATH), MAX_PATH);
|
||||||
|
szProxy.ReleaseBuffer();
|
||||||
|
ATL::CStringW::CopyChars(NewSettingsInfo.szProxyServer,
|
||||||
|
_countof(NewSettingsInfo.szProxyServer),
|
||||||
|
szProxy.GetString(),
|
||||||
|
szProxy.GetLength() + 1);
|
||||||
|
|
||||||
|
GetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR),
|
||||||
|
szNoProxy.GetBuffer(MAX_PATH), MAX_PATH);
|
||||||
|
szNoProxy.ReleaseBuffer();
|
||||||
|
ATL::CStringW::CopyChars(NewSettingsInfo.szNoProxyFor,
|
||||||
|
_countof(NewSettingsInfo.szNoProxyFor),
|
||||||
|
szNoProxy.GetString(),
|
||||||
|
szNoProxy.GetLength() + 1);
|
||||||
|
|
||||||
|
dwAttr = GetFileAttributesW(szDir.GetString());
|
||||||
|
if (dwAttr != INVALID_FILE_ATTRIBUTES &&
|
||||||
|
(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
|
||||||
|
{
|
||||||
|
ATL::CStringW::CopyChars(NewSettingsInfo.szDownloadDir,
|
||||||
|
_countof(NewSettingsInfo.szDownloadDir),
|
||||||
|
szDir.GetString(),
|
||||||
|
szDir.GetLength() + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ATL::CStringW szMsgText;
|
||||||
|
szMsgText.LoadStringW(IDS_CHOOSE_FOLDER_ERROR);
|
||||||
|
|
||||||
|
if (MessageBoxW(hDlg, szMsgText.GetString(), NULL, MB_YESNO) == IDYES)
|
||||||
|
{
|
||||||
|
if (CreateDirectoryW(szDir.GetString(), NULL))
|
||||||
|
{
|
||||||
|
EndDialog(hDlg, LOWORD(wParam));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetFocus(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsInfo = NewSettingsInfo;
|
||||||
|
SaveSettings(GetParent(hDlg));
|
||||||
|
EndDialog(hDlg, LOWORD(wParam));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDCANCEL:
|
||||||
|
EndDialog(hDlg, LOWORD(wParam));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID CreateSettingsDlg(HWND hwnd)
|
VOID CreateSettingsDlg(HWND hwnd)
|
||||||
|
|
Loading…
Reference in a new issue