ReactOS 0.4.16-dev-835-gd769f56
recycler_prop.cpp File Reference
#include <precomp.h>
Include dependency graph for recycler_prop.cpp:

Go to the source code of this file.

Classes

struct  DRIVE_ITEM_CONTEXT
 

Typedefs

typedef struct DRIVE_ITEM_CONTEXTPDRIVE_ITEM_CONTEXT
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (CRecycleBin)
 
static void toggleNukeOnDeleteOption (HWND hwndDlg, BOOL bEnable)
 
static VOID InitializeRecycleBinDlg (HWND hwndDlg, WCHAR DefaultDrive)
 
static BOOL StoreDriveSettings (HWND hwndDlg)
 
static VOID FreeDriveItemContext (HWND hwndDlg)
 
static INT GetSelectedDriveItem (HWND hwndDlg, LVITEMW *li)
 
static INT_PTR CALLBACK RecycleBinDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HRESULT RecycleBin_AddPropSheetPages (LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
 

Typedef Documentation

◆ PDRIVE_ITEM_CONTEXT

Function Documentation

◆ FreeDriveItemContext()

static VOID FreeDriveItemContext ( HWND  hwndDlg)
static

Definition at line 225 of file recycler_prop.cpp.

226{
227 int iCount, iIndex;
228 HWND hDlgCtrl = GetDlgItem(hwndDlg, 14000);
229 LVITEMW li;
230
231 iCount = ListView_GetItemCount(hDlgCtrl);
232
233 ZeroMemory(&li, sizeof(li));
234 li.mask = LVIF_PARAM;
235
236 for (iIndex = 0; iIndex < iCount; iIndex++)
237 {
238 li.iItem = iIndex;
239 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
240 {
241 HeapFree(GetProcessHeap(), 0, (PVOID)li.lParam);
242 }
243 }
244}
#define GetProcessHeap()
Definition: compat.h:736
#define HeapFree(x, y, z)
Definition: compat.h:735
LARGE_INTEGER li
Definition: fxtimerapi.cpp:235
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2312
#define LVIF_PARAM
Definition: commctrl.h:2316
#define LVM_GETITEMW
Definition: commctrl.h:2395
#define ZeroMemory
Definition: winbase.h:1737
LONG_PTR LPARAM
Definition: windef.h:208
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by RecycleBinDlg().

◆ GetSelectedDriveItem()

static INT GetSelectedDriveItem ( HWND  hwndDlg,
LVITEMW li 
)
static

Definition at line 247 of file recycler_prop.cpp.

248{
249 HWND hDlgCtrl;
250 UINT iItemCount, iIndex;
251
252 hDlgCtrl = GetDlgItem(hwndDlg, 14000);
253 if (!hDlgCtrl)
254 return -1;
255
256 iItemCount = ListView_GetItemCount(hDlgCtrl);
257 if (!iItemCount)
258 return -1;
259
260 ZeroMemory(li, sizeof(LVITEMW));
261 li->mask = LVIF_PARAM | LVIF_STATE;
262 li->stateMask = (UINT)-1;
263 for (iIndex = 0; iIndex < iItemCount; iIndex++)
264 {
265 li->iItem = iIndex;
266 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)li))
267 {
268 if (li->state & LVIS_SELECTED)
269 return iIndex;
270 }
271 }
272 return -1;
273}
unsigned int UINT
Definition: ndis.h:50
#define LVIF_STATE
Definition: commctrl.h:2317
#define LVIS_SELECTED
Definition: commctrl.h:2324

Referenced by RecycleBinDlg().

◆ InitializeRecycleBinDlg()

static VOID InitializeRecycleBinDlg ( HWND  hwndDlg,
WCHAR  DefaultDrive 
)
static

Definition at line 54 of file recycler_prop.cpp.

55{
56 WCHAR szDrive[] = L"A:\\";
57 DWORD dwDrives;
58 WCHAR szName[100];
59 WCHAR szVolume[100];
60 DWORD MaxComponent, Flags;
61 DWORD dwSerial;
62 LVCOLUMNW lc;
63 HWND hDlgCtrl;
64 LVITEMW li;
65 INT itemCount;
66 ULARGE_INTEGER TotalNumberOfFreeBytes, TotalNumberOfBytes, FreeBytesAvailable;
67 RECT rect;
68 int columnSize;
69 int defIndex = 0;
71 PDRIVE_ITEM_CONTEXT pItem = NULL, pDefault = NULL, pFirst = NULL;
72
73 hDlgCtrl = GetDlgItem(hwndDlg, 14000);
74
76 szVolume[0] = 0;
77
78 GetClientRect(hDlgCtrl, &rect);
79
80 ZeroMemory(&lc, sizeof(lc));
82
83 columnSize = 140; //FIXME
84 lc.iSubItem = 0;
85 lc.fmt = LVCFMT_FIXED_WIDTH;
86 lc.cx = columnSize;
87 lc.cchTextMax = wcslen(szVolume);
88 lc.pszText = szVolume;
89 (void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, 0, (LPARAM)&lc);
90
92 szVolume[0] = 0;
93
94 lc.iSubItem = 1;
95 lc.cx = rect.right - rect.left - columnSize;
96 lc.cchTextMax = wcslen(szVolume);
97 lc.pszText = szVolume;
98 (void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, 1, (LPARAM)&lc);
99
100 dwDrives = GetLogicalDrives();
101 itemCount = 0;
102 do
103 {
104 if (dwDrives & 0x1)
105 {
106 UINT Type = GetDriveTypeW(szDrive);
107 if (Type == DRIVE_FIXED) //FIXME
108 {
109 if (!GetVolumeInformationW(szDrive, szName, _countof(szName), &dwSerial, &MaxComponent, &Flags, NULL, 0))
110 {
111 szName[0] = 0;
112 dwSerial = -1;
113 }
114
115 swprintf(szVolume, L"%s (%c:)", szName, szDrive[0]);
116 ZeroMemory(&li, sizeof(li));
117 li.mask = LVIF_TEXT | LVIF_PARAM;
118 li.iSubItem = 0;
119 li.pszText = szVolume;
120 li.iItem = itemCount;
121 SendMessageW(hDlgCtrl, LVM_INSERTITEMW, 0, (LPARAM)&li);
122 if (GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes))
123 {
124 if (StrFormatByteSizeW(TotalNumberOfFreeBytes.QuadPart, szVolume, _countof(szVolume)))
125 {
127 if (pItem)
128 {
129 pItem->FreeBytesAvailable = FreeBytesAvailable;
130 pItem->dwSerial = dwSerial;
131
132 swprintf(szName, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\BitBucket\\Volume\\%04X-%04X", LOWORD(dwSerial), HIWORD(dwSerial));
133
134 dwSize = sizeof(DWORD);
136 pItem->dwMaxCapacity = ~0;
137
138 /* Check if the maximum capacity doesn't exceed the available disk space (in megabytes), and truncate it if needed */
139 FreeBytesAvailable.QuadPart = (FreeBytesAvailable.QuadPart / (1024 * 1024));
140 pItem->dwMaxCapacity = min(pItem->dwMaxCapacity, FreeBytesAvailable.LowPart);
141
142 dwSize = sizeof(DWORD);
144
145 li.mask = LVIF_PARAM;
146 li.lParam = (LPARAM)pItem;
147 (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
148 if (szDrive[0] == DefaultDrive)
149 {
150 defIndex = itemCount;
151 pDefault = pItem;
152 }
153 }
154 if (!pFirst)
155 pFirst = pItem;
156
157 li.mask = LVIF_TEXT;
158 li.iSubItem = 1;
159 li.pszText = szVolume;
160 li.iItem = itemCount;
161 (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
162 }
163 }
164 itemCount++;
165 }
166 }
167 szDrive[0]++;
168 dwDrives = (dwDrives >> 1);
169 } while (dwDrives);
170
171 if (!pDefault)
172 pDefault = pFirst;
173 if (pDefault)
174 {
175 toggleNukeOnDeleteOption(hwndDlg, pDefault->dwNukeOnDelete);
176 SetDlgItemInt(hwndDlg, 14002, pDefault->dwMaxCapacity, FALSE);
177 }
178 ZeroMemory(&li, sizeof(li));
179 li.mask = LVIF_STATE;
180 li.stateMask = (UINT)-1;
181 li.state = LVIS_FOCUSED | LVIS_SELECTED;
182 li.iItem = defIndex;
183 (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
184}
#define shell32_hInstance
Type
Definition: Type.h:7
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
Definition: reg.c:1931
#define HeapAlloc
Definition: compat.h:733
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
BOOL WINAPI GetDiskFreeSpaceExW(IN LPCWSTR lpDirectoryName OPTIONAL, OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller, OUT PULARGE_INTEGER lpTotalNumberOfBytes, OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes)
Definition: disk.c:342
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
Definition: disk.c:497
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
Definition: volume.c:226
#define RRF_RT_DWORD
Definition: driver.c:581
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
Definition: string.c:2394
#define swprintf
Definition: precomp.h:40
unsigned long DWORD
Definition: ntddk_ex.h:95
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define min(a, b)
Definition: monoChain.cc:55
#define DWORD
Definition: nt_native.h:44
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
static const WCHAR szName[]
Definition: powrprof.c:45
#define LVCF_WIDTH
Definition: commctrl.h:2592
#define LVM_SETITEMW
Definition: commctrl.h:2402
#define LVM_INSERTCOLUMNW
Definition: commctrl.h:2637
#define LVIF_TEXT
Definition: commctrl.h:2314
#define LVCF_FMT
Definition: commctrl.h:2591
#define LVCF_SUBITEM
Definition: commctrl.h:2594
#define LVM_INSERTITEMW
Definition: commctrl.h:2409
#define LVCF_TEXT
Definition: commctrl.h:2593
#define LVIS_FOCUSED
Definition: commctrl.h:2323
static void toggleNukeOnDeleteOption(HWND hwndDlg, BOOL bEnable)
#define IDS_RECYCLEBIN_DISKSPACE
Definition: shresdef.h:145
#define IDS_RECYCLEBIN_LOCATION
Definition: shresdef.h:144
#define _countof(array)
Definition: sndvol32.h:70
& rect
Definition: startmenu.cpp:1413
ULARGE_INTEGER FreeBytesAvailable
$ULONG LowPart
Definition: ntbasedef.h:577
ULONGLONG QuadPart
Definition: ms-dtyp.idl:185
int cchTextMax
Definition: commctrl.h:2573
LPWSTR pszText
Definition: commctrl.h:2572
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
DWORD WINAPI GetLogicalDrives(void)
Definition: disk.c:110
#define DRIVE_FIXED
Definition: winbase.h:278
#define HKEY_CURRENT_USER
Definition: winreg.h:11
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by RecycleBinDlg().

◆ RecycleBin_AddPropSheetPages()

HRESULT RecycleBin_AddPropSheetPages ( LPFNSVADDPROPSHEETPAGE  pfnAddPage,
LPARAM  lParam 
)

Definition at line 407 of file recycler_prop.cpp.

408{
410 return AddPropSheetPage(hpsp, pfnAddPage, lParam);
411}
LPARAM lParam
Definition: combotst.c:139
static HRESULT AddPropSheetPage(HPROPSHEETPAGE hPage, LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
Definition: precomp.h:150
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
static INT_PTR CALLBACK RecycleBinDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define IDD_RECYCLE_BIN_PROPERTIES
Definition: shresdef.h:404
HPROPSHEETPAGE SH_CreatePropertySheetPage(WORD wDialogId, DLGPROC pfnDlgProc, LPARAM lParam, LPCWSTR pwszTitle)
Definition: propsheet.cpp:243

Referenced by CRecycleBin::AddPages().

◆ RecycleBinDlg()

static INT_PTR CALLBACK RecycleBinDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 276 of file recycler_prop.cpp.

281{
282 enum { WM_NEWDRIVESELECTED = WM_APP, WM_UPDATEDRIVESETTINGS };
283 LPPSHNOTIFY lppsn;
284 LPNMLISTVIEW lppl;
285 LVITEMW li;
288 UINT uResult;
290 DWORD dwStyle;
291 ULARGE_INTEGER FreeBytesAvailable;
292
293 switch(uMsg)
294 {
295 case WM_INITDIALOG:
297 InitializeRecycleBinDlg(hwndDlg, (WCHAR)page->lParam);
298 SendDlgItemMessage(hwndDlg, 14004, BM_SETCHECK, !SHELL_GetSetting(SSF_NOCONFIRMRECYCLE, fNoConfirmRecycle), 0);
299 dwStyle = (DWORD) SendDlgItemMessage(hwndDlg, 14000, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
300 dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
301 SendDlgItemMessage(hwndDlg, 14000, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
302 if (GetDlgCtrlID((HWND)wParam) != 14000)
303 {
304 SetFocus(GetDlgItem(hwndDlg, 14000));
305 return FALSE;
306 }
307 return TRUE;
308 case WM_COMMAND:
309 switch(LOWORD(wParam))
310 {
311 case 14001:
313 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
314 break;
315 case 14002:
316 if (HIWORD(wParam) == EN_CHANGE)
317 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
318 break;
319 case 14003:
321 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
322 break;
323 case 14004:
324 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
325 break;
326 }
327 break;
328 case WM_NOTIFY:
329 lppsn = (LPPSHNOTIFY) lParam;
330 lppl = (LPNMLISTVIEW) lParam;
331 if (lppsn->hdr.code == PSN_APPLY)
332 {
334 ss.fNoConfirmRecycle = SendDlgItemMessage(hwndDlg, 14004, BM_GETCHECK, 0, 0) == BST_UNCHECKED;
336
337 if (GetSelectedDriveItem(hwndDlg, &li) > -1)
338 {
339 SendMessage(hwndDlg, WM_UPDATEDRIVESETTINGS, 0, li.lParam);
340 }
341 if (StoreDriveSettings(hwndDlg))
342 {
344 return TRUE;
345 }
346 }
347 else if (lppl->hdr.code == LVN_ITEMCHANGING)
348 {
349 ZeroMemory(&li, sizeof(li));
350 li.mask = LVIF_PARAM;
351 li.iItem = lppl->iItem;
352 if (!SendMessageW(lppl->hdr.hwndFrom, LVM_GETITEMW, 0, (LPARAM)&li))
353 return TRUE;
354
355 pItem = (PDRIVE_ITEM_CONTEXT)li.lParam;
356 if (!pItem)
357 return TRUE;
358
359 if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
360 {
361 // New focused item, delay handling until after kill focus has been processed
362 PostMessage(hwndDlg, WM_NEWDRIVESELECTED, 0, (LPARAM)pItem);
363 }
364 else if ((lppl->uOldState & LVIS_FOCUSED) && !(lppl->uNewState & LVIS_FOCUSED))
365 {
366 // Kill focus
367 SendMessage(hwndDlg, WM_UPDATEDRIVESETTINGS, 0, (LPARAM)pItem);
368 }
369 return TRUE;
370
371 }
372 break;
373 case WM_NEWDRIVESELECTED:
374 if (lParam)
375 {
378 SetDlgItemInt(hwndDlg, 14002, pItem->dwMaxCapacity, FALSE);
379 }
380 break;
381 case WM_UPDATEDRIVESETTINGS:
382 if (lParam)
383 {
385 uResult = GetDlgItemInt(hwndDlg, 14002, &bSuccess, FALSE);
386 if (bSuccess)
387 {
388 /* Check if the maximum capacity doesn't exceed the available disk space (in megabytes), and truncate it if needed */
389 FreeBytesAvailable = pItem->FreeBytesAvailable;
390 FreeBytesAvailable.QuadPart = (FreeBytesAvailable.QuadPart / (1024 * 1024));
391 pItem->dwMaxCapacity = min(uResult, FreeBytesAvailable.LowPart);
392 SetDlgItemInt(hwndDlg, 14002, pItem->dwMaxCapacity, FALSE);
393 }
394 if (SendDlgItemMessageW(hwndDlg, 14003, BM_GETCHECK, 0, 0) == BST_CHECKED)
395 pItem->dwNukeOnDelete = TRUE;
396 else
397 pItem->dwNukeOnDelete = FALSE;
398 }
399 break;
400 case WM_DESTROY:
401 FreeDriveItemContext(hwndDlg);
402 break;
403 }
404 return FALSE;
405}
WPARAM wParam
Definition: combotst.c:138
#define TRUE
Definition: types.h:120
static BOOLEAN bSuccess
Definition: drive.cpp:355
#define WM_APP
Definition: eventvwr.h:73
unsigned int BOOL
Definition: ntddk_ex.h:94
#define ss
Definition: i386-dis.c:441
if(dx< 0)
Definition: linetemp.h:194
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSN_APPLY
Definition: prsht.h:117
#define PSNRET_NOERROR
Definition: prsht.h:129
struct _PSHNOTIFY * LPPSHNOTIFY
#define PROPSHEETPAGE
Definition: prsht.h:389
#define LVN_ITEMCHANGING
Definition: commctrl.h:3135
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2739
struct tagNMLISTVIEW * LPNMLISTVIEW
#define LVM_GETEXTENDEDLISTVIEWSTYLE
Definition: commctrl.h:2732
#define LVM_SETEXTENDEDLISTVIEWSTYLE
Definition: commctrl.h:2729
static VOID InitializeRecycleBinDlg(HWND hwndDlg, WCHAR DefaultDrive)
struct DRIVE_ITEM_CONTEXT * PDRIVE_ITEM_CONTEXT
static BOOL StoreDriveSettings(HWND hwndDlg)
static INT GetSelectedDriveItem(HWND hwndDlg, LVITEMW *li)
static VOID FreeDriveItemContext(HWND hwndDlg)
#define WM_NOTIFY
Definition: richedit.h:61
VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
Definition: shellord.c:225
#define SHELL_GetSetting(pss, ssf, field)
Definition: shellutils.h:830
#define SSF_NOCONFIRMRECYCLE
Definition: shlobj.h:1618
NMHDR hdr
Definition: prsht.h:330
Definition: module.h:576
UINT code
Definition: winuser.h:3162
HWND hwndFrom
Definition: winuser.h:3160
UINT uNewState
Definition: commctrl.h:3041
UINT uOldState
Definition: commctrl.h:3042
#define SetWindowLongPtr
Definition: treelist.c:70
#define BST_UNCHECKED
Definition: winuser.h:199
#define WM_COMMAND
Definition: winuser.h:1743
#define WM_INITDIALOG
Definition: winuser.h:1742
#define BM_SETCHECK
Definition: winuser.h:1924
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define SendMessage
Definition: winuser.h:5855
#define PostMessage
Definition: winuser.h:5844
HWND WINAPI GetParent(_In_ HWND)
#define DWLP_MSGRESULT
Definition: winuser.h:873
int WINAPI GetDlgCtrlID(_In_ HWND)
#define WM_DESTROY
Definition: winuser.h:1612
UINT WINAPI GetDlgItemInt(_In_ HWND, _In_ int, _Out_opt_ PBOOL, _In_ BOOL)
#define SendDlgItemMessage
Definition: winuser.h:5854
#define BST_CHECKED
Definition: winuser.h:197
#define BM_GETCHECK
Definition: winuser.h:1921
#define EN_CHANGE
Definition: winuser.h:2025

Referenced by RecycleBin_AddPropSheetPages().

◆ StoreDriveSettings()

static BOOL StoreDriveSettings ( HWND  hwndDlg)
static

Definition at line 186 of file recycler_prop.cpp.

187{
188 int iCount, iIndex;
189 HWND hDlgCtrl = GetDlgItem(hwndDlg, 14000);
190 LVITEMW li;
192 HKEY hKey, hSubKey;
193 WCHAR szSerial[20];
195
196 if (RegCreateKeyExW(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\BitBucket\\Volume", 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL) != ERROR_SUCCESS)
197 return FALSE;
198
199 iCount = ListView_GetItemCount(hDlgCtrl);
200
201 ZeroMemory(&li, sizeof(li));
202 li.mask = LVIF_PARAM;
203
204 for (iIndex = 0; iIndex < iCount; iIndex++)
205 {
206 li.iItem = iIndex;
207 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
208 {
209 pItem = (PDRIVE_ITEM_CONTEXT)li.lParam;
210 swprintf(szSerial, L"%04X-%04X", LOWORD(pItem->dwSerial), HIWORD(pItem->dwSerial));
211 if (RegCreateKeyExW(hKey, szSerial, 0, NULL, 0, KEY_WRITE, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
212 {
213 dwSize = sizeof(DWORD);
214 RegSetValueExW(hSubKey, L"MaxCapacity", 0, REG_DWORD, (LPBYTE)&pItem->dwMaxCapacity, dwSize);
215 dwSize = sizeof(DWORD);
216 RegSetValueExW(hSubKey, L"NukeOnDelete", 0, REG_DWORD, (LPBYTE)&pItem->dwNukeOnDelete, dwSize);
217 RegCloseKey(hSubKey);
218 }
219 }
220 }
222 return TRUE;
223}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
FxAutoRegKey hKey
#define KEY_WRITE
Definition: nt_native.h:1031
#define REG_DWORD
Definition: sdbapi.c:596
unsigned char * LPBYTE
Definition: typedefs.h:53

Referenced by RecycleBinDlg().

◆ toggleNukeOnDeleteOption()

static void toggleNukeOnDeleteOption ( HWND  hwndDlg,
BOOL  bEnable 
)
static

Definition at line 34 of file recycler_prop.cpp.

35{
36 if (bEnable)
37 {
38 SendDlgItemMessage(hwndDlg, 14001, BM_SETCHECK, BST_UNCHECKED, 0);
39 EnableWindow(GetDlgItem(hwndDlg, 14002), FALSE);
40 SendDlgItemMessage(hwndDlg, 14003, BM_SETCHECK, BST_CHECKED, 0);
41 }
42 else
43 {
44 SendDlgItemMessage(hwndDlg, 14001, BM_SETCHECK, BST_CHECKED, 0);
45 EnableWindow(GetDlgItem(hwndDlg, 14002), TRUE);
46 SendDlgItemMessage(hwndDlg, 14003, BM_SETCHECK, BST_UNCHECKED, 0);
47 }
48
49 // FIXME: Max capacity not implemented yet, disable for now (CORE-13743)
50 EnableWindow(GetDlgItem(hwndDlg, 14002), FALSE);
51}
_In_ BOOL bEnable
Definition: winddi.h:3426
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)

Referenced by InitializeRecycleBinDlg(), and RecycleBinDlg().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( CRecycleBin  )