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)
9 #define _WIN32_DCOM // For CoInitializeEx, etc...
12 SETTINGS_INFO NewSettingsInfo
;
14 #define IS_CHECKED(a, b) \
15 a = (SendDlgItemMessage(hDlg, b, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE
18 ChooseFolder(HWND hwnd
)
22 WCHAR szPath
[MAX_PATH
], szBuf
[MAX_STR_LEN
];
24 LoadStringW(hInst
, IDS_CHOOSE_FOLDER_TEXT
, szBuf
, sizeof(szBuf
) / sizeof(TCHAR
));
26 ZeroMemory(&bi
, sizeof(bi
));
30 bi
.ulFlags
= BIF_USENEWUI
| BIF_DONTGOBELOWDOMAIN
| BIF_RETURNONLYFSDIRS
| /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE
;
32 if (SUCCEEDED(CoInitializeEx(NULL
, COINIT_APARTMENTTHREADED
)))
34 LPITEMIDLIST lpItemList
= SHBrowseForFolder(&bi
);
35 if (lpItemList
&& SHGetPathFromIDList(lpItemList
, szPath
))
39 SetDlgItemTextW(hwnd
, IDC_DOWNLOAD_DIR_EDIT
, szPath
);
44 CoTaskMemFree(lpItemList
);
52 InitSettingsControls(HWND hDlg
, SETTINGS_INFO Info
)
54 SendDlgItemMessage(hDlg
, IDC_SAVE_WINDOW_POS
, BM_SETCHECK
, Info
.bSaveWndPos
, 0);
55 SendDlgItemMessage(hDlg
, IDC_UPDATE_AVLIST
, BM_SETCHECK
, Info
.bUpdateAtStart
, 0);
56 SendDlgItemMessage(hDlg
, IDC_LOG_ENABLED
, BM_SETCHECK
, Info
.bLogEnabled
, 0);
57 SendDlgItemMessage(hDlg
, IDC_DEL_AFTER_INSTALL
, BM_SETCHECK
, Info
.bDelInstaller
, 0);
59 SetWindowTextW(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
),
65 SettingsDlgProc(HWND hDlg
, UINT Msg
, WPARAM wParam
, LPARAM lParam
)
71 NewSettingsInfo
= SettingsInfo
;
72 InitSettingsControls(hDlg
, SettingsInfo
);
78 switch (LOWORD(wParam
))
84 case IDC_SAVE_WINDOW_POS
:
85 IS_CHECKED(NewSettingsInfo
.bSaveWndPos
, IDC_SAVE_WINDOW_POS
);
88 case IDC_UPDATE_AVLIST
:
89 IS_CHECKED(NewSettingsInfo
.bUpdateAtStart
, IDC_UPDATE_AVLIST
);
93 IS_CHECKED(NewSettingsInfo
.bLogEnabled
, IDC_LOG_ENABLED
);
96 case IDC_DEL_AFTER_INSTALL
:
97 IS_CHECKED(NewSettingsInfo
.bDelInstaller
, IDC_DEL_AFTER_INSTALL
);
100 case IDC_DEFAULT_SETTINGS
:
101 FillDefaultSettings(&NewSettingsInfo
);
102 InitSettingsControls(hDlg
, NewSettingsInfo
);
107 WCHAR szDir
[MAX_PATH
];
110 GetWindowTextW(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
),
113 dwAttr
= GetFileAttributesW(szDir
);
114 if (dwAttr
!= INVALID_FILE_ATTRIBUTES
&&
115 (dwAttr
& FILE_ATTRIBUTE_DIRECTORY
))
117 wcscpy(NewSettingsInfo
.szDownloadDir
, szDir
);
121 WCHAR szMsgText
[MAX_STR_LEN
];
124 IDS_CHOOSE_FOLDER_ERROR
,
125 szMsgText
, sizeof(szMsgText
) / sizeof(WCHAR
));
127 if (MessageBoxW(hDlg
, szMsgText
, NULL
, MB_YESNO
) == IDYES
)
129 if (CreateDirectoryW(szDir
, NULL
))
131 EndDialog(hDlg
, LOWORD(wParam
));
135 SetFocus(GetDlgItem(hDlg
, IDC_DOWNLOAD_DIR_EDIT
));
139 SettingsInfo
= NewSettingsInfo
;
140 SaveSettings(GetParent(hDlg
));
141 EndDialog(hDlg
, LOWORD(wParam
));
146 EndDialog(hDlg
, LOWORD(wParam
));
157 CreateSettingsDlg(HWND hwnd
)
160 MAKEINTRESOURCEW(IDD_SETTINGS_DIALOG
),