ReactOS 0.4.16-dev-1025-gd3456f5
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)
 
static HRESULT ResetGlobalFolderSettings ()
 
static HRESULT ExecResetDefViewFolderSettings (IUnknown *pUnk)
 
static HRESULT ResetDefViewFolderSettings ()
 

Function Documentation

◆ ExecResetDefViewFolderSettings()

static HRESULT ExecResetDefViewFolderSettings ( IUnknown pUnk)
inlinestatic

Definition at line 129 of file CFolderOptions.cpp.

130{
132 OLECMDEXECOPT_DODEFAULT, NULL, NULL);
133}
#define NULL
Definition: types.h:112
HRESULT WINAPI IUnknown_Exec(IUnknown *lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
Definition: ordinal.c:1087
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
#define DVCMDID_RESET_DEFAULTFOLDER_SETTINGS
Definition: shlobj_undoc.h:79

Referenced by CFolderOptions::HandleDefFolderSettings(), and ResetDefViewFolderSettings().

◆ FolderOptionsFileTypesDlg()

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

Definition at line 1872 of file filetypes.cpp.

1877{
1879 if (!pGlobals && uMsg != WM_INITDIALOG)
1880 return FALSE;
1881 LPNMLISTVIEW lppl;
1883 NEWEXT_DIALOG newext;
1884 EDITTYPE_DIALOG edittype;
1885
1886 switch (uMsg)
1887 {
1888 case WM_INITDIALOG:
1891 return TRUE;
1892
1893 case WM_DESTROY:
1894 SetWindowLongPtrW(hwndDlg, DWLP_USER, 0);
1895 if (pGlobals)
1896 {
1897 DestroyIcon(pGlobals->hDefExtIconSmall);
1898 DeleteObject(pGlobals->hOpenWithImage);
1900 }
1901 break;
1902
1903 case WM_COMMAND:
1904 switch (LOWORD(wParam))
1905 {
1906 case IDC_FILETYPES_NEW:
1907 newext.hwndLV = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
1909 hwndDlg, NewExtDlgProc, (LPARAM)&newext))
1910 {
1911 FileTypesDlg_AddExt(hwndDlg, newext.szExt, newext.szFileType, pGlobals);
1912 }
1913 break;
1914
1916 FileTypesDlg_OnDelete(hwndDlg);
1917 break;
1918
1921 if (pEntry)
1922 {
1923 OPENASINFO oai = { pEntry->FileExtension, 0, OAIF_FORCE_REGISTRATION | OAIF_REGISTER_EXT };
1924 if (SUCCEEDED(SHOpenWithDialog(hwndDlg, &oai)))
1925 {
1926 pEntry->InvalidateDefaultApp();
1928 }
1929 }
1930 break;
1931
1933 edittype.hwndLV = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
1934 edittype.pG = pGlobals;
1935 edittype.pEntry = FileTypesDlg_GetEntry(edittype.hwndLV);
1936 if (Normalize(edittype.pEntry))
1937 {
1939 hwndDlg, EditTypeDlgProc, (LPARAM)&edittype);
1940 FileTypesDlg_OnItemChanging(hwndDlg, edittype.pEntry, pGlobals);
1941 }
1942 break;
1943 }
1944 break;
1945
1946 case WM_NOTIFY:
1947 lppl = (LPNMLISTVIEW) lParam;
1948 switch (lppl->hdr.code)
1949 {
1950 case LVN_GETDISPINFO:
1951 {
1954 if (entry && (pLVDI->item.mask & LVIF_TEXT))
1955 {
1956 if (pLVDI->item.iSubItem == 1)
1957 {
1959 pLVDI->item.mask |= LVIF_DI_SETITEM;
1960 }
1961 }
1962 break;
1963 }
1964
1965 case LVN_KEYDOWN:
1966 {
1967 LV_KEYDOWN *pKeyDown = (LV_KEYDOWN *)lParam;
1968 switch (pKeyDown->wVKey)
1969 {
1970 case VK_DELETE:
1971 FileTypesDlg_OnDelete(hwndDlg);
1972 break;
1973 case VK_F5:
1974 FileTypesDlg_Refresh(hwndDlg, pKeyDown->hdr.hwndFrom, pGlobals);
1975 break;
1976 }
1977 break;
1978 }
1979
1980 case NM_DBLCLK:
1982 break;
1983
1984 case LVN_DELETEALLITEMS:
1985 return FALSE; // send LVN_DELETEITEM
1986
1987 case LVN_DELETEITEM:
1989 if (pEntry)
1990 {
1991 pEntry->DestroyIcons();
1992 HeapFree(pGlobals->hHeap, 0, pEntry);
1993 }
1994 return FALSE;
1995
1996 case LVN_ITEMCHANGING:
1998 if (!pEntry)
1999 {
2000 return TRUE;
2001 }
2002
2003 if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
2004 {
2006 }
2007 break;
2008
2009 case LVN_COLUMNCLICK:
2011 break;
2012
2013 case PSN_SETACTIVE:
2014 // On page activation, set the focus to the listview
2016 break;
2017 }
2018 break;
2019 }
2020
2021 return FALSE;
2022}
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:287
static BOOL Normalize(PFILE_TYPE_ENTRY Entry)
Definition: filetypes.cpp:342
static void FileTypesDlg_Sort(PFILE_TYPE_GLOBALS pG, HWND hListView, INT Column=-1)
Definition: filetypes.cpp:1662
static void FileTypesDlg_OnDelete(HWND hwndDlg)
Definition: filetypes.cpp:1809
static INT_PTR CALLBACK NewExtDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: filetypes.cpp:678
static INT_PTR CALLBACK EditTypeDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: filetypes.cpp:1609
static PFILE_TYPE_ENTRY FileTypesDlg_GetEntry(HWND hListView, INT iItem=-1)
Definition: filetypes.cpp:1792
static void FileTypesDlg_Refresh(HWND hwndDlg, HWND hListView, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:1718
struct _FILE_TYPE_GLOBALS * PFILE_TYPE_GLOBALS
static void FileTypesDlg_OnItemChanging(HWND hwndDlg, PFILE_TYPE_ENTRY pEntry, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:1824
static BOOL FileTypesDlg_AddExt(HWND hwndDlg, LPCWSTR pszExt, LPCWSTR pszProgId, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:804
static PFILE_TYPE_GLOBALS FileTypesDlg_Initialize(HWND hwndDlg)
Definition: filetypes.cpp:1756
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:2689
@ OAIF_FORCE_REGISTRATION
Definition: shlobj.h:2691
#define IDC_FILETYPES_LISTVIEW
Definition: shresdef.h:469
#define IDD_NEWEXTENSION
Definition: shresdef.h:548
#define IDD_EDITTYPE
Definition: shresdef.h:549
#define IDC_FILETYPES_ADVANCED
Definition: shresdef.h:476
#define IDC_FILETYPES_DELETE
Definition: shresdef.h:471
#define IDC_FILETYPES_CHANGE
Definition: shresdef.h:474
#define IDC_FILETYPES_NEW
Definition: shresdef.h:470
PFILE_TYPE_GLOBALS pG
Definition: filetypes.cpp:363
PFILE_TYPE_ENTRY pEntry
Definition: filetypes.cpp:364
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:3170
HWND hwndFrom
Definition: winuser.h:3168
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:883
#define GetWindowLongPtrW
Definition: winuser.h:4840
#define WM_COMMAND
Definition: winuser.h:1751
#define WM_INITDIALOG
Definition: winuser.h:1750
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:841
#define VK_F5
Definition: winuser.h:2270
HWND WINAPI SetFocus(_In_opt_ HWND)
#define SendMessage
Definition: winuser.h:5863
#define VK_DELETE
Definition: winuser.h:2244
#define WM_DESTROY
Definition: winuser.h:1620
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SetWindowLongPtrW
Definition: winuser.h:5366
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:2390

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

◆ FolderOptionsGeneralDlg()

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

Definition at line 332 of file general.cpp.

337{
338 static GENERAL_DIALOG general;
339
340 switch (uMsg)
341 {
342 case WM_INITDIALOG:
343 general.hTaskIcon = NULL;
344 general.hFolderIcon = NULL;
345 general.hClickIcon = NULL;
346 return GeneralDlg_OnInitDialog(hwndDlg, &general);
347
348 case WM_COMMAND:
349 switch (LOWORD(wParam))
350 {
359 if (HIWORD(wParam) == BN_CLICKED)
360 {
361 GeneralDlg_UpdateIcons(hwndDlg, LOWORD(wParam), &general);
362
363 // Enable the 'Apply' button
364 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
365 }
366 break;
368 if (HIWORD(wParam) == BN_CLICKED)
369 {
370 GeneralDlg_OnRestoreDefaults(hwndDlg, &general);
371
372 // Enable the 'Apply' button
373 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
374 }
375 break;
376 }
377 break;
378
379 case WM_NOTIFY:
380 {
381 LPNMHDR pnmh = (LPNMHDR)lParam;
382
383 switch (pnmh->code)
384 {
385 case PSN_SETACTIVE:
386 break;
387
388 case PSN_APPLY:
389 return GeneralDlg_OnApply(hwndDlg, &general);
390 }
391 break;
392 }
393
394 case WM_DESTROY:
395 DestroyIcon(general.hTaskIcon);
396 DestroyIcon(general.hFolderIcon);
397 DestroyIcon(general.hClickIcon);
398 break;
399
400 default:
401 return FALSE;
402 }
403 return FALSE;
404}
static BOOL GeneralDlg_OnInitDialog(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:287
static VOID GeneralDlg_UpdateIcons(HWND hDlg, UINT nCtrlID, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:161
static void GeneralDlg_OnRestoreDefaults(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:303
static BOOL GeneralDlg_OnApply(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:316
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSN_APPLY
Definition: prsht.h:117
#define IDC_FOLDER_OPTIONS_CLASSICFOLDERS
Definition: shresdef.h:443
#define IDC_FOLDER_OPTIONS_ULBROWSER
Definition: shresdef.h:448
#define IDC_FOLDER_OPTIONS_SINGLECLICK
Definition: shresdef.h:446
#define IDC_FOLDER_OPTIONS_COMMONTASKS
Definition: shresdef.h:442
#define IDC_FOLDER_OPTIONS_SAMEWINDOW
Definition: shresdef.h:444
#define IDC_FOLDER_OPTIONS_DOUBLECLICK
Definition: shresdef.h:447
#define IDC_FOLDER_OPTIONS_ULPOINT
Definition: shresdef.h:449
#define IDC_FOLDER_OPTIONS_RESTORE
Definition: shresdef.h:450
#define IDC_FOLDER_OPTIONS_OWNWINDOW
Definition: shresdef.h:445
HICON hFolderIcon
Definition: general.cpp:156
HICON hClickIcon
Definition: general.cpp:157
HICON hTaskIcon
Definition: general.cpp:155
#define HIWORD(l)
Definition: typedefs.h:247
struct tagNMHDR * LPNMHDR
HWND WINAPI GetParent(_In_ HWND)
#define BN_CLICKED
Definition: winuser.h:1936

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

◆ FolderOptionsViewDlg()

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

Definition at line 956 of file view.cpp.

961{
964
965 switch (uMsg)
966 {
967 case WM_INITDIALOG:
969
970 case WM_COMMAND:
971 switch (LOWORD(wParam))
972 {
973 case IDC_VIEW_RESTORE_DEFAULTS: // Restore Defaults
975 break;
976
979 {
981 bool ResetToDefault = LOWORD(wParam) == IDC_VIEW_RESET_ALL;
983 if (pFO)
984 hr = pFO->ApplyDefFolderSettings(ResetToDefault); // Use IBrowserService2
985 if (ResetToDefault && hr == HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED))
987 if (FAILED(hr))
988 SHELL_ErrorBox(hwndDlg, hr);
989 break;
990 }
991 }
992 break;
993
994 case WM_NOTIFY:
995 switch (LPNMHDR(lParam)->code)
996 {
997 case NM_CLICK: // clicked on treeview
999 break;
1000
1001 case NM_CUSTOMDRAW: // custom draw (for graying)
1005 return Result;
1006
1007 case TVN_KEYDOWN: // key is down
1009 break;
1010
1011 case PSN_APPLY: // [Apply] is clicked
1012 ViewDlg_Apply(hwndDlg);
1013 break;
1014
1015 default:
1016 break;
1017 }
1018 break;
1019 }
1020
1021 return FALSE;
1022}
static HRESULT ResetGlobalAndDefViewFolderSettings()
#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
#define SHELL_ErrorBox
Definition: shellutils.h:126
HRESULT hr
Definition: shlfolder.c:183
#define IDC_VIEW_RESET_ALL
Definition: shresdef.h:531
#define IDC_VIEW_RESTORE_DEFAULTS
Definition: shresdef.h:533
#define IDC_VIEW_APPLY_TO_ALL
Definition: shresdef.h:530
#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:872
#define DWLP_MSGRESULT
Definition: winuser.h:881
_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().

◆ ResetDefViewFolderSettings()

static HRESULT ResetDefViewFolderSettings ( )
static

Definition at line 135 of file CFolderOptions.cpp.

136{
139 if (SUCCEEDED(hr))
140 {
142 SFV_CREATE create = { sizeof(SFV_CREATE), pSF };
145 }
146 return hr;
147}
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
Definition: CDefView.cpp:4793
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static HRESULT ExecResetDefViewFolderSettings(IUnknown *pUnk)
static const struct access_res create[16]
Definition: package.c:7505
struct _SFV_CREATE SFV_CREATE

Referenced by CFolderOptions::ResetGlobalAndDefViewFolderSettings().

◆ ResetGlobalFolderSettings()

static HRESULT ResetGlobalFolderSettings ( )
static

Definition at line 116 of file CFolderOptions.cpp.

117{
118 IGlobalFolderSettings *pgfs;
119 HRESULT hr = CoCreateInstance(CLSID_GlobalFolderSettings, NULL, CLSCTX_INPROC_SERVER,
120 IID_PPV_ARG(IGlobalFolderSettings, &pgfs));
121 if (SUCCEEDED(hr))
122 {
123 hr = pgfs->Set(NULL, 0, 0);
124 pgfs->Release();
125 }
126 return hr;
127}
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
ULONG Release()
#define IID_PPV_ARG(Itype, ppType)

Referenced by CFolderOptions::ResetGlobalAndDefViewFolderSettings().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( fprop  )