2 * PROJECT: ReactOS Applications Manager
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/applications/rapps/settingsdlg.cpp
5 * PURPOSE: Settings Dialog
6 * PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org)
7 * Alexander Shaposhnikov (chaez.san@gmail.com)
13 SETTINGS_INFO NewSettingsInfo
;
15 #define IS_CHECKED(a, b) \
16 a = (SendDlgItemMessageW(hDlg, b, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE
19 ChooseFolder(HWND hwnd
)
25 szBuf
.LoadStringW(IDS_CHOOSE_FOLDER_TEXT
);
27 ZeroMemory(&bi
, sizeof(bi
));
30 bi
.lpszTitle
= szBuf
.GetString();
31 bi
.ulFlags
= BIF_USENEWUI
| BIF_DONTGOBELOWDOMAIN
| BIF_RETURNONLYFSDIRS
| /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE
;
34 if (SUCCEEDED(CoInitializeEx(NULL
, COINIT_APARTMENTTHREADED
)))
36 LPITEMIDLIST lpItemList
= SHBrowseForFolderW(&bi
);
37 if (lpItemList
&& SHGetPathFromIDListW(lpItemList
, szBuf
.GetBuffer(MAX_PATH
)))
39 szBuf
.ReleaseBuffer();
42 SetDlgItemTextW(hwnd
, IDC_DOWNLOAD_DIR_EDIT
, szBuf
);
47 szBuf
.ReleaseBuffer();
49 CoTaskMemFree(lpItemList
);
56 static VOID
InitSettingsControls(HWND hDlg
, PSETTINGS_INFO Info
)
58 SendDlgItemMessageW(hDlg
, IDC_SAVE_WINDOW_POS
, BM_SETCHECK
, Info
->bSaveWndPos
, 0);
59 SendDlgItemMessageW(hDlg
, IDC_UPDATE_AVLIST
, BM_SETCHECK
, Info
->bUpdateAtStart
, 0);
60 SendDlgItemMessageW(hDlg
, IDC_LOG_ENABLED
, BM_SETCHECK
, Info
->bLogEnabled
, 0);
61 SendDlgItemMessageW(hDlg
, IDC_DEL_AFTER_INSTALL
, BM_SETCHECK
, Info
->bDelInstaller
, 0);
63 SetWindowTextW(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
),
66 CheckRadioButton(hDlg
, IDC_PROXY_DEFAULT
, IDC_USE_PROXY
, IDC_PROXY_DEFAULT
+ Info
->Proxy
);
68 if (IDC_PROXY_DEFAULT
+ Info
->Proxy
== IDC_USE_PROXY
)
70 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), TRUE
);
71 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), TRUE
);
74 SetWindowTextW(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), Info
->szProxyServer
);
75 SetWindowTextW(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), Info
->szNoProxyFor
);
78 static INT_PTR CALLBACK
SettingsDlgProc(HWND hDlg
, UINT Msg
, WPARAM wParam
, LPARAM lParam
)
84 NewSettingsInfo
= SettingsInfo
;
85 InitSettingsControls(hDlg
, &SettingsInfo
);
91 switch (LOWORD(wParam
))
97 case IDC_SAVE_WINDOW_POS
:
98 IS_CHECKED(NewSettingsInfo
.bSaveWndPos
, IDC_SAVE_WINDOW_POS
);
101 case IDC_UPDATE_AVLIST
:
102 IS_CHECKED(NewSettingsInfo
.bUpdateAtStart
, IDC_UPDATE_AVLIST
);
105 case IDC_LOG_ENABLED
:
106 IS_CHECKED(NewSettingsInfo
.bLogEnabled
, IDC_LOG_ENABLED
);
109 case IDC_DEL_AFTER_INSTALL
:
110 IS_CHECKED(NewSettingsInfo
.bDelInstaller
, IDC_DEL_AFTER_INSTALL
);
113 case IDC_PROXY_DEFAULT
:
114 NewSettingsInfo
.Proxy
= 0;
115 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), FALSE
);
116 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), FALSE
);
120 NewSettingsInfo
.Proxy
= 1;
121 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), FALSE
);
122 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), FALSE
);
126 NewSettingsInfo
.Proxy
= 2;
127 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), TRUE
);
128 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), TRUE
);
131 case IDC_DEFAULT_SETTINGS
:
132 FillDefaultSettings(&NewSettingsInfo
);
133 InitSettingsControls(hDlg
, &NewSettingsInfo
);
139 ATL::CStringW szProxy
;
140 ATL::CStringW szNoProxy
;
143 GetWindowTextW(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
),
144 szDir
.GetBuffer(MAX_PATH
), MAX_PATH
);
145 szDir
.ReleaseBuffer();
147 GetWindowTextW(GetDlgItem(hDlg
, IDC_PROXY_SERVER
),
148 szProxy
.GetBuffer(MAX_PATH
), MAX_PATH
);
149 szProxy
.ReleaseBuffer();
150 ATL::CStringW::CopyChars(NewSettingsInfo
.szProxyServer
,
151 _countof(NewSettingsInfo
.szProxyServer
),
153 szProxy
.GetLength() + 1);
155 GetWindowTextW(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
),
156 szNoProxy
.GetBuffer(MAX_PATH
), MAX_PATH
);
157 szNoProxy
.ReleaseBuffer();
158 ATL::CStringW::CopyChars(NewSettingsInfo
.szNoProxyFor
,
159 _countof(NewSettingsInfo
.szNoProxyFor
),
160 szNoProxy
.GetString(),
161 szNoProxy
.GetLength() + 1);
163 dwAttr
= GetFileAttributesW(szDir
.GetString());
164 if (dwAttr
!= INVALID_FILE_ATTRIBUTES
&&
165 (dwAttr
& FILE_ATTRIBUTE_DIRECTORY
))
167 ATL::CStringW::CopyChars(NewSettingsInfo
.szDownloadDir
,
168 _countof(NewSettingsInfo
.szDownloadDir
),
170 szDir
.GetLength() + 1);
174 ATL::CStringW szMsgText
;
175 szMsgText
.LoadStringW(IDS_CHOOSE_FOLDER_ERROR
);
177 if (MessageBoxW(hDlg
, szMsgText
.GetString(), NULL
, MB_YESNO
) == IDYES
)
179 if (CreateDirectoryW(szDir
.GetString(), NULL
))
181 EndDialog(hDlg
, LOWORD(wParam
));
186 SetFocus(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
));
191 SettingsInfo
= NewSettingsInfo
;
192 SaveSettings(GetParent(hDlg
));
193 EndDialog(hDlg
, LOWORD(wParam
));
198 EndDialog(hDlg
, LOWORD(wParam
));
208 VOID
CreateSettingsDlg(HWND hwnd
)
211 MAKEINTRESOURCEW(IDD_SETTINGS_DIALOG
),