xref: /reactos/dll/win32/shell32/CDefViewDual.cpp (revision 0c2cdcae)
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