2 * PROJECT: ReactOS Applications Manager
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/applications/rapps/settingsdlg.c
5 * PURPOSE: Settings Dialog
6 * PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org)
11 SETTINGS_INFO NewSettingsInfo
;
13 #define IS_CHECKED(a, b) \
14 a = (SendDlgItemMessage(hDlg, b, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE
17 ChooseFolder(HWND hwnd
)
21 WCHAR szPath
[MAX_PATH
], szBuf
[MAX_STR_LEN
];
23 LoadStringW(hInst
, IDS_CHOOSE_FOLDER_TEXT
, szBuf
, _countof(szBuf
));
25 ZeroMemory(&bi
, sizeof(bi
));
29 bi
.ulFlags
= BIF_USENEWUI
| BIF_DONTGOBELOWDOMAIN
| BIF_RETURNONLYFSDIRS
| /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE
;
31 if (SUCCEEDED(CoInitializeEx(NULL
, COINIT_APARTMENTTHREADED
)))
33 LPITEMIDLIST lpItemList
= SHBrowseForFolder(&bi
);
34 if (lpItemList
&& SHGetPathFromIDList(lpItemList
, szPath
))
38 SetDlgItemTextW(hwnd
, IDC_DOWNLOAD_DIR_EDIT
, szPath
);
43 CoTaskMemFree(lpItemList
);
51 InitSettingsControls(HWND hDlg
, PSETTINGS_INFO Info
)
53 SendDlgItemMessage(hDlg
, IDC_SAVE_WINDOW_POS
, BM_SETCHECK
, Info
->bSaveWndPos
, 0);
54 SendDlgItemMessage(hDlg
, IDC_UPDATE_AVLIST
, BM_SETCHECK
, Info
->bUpdateAtStart
, 0);
55 SendDlgItemMessage(hDlg
, IDC_LOG_ENABLED
, BM_SETCHECK
, Info
->bLogEnabled
, 0);
56 SendDlgItemMessage(hDlg
, IDC_DEL_AFTER_INSTALL
, BM_SETCHECK
, Info
->bDelInstaller
, 0);
58 SetWindowTextW(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
),
61 CheckRadioButton(hDlg
, IDC_PROXY_DEFAULT
, IDC_USE_PROXY
, IDC_PROXY_DEFAULT
+Info
->Proxy
);
63 if(IDC_PROXY_DEFAULT
+ Info
->Proxy
== IDC_USE_PROXY
)
65 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), TRUE
);
66 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), TRUE
);
69 SetWindowTextW(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), Info
->szProxyServer
);
70 SetWindowTextW(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), Info
->szNoProxyFor
);
75 SettingsDlgProc(HWND hDlg
, UINT Msg
, WPARAM wParam
, LPARAM lParam
)
81 NewSettingsInfo
= SettingsInfo
;
82 InitSettingsControls(hDlg
, &SettingsInfo
);
88 switch (LOWORD(wParam
))
94 case IDC_SAVE_WINDOW_POS
:
95 IS_CHECKED(NewSettingsInfo
.bSaveWndPos
, IDC_SAVE_WINDOW_POS
);
98 case IDC_UPDATE_AVLIST
:
99 IS_CHECKED(NewSettingsInfo
.bUpdateAtStart
, IDC_UPDATE_AVLIST
);
102 case IDC_LOG_ENABLED
:
103 IS_CHECKED(NewSettingsInfo
.bLogEnabled
, IDC_LOG_ENABLED
);
106 case IDC_DEL_AFTER_INSTALL
:
107 IS_CHECKED(NewSettingsInfo
.bDelInstaller
, IDC_DEL_AFTER_INSTALL
);
110 case IDC_PROXY_DEFAULT
:
111 NewSettingsInfo
.Proxy
= 0;
112 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), FALSE
);
113 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), FALSE
);
117 NewSettingsInfo
.Proxy
= 1;
118 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), FALSE
);
119 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), FALSE
);
123 NewSettingsInfo
.Proxy
= 2;
124 EnableWindow(GetDlgItem(hDlg
, IDC_PROXY_SERVER
), TRUE
);
125 EnableWindow(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
), TRUE
);
128 case IDC_DEFAULT_SETTINGS
:
129 FillDefaultSettings(&NewSettingsInfo
);
130 InitSettingsControls(hDlg
, &NewSettingsInfo
);
135 WCHAR szDir
[MAX_PATH
];
136 WCHAR szProxy
[MAX_PATH
];
137 WCHAR szNoProxy
[MAX_PATH
];
140 GetWindowTextW(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
),
143 GetWindowTextW(GetDlgItem(hDlg
, IDC_PROXY_SERVER
),
145 StringCbCopyW(NewSettingsInfo
.szProxyServer
, sizeof(NewSettingsInfo
.szProxyServer
), szProxy
);
147 GetWindowTextW(GetDlgItem(hDlg
, IDC_NO_PROXY_FOR
),
148 szNoProxy
, MAX_PATH
);
149 StringCbCopyW(NewSettingsInfo
.szNoProxyFor
, sizeof(NewSettingsInfo
.szNoProxyFor
), szNoProxy
);
151 dwAttr
= GetFileAttributesW(szDir
);
152 if (dwAttr
!= INVALID_FILE_ATTRIBUTES
&&
153 (dwAttr
& FILE_ATTRIBUTE_DIRECTORY
))
155 StringCbCopyW(NewSettingsInfo
.szDownloadDir
,
156 sizeof(NewSettingsInfo
.szDownloadDir
),
161 WCHAR szMsgText
[MAX_STR_LEN
];
164 IDS_CHOOSE_FOLDER_ERROR
,
165 szMsgText
, _countof(szMsgText
));
167 if (MessageBoxW(hDlg
, szMsgText
, NULL
, MB_YESNO
) == IDYES
)
169 if (CreateDirectoryW(szDir
, NULL
))
171 EndDialog(hDlg
, LOWORD(wParam
));
176 SetFocus(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
));
181 SettingsInfo
= NewSettingsInfo
;
182 SaveSettings(GetParent(hDlg
));
183 EndDialog(hDlg
, LOWORD(wParam
));
188 EndDialog(hDlg
, LOWORD(wParam
));
199 CreateSettingsDlg(HWND hwnd
)
202 MAKEINTRESOURCEW(IDD_SETTINGS_DIALOG
),