1 /* 2 * ShellFolderViewDual 3 * 4 * Copyright 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 22 #include "precomp.h" 23 24 WINE_DEFAULT_DEBUG_CHANNEL(shell); 25 26 class CDefViewDual : 27 public CComObjectRootEx<CComMultiThreadModelNoCS>, 28 public IDispatchImpl<IShellFolderViewDual2, &IID_IShellFolderViewDual2> 29 { 30 public: 31 CDefViewDual() 32 { 33 } 34 35 ~CDefViewDual() 36 { 37 } 38 39 HRESULT STDMETHODCALLTYPE Initialize() 40 { 41 // Nothing to do for now.. 42 return S_OK; 43 } 44 45 // *** IShellFolderViewDual methods *** 46 STDMETHOD(get_Application)(IDispatch **app) override 47 { 48 if (!app) return E_INVALIDARG; 49 50 return CShellDispatch_Constructor(IID_IDispatch, (LPVOID*)app); 51 } 52 53 STDMETHOD(get_Parent)(IDispatch **parent) override 54 { 55 if (!parent) return E_INVALIDARG; 56 *parent = NULL; 57 FIXME("CDefViewDual::get_Parent is UNIMPLEMENTED (%p, %p)\n", this, parent); 58 return E_NOTIMPL; 59 } 60 61 STDMETHOD(get_Folder)(Folder **folder) override 62 { 63 if (!folder) return E_INVALIDARG; 64 *folder = NULL; 65 FIXME("CDefViewDual::get_Folder is UNIMPLEMENTED (%p, %p)\n", this, folder); 66 return E_NOTIMPL; 67 } 68 69 STDMETHOD(SelectedItems)(FolderItems **items) override 70 { 71 if (!items) return E_INVALIDARG; 72 *items = NULL; 73 FIXME("CDefViewDual::SelectedItems is UNIMPLEMENTED (%p, %p)\n", this, items); 74 return E_NOTIMPL; 75 } 76 77 STDMETHOD(get_FocusedItem)(FolderItem **item) override 78 { 79 if (!item) return E_INVALIDARG; 80 *item = NULL; 81 FIXME("CDefViewDual::get_FocusedItem is UNIMPLEMENTED (%p, %p)\n", this, item); 82 return E_NOTIMPL; 83 } 84 85 STDMETHOD(SelectItem)(VARIANT *item, int flags) override 86 { 87 FIXME("CDefViewDual::SelectItem is UNIMPLEMENTED (%p, %p, %i)\n", this, item, flags); 88 return E_NOTIMPL; 89 } 90 91 STDMETHOD(PopupItemMenu)(FolderItem *item, VARIANT vx, VARIANT vy, BSTR *command) override 92 { 93 FIXME("CDefViewDual::PopupItemMenu is UNIMPLEMENTED (%p, %p, %s, %s, %p)\n", this, item, wine_dbgstr_variant(&vx), wine_dbgstr_variant(&vy), command); 94 return E_NOTIMPL; 95 } 96 97 STDMETHOD(get_Script)(IDispatch **script) override 98 { 99 FIXME("CDefViewDual::get_Script is UNIMPLEMENTED (%p, %p)\n", this, script); 100 return E_NOTIMPL; 101 } 102 103 STDMETHOD(get_ViewOptions)(long *options) override 104 { 105 FIXME("CDefViewDual::get_ViewOptions is UNIMPLEMENTED (%p, %p)\n", this, options); 106 return E_NOTIMPL; 107 } 108 109 // *** IShellFolderViewDual2 methods *** 110 STDMETHOD(get_CurrentViewMode)(UINT *mode) override 111 { 112 FIXME("CDefViewDual::get_CurrentViewMode is UNIMPLEMENTED (%p, %p)\n", this, mode); 113 return E_NOTIMPL; 114 } 115 116 STDMETHOD(put_CurrentViewMode)(UINT mode) override 117 { 118 FIXME("CDefViewDual::put_CurrentViewMode is UNIMPLEMENTED (%p, %u)\n", this, mode); 119 return E_NOTIMPL; 120 } 121 122 STDMETHOD(SelectItemRelative)(int relative) override 123 { 124 FIXME("CDefViewDual::SelectItemRelative is UNIMPLEMENTED (%p, %i)\n", this, relative); 125 return E_NOTIMPL; 126 } 127 128 BEGIN_COM_MAP(CDefViewDual) 129 COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch) 130 COM_INTERFACE_ENTRY_IID(IID_IShellFolderViewDual, IShellFolderViewDual) 131 COM_INTERFACE_ENTRY_IID(IID_IShellFolderViewDual2, IShellFolderViewDual2) 132 END_COM_MAP() 133 }; 134 135 /********************************************************** 136 * CDefViewDual_Constructor 137 */ 138 139 HRESULT WINAPI CDefViewDual_Constructor(REFIID riid, LPVOID * ppvOut) 140 { 141 return ShellObjectCreatorInit<CDefViewDual>(riid, ppvOut); 142 } 143