1 /* 2 * Folder options. 3 * 4 * Copyright (C) 2016 Mark Jansen 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21 #ifndef _CFOLDEROPTIONS_H_ 22 #define _CFOLDEROPTIONS_H_ 23 24 class CFolderOptions : 25 public CComCoClass<CFolderOptions, &CLSID_ShellFldSetExt>, 26 public CComObjectRootEx<CComMultiThreadModelNoCS>, 27 public IShellPropSheetExt, 28 public IShellExtInit, 29 public IObjectWithSite 30 { 31 private: 32 CComPtr<IUnknown> m_pSite; 33 //LPITEMIDLIST pidl; 34 //INT iIdEmpty; 35 //UINT cfShellIDList; 36 //void SF_RegisterClipFmt(); 37 //BOOL fAcceptFmt; /* flag for pending Drop */ 38 //BOOL QueryDrop (DWORD dwKeyState, LPDWORD pdwEffect); 39 //BOOL RecycleBinIsEmpty(); 40 41 protected: 42 enum DEFFOLDERSETTINGACTION { DFSA_QUERY = -1, DFSA_RESET, DFSA_APPLY }; 43 HRESULT HandleDefFolderSettings(int Action); 44 45 public: 46 CFolderOptions(); 47 ~CFolderOptions(); 48 49 // IShellPropSheetExt 50 STDMETHOD(AddPages)(LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) override; 51 STDMETHOD(ReplacePage)(EXPPS uPageID, LPFNSVADDPROPSHEETPAGE pfnReplaceWith, LPARAM lParam) override; 52 53 // IShellExtInit 54 STDMETHOD(Initialize)(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) override; 55 56 // IObjectWithSite 57 STDMETHOD(SetSite)(IUnknown *pUnkSite) override; 58 STDMETHOD(GetSite)(REFIID riid, void **ppvSite) override; 59 60 bool CanSetDefFolderSettings() 61 { 62 return SUCCEEDED(HandleDefFolderSettings(DFSA_QUERY)); 63 } 64 HRESULT ApplyDefFolderSettings(bool ResetToDefault) 65 { 66 return HandleDefFolderSettings(ResetToDefault ? DFSA_RESET : DFSA_APPLY); 67 } 68 69 DECLARE_REGISTRY_RESOURCEID(IDR_FOLDEROPTIONS) 70 DECLARE_NOT_AGGREGATABLE(CFolderOptions) 71 72 DECLARE_PROTECT_FINAL_CONSTRUCT() 73 74 BEGIN_COM_MAP(CFolderOptions) 75 COM_INTERFACE_ENTRY_IID(IID_IShellPropSheetExt, IShellPropSheetExt) 76 COM_INTERFACE_ENTRY_IID(IID_IShellExtInit, IShellExtInit) 77 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite) 78 END_COM_MAP() 79 }; 80 81 #endif /* _CFOLDEROPTIONS_H_ */ 82