ReactOS 0.4.16-dev-178-g8ba6102
CFolderOptions.cpp File Reference
#include <precomp.h>
#include <shdeprecated.h>
Include dependency graph for CFolderOptions.cpp:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (fprop)
 
INT_PTR CALLBACK FolderOptionsGeneralDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK FolderOptionsViewDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK FolderOptionsFileTypesDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 

Function Documentation

◆ FolderOptionsFileTypesDlg()

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

Definition at line 1869 of file filetypes.cpp.

1874{
1876 if (!pGlobals && uMsg != WM_INITDIALOG)
1877 return FALSE;
1878 LPNMLISTVIEW lppl;
1880 NEWEXT_DIALOG newext;
1881 EDITTYPE_DIALOG edittype;
1882
1883 switch (uMsg)
1884 {
1885 case WM_INITDIALOG:
1888 return TRUE;
1889
1890 case WM_DESTROY:
1891 SetWindowLongPtrW(hwndDlg, DWLP_USER, 0);
1892 if (pGlobals)
1893 {
1894 DestroyIcon(pGlobals->hDefExtIconSmall);
1895 DeleteObject(pGlobals->hOpenWithImage);
1897 }
1898 break;
1899
1900 case WM_COMMAND:
1901 switch (LOWORD(wParam))
1902 {
1903 case IDC_FILETYPES_NEW:
1904 newext.hwndLV = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
1906 hwndDlg, NewExtDlgProc, (LPARAM)&newext))
1907 {
1908 FileTypesDlg_AddExt(hwndDlg, newext.szExt, newext.szFileType, pGlobals);
1909 }
1910 break;
1911
1913 FileTypesDlg_OnDelete(hwndDlg);
1914 break;
1915
1918 if (pEntry)
1919 {
1920 OPENASINFO oai = { pEntry->FileExtension, 0, OAIF_ALLOW_REGISTRATION | OAIF_REGISTER_EXT };
1921 if (SUCCEEDED(SHOpenWithDialog(hwndDlg, &oai)))
1922 {
1923 pEntry->InvalidateDefaultApp();
1925 }
1926 }
1927 break;
1928
1930 edittype.hwndLV = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
1931 edittype.pG = pGlobals;
1932 edittype.pEntry = FileTypesDlg_GetEntry(edittype.hwndLV);
1933 if (Normalize(edittype.pEntry))
1934 {
1936 hwndDlg, EditTypeDlgProc, (LPARAM)&edittype);
1937 FileTypesDlg_OnItemChanging(hwndDlg, edittype.pEntry, pGlobals);
1938 }
1939 break;
1940 }
1941 break;
1942
1943 case WM_NOTIFY:
1944 lppl = (LPNMLISTVIEW) lParam;
1945 switch (lppl->hdr.code)
1946 {
1947 case LVN_GETDISPINFO:
1948 {
1951 if (entry && (pLVDI->item.mask & LVIF_TEXT))
1952 {
1953 if (pLVDI->item.iSubItem == 1)
1954 {
1956 pLVDI->item.mask |= LVIF_DI_SETITEM;
1957 }
1958 }
1959 break;
1960 }
1961
1962 case LVN_KEYDOWN:
1963 {
1964 LV_KEYDOWN *pKeyDown = (LV_KEYDOWN *)lParam;
1965 switch (pKeyDown->wVKey)
1966 {
1967 case VK_DELETE:
1968 FileTypesDlg_OnDelete(hwndDlg);
1969 break;
1970 case VK_F5:
1971 FileTypesDlg_Refresh(hwndDlg, pKeyDown->hdr.hwndFrom, pGlobals);
1972 break;
1973 }
1974 break;
1975 }
1976
1977 case NM_DBLCLK:
1979 break;
1980
1981 case LVN_DELETEALLITEMS:
1982 return FALSE; // send LVN_DELETEITEM
1983
1984 case LVN_DELETEITEM:
1986 if (pEntry)
1987 {
1988 pEntry->DestroyIcons();
1989 HeapFree(pGlobals->hHeap, 0, pEntry);
1990 }
1991 return FALSE;
1992
1993 case LVN_ITEMCHANGING:
1995 if (!pEntry)
1996 {
1997 return TRUE;
1998 }
1999
2000 if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
2001 {
2003 }
2004 break;
2005
2006 case LVN_COLUMNCLICK:
2008 break;
2009
2010 case PSN_SETACTIVE:
2011 // On page activation, set the focus to the listview
2013 break;
2014 }
2015 break;
2016 }
2017
2018 return FALSE;
2019}
HRESULT WINAPI SHOpenWithDialog(HWND hwndParent, const OPENASINFO *poainfo)
#define shell32_hInstance
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define HeapFree(x, y, z)
Definition: compat.h:735
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
static LPWSTR GetTypeName(PFILE_TYPE_ENTRY Entry, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:288
static BOOL Normalize(PFILE_TYPE_ENTRY Entry)
Definition: filetypes.cpp:348
static void FileTypesDlg_Sort(PFILE_TYPE_GLOBALS pG, HWND hListView, INT Column=-1)
Definition: filetypes.cpp:1653
static void FileTypesDlg_OnDelete(HWND hwndDlg)
Definition: filetypes.cpp:1806
static INT_PTR CALLBACK NewExtDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: filetypes.cpp:682
static INT_PTR CALLBACK EditTypeDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: filetypes.cpp:1600
static PFILE_TYPE_ENTRY FileTypesDlg_GetEntry(HWND hListView, INT iItem=-1)
Definition: filetypes.cpp:1789
static void FileTypesDlg_Refresh(HWND hwndDlg, HWND hListView, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:1709
struct _FILE_TYPE_GLOBALS * PFILE_TYPE_GLOBALS
static void FileTypesDlg_OnItemChanging(HWND hwndDlg, PFILE_TYPE_ENTRY pEntry, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:1821
static BOOL FileTypesDlg_AddExt(HWND hwndDlg, LPCWSTR pszExt, LPCWSTR pszProgId, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:808
static PFILE_TYPE_GLOBALS FileTypesDlg_Initialize(HWND hwndDlg)
Definition: filetypes.cpp:1747
struct _FILE_TYPE_ENTRY * PFILE_TYPE_ENTRY
PLIST_ENTRY pEntry
Definition: fxioqueue.cpp:4484
PFX_DRIVER_GLOBALS pGlobals
pKey DeleteObject()
#define SUCCEEDED(hr)
Definition: intsafe.h:50
uint32_t entry
Definition: isohybrid.c:63
if(dx< 0)
Definition: linetemp.h:194
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define LOWORD(l)
Definition: pedump.c:82
#define PSN_SETACTIVE
Definition: prsht.h:115
#define LVN_COLUMNCLICK
Definition: commctrl.h:3144
#define NM_DBLCLK
Definition: commctrl.h:131
#define LVN_DELETEALLITEMS
Definition: commctrl.h:3139
#define LVN_GETDISPINFO
Definition: commctrl.h:3165
#define LVN_ITEMCHANGING
Definition: commctrl.h:3135
struct tagNMLISTVIEW * LPNMLISTVIEW
struct tagLVDISPINFOW * LPNMLVDISPINFOW
#define LVIF_TEXT
Definition: commctrl.h:2314
#define LVN_KEYDOWN
Definition: commctrl.h:3189
#define LV_KEYDOWN
Definition: commctrl.h:3191
#define LVIF_DI_SETITEM
Definition: commctrl.h:3171
#define LVN_DELETEITEM
Definition: commctrl.h:3138
#define LVIS_FOCUSED
Definition: commctrl.h:2323
#define WM_NOTIFY
Definition: richedit.h:61
@ OAIF_REGISTER_EXT
Definition: shlobj.h:2681
@ OAIF_ALLOW_REGISTRATION
Definition: shlobj.h:2680
#define IDC_FILETYPES_LISTVIEW
Definition: shresdef.h:443
#define IDD_NEWEXTENSION
Definition: shresdef.h:522
#define IDD_EDITTYPE
Definition: shresdef.h:523
#define IDC_FILETYPES_ADVANCED
Definition: shresdef.h:450
#define IDC_FILETYPES_DELETE
Definition: shresdef.h:445
#define IDC_FILETYPES_CHANGE
Definition: shresdef.h:448
#define IDC_FILETYPES_NEW
Definition: shresdef.h:444
PFILE_TYPE_GLOBALS pG
Definition: filetypes.cpp:369
PFILE_TYPE_ENTRY pEntry
Definition: filetypes.cpp:370
Definition: filetypes.cpp:42
LVITEMW item
Definition: commctrl.h:3184
LPWSTR pszText
Definition: commctrl.h:2370
int iSubItem
Definition: commctrl.h:2367
UINT mask
Definition: commctrl.h:2365
LPARAM lParam
Definition: commctrl.h:2373
UINT code
Definition: winuser.h:3162
HWND hwndFrom
Definition: winuser.h:3160
UINT uNewState
Definition: commctrl.h:3041
UINT uOldState
Definition: commctrl.h:3042
LONG_PTR LPARAM
Definition: windef.h:208
#define DWLP_USER
Definition: winuser.h:875
#define GetWindowLongPtrW
Definition: winuser.h:4832
#define WM_COMMAND
Definition: winuser.h:1743
#define WM_INITDIALOG
Definition: winuser.h:1742
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:833
#define VK_F5
Definition: winuser.h:2262
HWND WINAPI SetFocus(_In_opt_ HWND)
#define SendMessage
Definition: winuser.h:5855
#define VK_DELETE
Definition: winuser.h:2236
#define WM_DESTROY
Definition: winuser.h:1612
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SetWindowLongPtrW
Definition: winuser.h:5358
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2105

Referenced by CFolderOptions::AddPages(), and ShowFolderOptionsDialogThreadProc().

◆ FolderOptionsGeneralDlg()

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

Definition at line 331 of file general.cpp.

336{
337 static GENERAL_DIALOG general;
338
339 switch (uMsg)
340 {
341 case WM_INITDIALOG:
342 general.hTaskIcon = NULL;
343 general.hFolderIcon = NULL;
344 general.hClickIcon = NULL;
345 return GeneralDlg_OnInitDialog(hwndDlg, &general);
346
347 case WM_COMMAND:
348 switch (LOWORD(wParam))
349 {
358 if (HIWORD(wParam) == BN_CLICKED)
359 {
360 GeneralDlg_UpdateIcons(hwndDlg, LOWORD(wParam), &general);
361
362 // Enable the 'Apply' button
363 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
364 }
365 break;
367 if (HIWORD(wParam) == BN_CLICKED)
368 {
369 GeneralDlg_OnRestoreDefaults(hwndDlg, &general);
370
371 // Enable the 'Apply' button
372 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
373 }
374 break;
375 }
376 break;
377
378 case WM_NOTIFY:
379 {
380 LPNMHDR pnmh = (LPNMHDR)lParam;
381
382 switch (pnmh->code)
383 {
384 case PSN_SETACTIVE:
385 break;
386
387 case PSN_APPLY:
388 return GeneralDlg_OnApply(hwndDlg, &general);
389 }
390 break;
391 }
392
393 case WM_DESTROY:
394 DestroyIcon(general.hTaskIcon);
395 DestroyIcon(general.hFolderIcon);
396 DestroyIcon(general.hClickIcon);
397 break;
398
399 default:
400 return FALSE;
401 }
402 return FALSE;
403}
#define NULL
Definition: types.h:112
static BOOL GeneralDlg_OnInitDialog(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:286
static VOID GeneralDlg_UpdateIcons(HWND hDlg, UINT nCtrlID, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:160
static void GeneralDlg_OnRestoreDefaults(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:302
static BOOL GeneralDlg_OnApply(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:315
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSN_APPLY
Definition: prsht.h:117
#define IDC_FOLDER_OPTIONS_CLASSICFOLDERS
Definition: shresdef.h:417
#define IDC_FOLDER_OPTIONS_ULBROWSER
Definition: shresdef.h:422
#define IDC_FOLDER_OPTIONS_SINGLECLICK
Definition: shresdef.h:420
#define IDC_FOLDER_OPTIONS_COMMONTASKS
Definition: shresdef.h:416
#define IDC_FOLDER_OPTIONS_SAMEWINDOW
Definition: shresdef.h:418
#define IDC_FOLDER_OPTIONS_DOUBLECLICK
Definition: shresdef.h:421
#define IDC_FOLDER_OPTIONS_ULPOINT
Definition: shresdef.h:423
#define IDC_FOLDER_OPTIONS_RESTORE
Definition: shresdef.h:424
#define IDC_FOLDER_OPTIONS_OWNWINDOW
Definition: shresdef.h:419
HICON hFolderIcon
Definition: general.cpp:155
HICON hClickIcon
Definition: general.cpp:156
HICON hTaskIcon
Definition: general.cpp:154
#define HIWORD(l)
Definition: typedefs.h:247
struct tagNMHDR * LPNMHDR
HWND WINAPI GetParent(_In_ HWND)
#define BN_CLICKED
Definition: winuser.h:1928

Referenced by CFolderOptions::AddPages(), and ShowFolderOptionsDialogThreadProc().

◆ FolderOptionsViewDlg()

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

Definition at line 953 of file view.cpp.

958{
961
962 switch (uMsg)
963 {
964 case WM_INITDIALOG:
966
967 case WM_COMMAND:
968 switch (LOWORD(wParam))
969 {
970 case IDC_VIEW_RESTORE_DEFAULTS: // Restore Defaults
972 break;
973
976 {
979 if (pFO)
980 hr = pFO->ApplyDefFolderSettings(LOWORD(wParam) == IDC_VIEW_RESET_ALL);
981 if (FAILED(hr))
982 SHELL_ErrorBox(hwndDlg, hr);
983 break;
984 }
985 }
986 break;
987
988 case WM_NOTIFY:
989 switch (LPNMHDR(lParam)->code)
990 {
991 case NM_CLICK: // clicked on treeview
993 break;
994
995 case NM_CUSTOMDRAW: // custom draw (for graying)
999 return Result;
1000
1001 case TVN_KEYDOWN: // key is down
1003 break;
1004
1005 case PSN_APPLY: // [Apply] is clicked
1006 ViewDlg_Apply(hwndDlg);
1007 break;
1008
1009 default:
1010 break;
1011 }
1012 break;
1013 }
1014
1015 return FALSE;
1016}
#define ERROR_NOT_SUPPORTED
Definition: compat.h:100
FxFileObject * pFO
#define FAILED(hr)
Definition: intsafe.h:51
void Draw(HDC aDc)
Definition: magnifier.c:359
#define LPPROPSHEETPAGE
Definition: prsht.h:390
#define TVN_KEYDOWN
Definition: commctrl.h:3718
#define NM_CLICK
Definition: commctrl.h:130
#define NM_CUSTOMDRAW
Definition: commctrl.h:137
#define TV_KEYDOWN
Definition: commctrl.h:3727
HRESULT hr
Definition: shlfolder.c:183
#define IDC_VIEW_RESET_ALL
Definition: shresdef.h:505
#define IDC_VIEW_RESTORE_DEFAULTS
Definition: shresdef.h:507
#define IDC_VIEW_APPLY_TO_ALL
Definition: shresdef.h:504
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT_PTR
Definition: typedefs.h:64
static void ViewDlg_OnTreeViewKeyDown(HWND hwndDlg, TV_KEYDOWN *KeyDown)
Definition: view.cpp:728
static VOID ViewDlg_RestoreDefaults(HWND hwndDlg)
Definition: view.cpp:774
static INT_PTR ViewDlg_OnTreeCustomDraw(HWND hwndDlg, NMTVCUSTOMDRAW *Draw)
Definition: view.cpp:744
static VOID ViewDlg_Apply(HWND hwndDlg)
Definition: view.cpp:890
static BOOL ViewDlg_OnInitDialog(HWND hwndDlg, LPPROPSHEETPAGE psp)
Definition: view.cpp:621
static VOID ViewDlg_OnTreeViewClick(HWND hwndDlg)
Definition: view.cpp:706
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define GWL_USERDATA
Definition: winuser.h:864
#define DWLP_MSGRESULT
Definition: winuser.h:873
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Referenced by CFolderOptions::AddPages(), and ShowFolderOptionsDialogThreadProc().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( fprop  )