David Hedberg : comdlg32: Add ICommDlgBrowser3 stub to Item Dialog.

Alexandre Julliard julliard at winehq.org
Thu Mar 31 12:43:45 CDT 2011


Module: wine
Branch: master
Commit: 338d700a23c221290e884852f05961781a0f201f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=338d700a23c221290e884852f05961781a0f201f

Author: David Hedberg <david.hedberg at gmail.com>
Date:   Thu Mar 31 05:55:27 2011 +0200

comdlg32: Add ICommDlgBrowser3 stub to Item Dialog.

---

 dlls/comdlg32/itemdlg.c       |  125 +++++++++++++++++++++++++++++++++++++++++
 dlls/comdlg32/tests/itemdlg.c |   12 +++-
 2 files changed, 135 insertions(+), 2 deletions(-)

diff --git a/dlls/comdlg32/itemdlg.c b/dlls/comdlg32/itemdlg.c
index 145bca7..35812f2 100644
--- a/dlls/comdlg32/itemdlg.c
+++ b/dlls/comdlg32/itemdlg.c
@@ -60,6 +60,7 @@ typedef struct FileDialogImpl {
     enum ITEMDLG_TYPE dlg_type;
     IExplorerBrowserEvents IExplorerBrowserEvents_iface;
     IServiceProvider       IServiceProvider_iface;
+    ICommDlgBrowser3       ICommDlgBrowser3_iface;
     LONG ref;
 
     FILEOPENDIALOGOPTIONS options;
@@ -483,6 +484,12 @@ static HRESULT WINAPI IFileDialog2_fnQueryInterface(IFileDialog2 *iface,
     {
         *ppvObject = &This->IServiceProvider_iface;
     }
+    else if(IsEqualGUID(&IID_ICommDlgBrowser3, riid) ||
+            IsEqualGUID(&IID_ICommDlgBrowser2, riid) ||
+            IsEqualGUID(&IID_ICommDlgBrowser, riid))
+    {
+        *ppvObject = &This->ICommDlgBrowser3_iface;
+    }
     else
         FIXME("Unknown interface requested: %s.\n", debugstr_guid(riid));
 
@@ -1533,6 +1540,123 @@ static const IServiceProviderVtbl vt_IServiceProvider = {
     IServiceProvider_fnQueryService
 };
 
+/**************************************************************************
+ * ICommDlgBrowser3 implementation
+ */
+static inline FileDialogImpl *impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
+{
+    return CONTAINING_RECORD(iface, FileDialogImpl, ICommDlgBrowser3_iface);
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnQueryInterface(ICommDlgBrowser3 *iface,
+                                                        REFIID riid, void **ppvObject)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    TRACE("%p\n", This);
+    return IFileDialog2_QueryInterface(&This->IFileDialog2_iface, riid, ppvObject);
+}
+
+static ULONG WINAPI ICommDlgBrowser3_fnAddRef(ICommDlgBrowser3 *iface)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    TRACE("%p\n", This);
+    return IFileDialog2_AddRef(&This->IFileDialog2_iface);
+}
+
+static ULONG WINAPI ICommDlgBrowser3_fnRelease(ICommDlgBrowser3 *iface)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    TRACE("%p\n", This);
+    return IFileDialog2_Release(&This->IFileDialog2_iface);
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnOnDefaultCommand(ICommDlgBrowser3 *iface,
+                                                          IShellView *shv)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p)\n", This, shv);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnOnStateChange(ICommDlgBrowser3 *iface,
+                                                       IShellView *shv, ULONG uChange )
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p, %x)\n", This, shv, uChange);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnIncludeObject(ICommDlgBrowser3 *iface,
+                                                       IShellView *shv, LPCITEMIDLIST pidl)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p, %p)\n", This, shv, pidl);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnNotify(ICommDlgBrowser3 *iface,
+                                                IShellView *ppshv, DWORD dwNotifyType)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p, 0x%x)\n", This, ppshv, dwNotifyType);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnGetDefaultMenuText(ICommDlgBrowser3 *iface,
+                                                            IShellView *pshv,
+                                                            LPWSTR pszText, int cchMax)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p, %p, %d)\n", This, pshv, pszText, cchMax);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnGetViewFlags(ICommDlgBrowser3 *iface, DWORD *pdwFlags)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p)\n", This, pdwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnOnColumnClicked(ICommDlgBrowser3 *iface,
+                                                         IShellView *pshv, int iColumn)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p, %d)\n", This, pshv, iColumn);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnGetCurrentFilter(ICommDlgBrowser3 *iface,
+                                                          LPWSTR pszFileSpec, int cchFileSpec)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p, %d)\n", This, pszFileSpec, cchFileSpec);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnOnPreviewCreated(ICommDlgBrowser3 *iface,
+                                                          IShellView *pshv)
+{
+    FileDialogImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("Stub: %p (%p)\n", This, pshv);
+    return E_NOTIMPL;
+}
+
+static const ICommDlgBrowser3Vtbl vt_ICommDlgBrowser3 = {
+    ICommDlgBrowser3_fnQueryInterface,
+    ICommDlgBrowser3_fnAddRef,
+    ICommDlgBrowser3_fnRelease,
+    ICommDlgBrowser3_fnOnDefaultCommand,
+    ICommDlgBrowser3_fnOnStateChange,
+    ICommDlgBrowser3_fnIncludeObject,
+    ICommDlgBrowser3_fnNotify,
+    ICommDlgBrowser3_fnGetDefaultMenuText,
+    ICommDlgBrowser3_fnGetViewFlags,
+    ICommDlgBrowser3_fnOnColumnClicked,
+    ICommDlgBrowser3_fnGetCurrentFilter,
+    ICommDlgBrowser3_fnOnPreviewCreated
+};
+
 static HRESULT FileDialog_constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv, enum ITEMDLG_TYPE type)
 {
     FileDialogImpl *fdimpl;
@@ -1553,6 +1677,7 @@ static HRESULT FileDialog_constructor(IUnknown *pUnkOuter, REFIID riid, void **p
     fdimpl->IFileDialog2_iface.lpVtbl = &vt_IFileDialog2;
     fdimpl->IExplorerBrowserEvents_iface.lpVtbl = &vt_IExplorerBrowserEvents;
     fdimpl->IServiceProvider_iface.lpVtbl = &vt_IServiceProvider;
+    fdimpl->ICommDlgBrowser3_iface.lpVtbl = &vt_ICommDlgBrowser3;
 
     if(type == ITEMDLG_TYPE_OPEN)
     {
diff --git a/dlls/comdlg32/tests/itemdlg.c b/dlls/comdlg32/tests/itemdlg.c
index 069de20..8f031c2 100644
--- a/dlls/comdlg32/tests/itemdlg.c
+++ b/dlls/comdlg32/tests/itemdlg.c
@@ -196,8 +196,8 @@ static BOOL test_instantiation(void)
         hr = IServiceProvider_QueryService(psp, &SID_STopLevelBrowser, &IID_ICommDlgBrowser, (void**)&punk);
         ok(hr == E_FAIL, "got 0x%08x.\n", hr);
         if(SUCCEEDED(hr)) IUnknown_Release(punk);
-        hr = IServiceProvider_QueryService(psp, &SID_STopLevelBrowser, &IID_ICommDlgBrowser, (void**)&punk);
-        ok(hr == E_FAIL, "got 0x%08x.\n", hr);
+        hr = IServiceProvider_QueryService(psp, &SID_SExplorerBrowserFrame, &IID_ICommDlgBrowser, (void**)&punk);
+        ok(hr == S_OK, "got 0x%08x.\n", hr);
         if(SUCCEEDED(hr)) IUnknown_Release(punk);
 
         IServiceProvider_Release(psp);
@@ -215,6 +215,10 @@ static BOOL test_instantiation(void)
     ok(hr == S_OK, "got 0x%08x.\n", hr);
     if(SUCCEEDED(hr)) IUnknown_Release(punk);
 
+    hr = IFileOpenDialog_QueryInterface(pfod, &IID_ICommDlgBrowser3, (void**)&punk);
+    ok(hr == S_OK, "got 0x%08x.\n", hr);
+    if(SUCCEEDED(hr)) IUnknown_Release(punk);
+
     hr = IFileOpenDialog_QueryInterface(pfod, &IID_IShellBrowser, (void**)&punk);
     ok(hr == E_NOINTERFACE, "got 0x%08x.\n", hr);
     if(SUCCEEDED(hr)) IUnknown_Release(punk);
@@ -255,6 +259,10 @@ static BOOL test_instantiation(void)
     ok(hr == S_OK, "got 0x%08x.\n", hr);
     if(SUCCEEDED(hr)) IUnknown_Release(punk);
 
+    hr = IFileOpenDialog_QueryInterface(pfsd, &IID_ICommDlgBrowser3, (void**)&punk);
+    ok(hr == S_OK, "got 0x%08x.\n", hr);
+    if(SUCCEEDED(hr)) IUnknown_Release(punk);
+
     hr = IFileSaveDialog_QueryInterface(pfsd, &IID_IShellBrowser, (void**)&punk);
     ok(hr == E_NOINTERFACE, "got 0x%08x.\n", hr);
     if(SUCCEEDED(hr)) IUnknown_Release(punk);




More information about the wine-cvs mailing list