shell32: Update to IFolderView2.

This commit is contained in:
Nikolay Sivov 2015-04-29 21:20:15 +03:00 committed by Alexandre Julliard
parent 02ab73beb1
commit e91dac5153
4 changed files with 430 additions and 92 deletions

View File

@ -209,3 +209,21 @@ HRESULT __RPC_STUB IModalWindow_Show_Stub(
TRACE("(%p)->(%p)\n", This, hwndOwner); TRACE("(%p)->(%p)\n", This, hwndOwner);
return IModalWindow_Show(This, hwndOwner); return IModalWindow_Show(This, hwndOwner);
} }
HRESULT __RPC_STUB IFolderView2_GetGroupBy_Stub(
IFolderView2 *This,
PROPERTYKEY *pkey,
BOOL *ascending)
{
TRACE("(%p)->(%p %p)\n", This, pkey, ascending);
return IFolderView2_GetGroupBy(This, pkey, ascending);
}
HRESULT __RPC_STUB IFolderView2_GetGroupBy_Proxy(
IFolderView2 *This,
PROPERTYKEY *pkey,
BOOL *ascending)
{
TRACE("(%p)->(%p %p)\n", This, pkey, ascending);
return IFolderView2_RemoteGetGroupBy_Proxy(This, pkey, ascending);
}

View File

@ -83,7 +83,7 @@ typedef struct
IDropTarget IDropTarget_iface; IDropTarget IDropTarget_iface;
IDropSource IDropSource_iface; IDropSource IDropSource_iface;
IViewObject IViewObject_iface; IViewObject IViewObject_iface;
IFolderView IFolderView_iface; IFolderView2 IFolderView2_iface;
IShellFolderView IShellFolderView_iface; IShellFolderView IShellFolderView_iface;
IShellFolderViewDual3 IShellFolderViewDual3_iface; IShellFolderViewDual3 IShellFolderViewDual3_iface;
LONG ref; LONG ref;
@ -137,9 +137,9 @@ static inline IShellViewImpl *impl_from_IViewObject(IViewObject *iface)
return CONTAINING_RECORD(iface, IShellViewImpl, IViewObject_iface); return CONTAINING_RECORD(iface, IShellViewImpl, IViewObject_iface);
} }
static inline IShellViewImpl *impl_from_IFolderView(IFolderView *iface) static inline IShellViewImpl *impl_from_IFolderView2(IFolderView2 *iface)
{ {
return CONTAINING_RECORD(iface, IShellViewImpl, IFolderView_iface); return CONTAINING_RECORD(iface, IShellViewImpl, IFolderView2_iface);
} }
static inline IShellViewImpl *impl_from_IShellFolderView(IShellFolderView *iface) static inline IShellViewImpl *impl_from_IShellFolderView(IShellFolderView *iface)
@ -1731,9 +1731,10 @@ static HRESULT WINAPI IShellView_fnQueryInterface(IShellView3 *iface, REFIID rii
{ {
*ppvObj = &This->IShellFolderView_iface; *ppvObj = &This->IShellFolderView_iface;
} }
else if(IsEqualIID(riid, &IID_IFolderView)) else if(IsEqualIID(riid, &IID_IFolderView) ||
IsEqualIID(riid, &IID_IFolderView2))
{ {
*ppvObj = &This->IFolderView_iface; *ppvObj = &This->IFolderView2_iface;
} }
else if(IsEqualIID(riid, &IID_IOleCommandTarget)) else if(IsEqualIID(riid, &IID_IOleCommandTarget))
{ {
@ -1982,7 +1983,6 @@ static HRESULT WINAPI IShellView_fnSaveViewState(IShellView3 *iface)
static HRESULT WINAPI IShellView_fnSelectItem(IShellView3 *iface, LPCITEMIDLIST pidl, UINT flags) static HRESULT WINAPI IShellView_fnSelectItem(IShellView3 *iface, LPCITEMIDLIST pidl, UINT flags)
{ {
IShellViewImpl *This = impl_from_IShellView3(iface); IShellViewImpl *This = impl_from_IShellView3(iface);
IFolderView *view = &This->IFolderView_iface;
int i; int i;
TRACE("(%p)->(pidl=%p, 0x%08x)\n",This, pidl, flags); TRACE("(%p)->(pidl=%p, 0x%08x)\n",This, pidl, flags);
@ -1990,7 +1990,7 @@ static HRESULT WINAPI IShellView_fnSelectItem(IShellView3 *iface, LPCITEMIDLIST
i = LV_FindItemByPidl(This, pidl); i = LV_FindItemByPidl(This, pidl);
if (i == -1) return S_OK; if (i == -1) return S_OK;
return IFolderView_SelectItem(view, i, flags); return IFolderView2_SelectItem(&This->IFolderView2_iface, i, flags);
} }
static HRESULT WINAPI IShellView_fnGetItemObject(IShellView3 *iface, UINT uItem, REFIID riid, static HRESULT WINAPI IShellView_fnGetItemObject(IShellView3 *iface, UINT uItem, REFIID riid,
@ -2147,19 +2147,8 @@ static HRESULT WINAPI IShellView2_fnSelectAndPositionItem(IShellView3 *iface, LP
UINT flags, POINT *point) UINT flags, POINT *point)
{ {
IShellViewImpl *This = impl_from_IShellView3(iface); IShellViewImpl *This = impl_from_IShellView3(iface);
IFolderView *view;
HRESULT hr;
TRACE("(%p)->(item %p, flags %#x, point %p)\n", This, item, flags, point); TRACE("(%p)->(item %p, flags %#x, point %p)\n", This, item, flags, point);
return IFolderView2_SelectAndPositionItems(&This->IFolderView2_iface, 1, &item, point, flags);
hr = IShellView3_QueryInterface(iface, &IID_IFolderView, (void**)&view);
if (hr == S_OK)
{
hr = IFolderView_SelectAndPositionItems(view, 1, &item, point, flags);
IFolderView_Release(view);
}
return hr;
} }
static HRESULT WINAPI IShellView3_fnCreateViewWindow3(IShellView3 *iface, IShellBrowser *owner, static HRESULT WINAPI IShellView3_fnCreateViewWindow3(IShellView3 *iface, IShellBrowser *owner,
@ -2668,28 +2657,28 @@ static const IViewObjectVtbl viewobjectvtbl =
ISVViewObject_GetAdvise ISVViewObject_GetAdvise
}; };
/* IFolderView */ /* IFolderView2 */
static HRESULT WINAPI IFView_QueryInterface(IFolderView *iface, REFIID riid, void **ppvObj) static HRESULT WINAPI FolderView_QueryInterface(IFolderView2 *iface, REFIID riid, void **ppvObj)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
return IShellView3_QueryInterface(&This->IShellView3_iface, riid, ppvObj); return IShellView3_QueryInterface(&This->IShellView3_iface, riid, ppvObj);
} }
static ULONG WINAPI IFView_AddRef(IFolderView *iface) static ULONG WINAPI FolderView_AddRef(IFolderView2 *iface)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
return IShellView3_AddRef(&This->IShellView3_iface); return IShellView3_AddRef(&This->IShellView3_iface);
} }
static ULONG WINAPI IFView_Release(IFolderView *iface) static ULONG WINAPI FolderView_Release(IFolderView2 *iface)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
return IShellView3_Release(&This->IShellView3_iface); return IShellView3_Release(&This->IShellView3_iface);
} }
static HRESULT WINAPI IFView_GetCurrentViewMode(IFolderView *iface, UINT *mode) static HRESULT WINAPI FolderView_GetCurrentViewMode(IFolderView2 *iface, UINT *mode)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
TRACE("(%p)->(%p), stub\n", This, mode); TRACE("(%p)->(%p), stub\n", This, mode);
if(!mode) if(!mode)
@ -2699,9 +2688,9 @@ static HRESULT WINAPI IFView_GetCurrentViewMode(IFolderView *iface, UINT *mode)
return S_OK; return S_OK;
} }
static HRESULT WINAPI IFView_SetCurrentViewMode(IFolderView *iface, UINT mode) static HRESULT WINAPI FolderView_SetCurrentViewMode(IFolderView2 *iface, UINT mode)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
DWORD dwStyle; DWORD dwStyle;
TRACE("(%p)->(%u), stub\n", This, mode); TRACE("(%p)->(%u), stub\n", This, mode);
@ -2723,9 +2712,9 @@ static HRESULT WINAPI IFView_SetCurrentViewMode(IFolderView *iface, UINT mode)
return S_OK; return S_OK;
} }
static HRESULT WINAPI IFView_GetFolder(IFolderView *iface, REFIID riid, void **ppv) static HRESULT WINAPI FolderView_GetFolder(IFolderView2 *iface, REFIID riid, void **ppv)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppv); TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppv);
@ -2740,9 +2729,9 @@ static HRESULT WINAPI IFView_GetFolder(IFolderView *iface, REFIID riid, void **p
return E_NOINTERFACE; return E_NOINTERFACE;
} }
static HRESULT WINAPI IFView_Item(IFolderView *iface, int index, PITEMID_CHILD *ppidl) static HRESULT WINAPI FolderView_Item(IFolderView2 *iface, int index, PITEMID_CHILD *ppidl)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
LVITEMW item; LVITEMW item;
TRACE("(%p)->(%d %p)\n", This, index, ppidl); TRACE("(%p)->(%d %p)\n", This, index, ppidl);
@ -2762,9 +2751,9 @@ static HRESULT WINAPI IFView_Item(IFolderView *iface, int index, PITEMID_CHILD *
} }
} }
static HRESULT WINAPI IFView_ItemCount(IFolderView *iface, UINT flags, int *items) static HRESULT WINAPI FolderView_ItemCount(IFolderView2 *iface, UINT flags, int *items)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
TRACE("(%p)->(%u %p)\n", This, flags, items); TRACE("(%p)->(%u %p)\n", This, flags, items);
@ -2776,16 +2765,16 @@ static HRESULT WINAPI IFView_ItemCount(IFolderView *iface, UINT flags, int *item
return S_OK; return S_OK;
} }
static HRESULT WINAPI IFView_Items(IFolderView *iface, UINT flags, REFIID riid, void **ppv) static HRESULT WINAPI FolderView_Items(IFolderView2 *iface, UINT flags, REFIID riid, void **ppv)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%u %s %p), stub\n", This, flags, debugstr_guid(riid), ppv); FIXME("(%p)->(%u %s %p), stub\n", This, flags, debugstr_guid(riid), ppv);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI IFView_GetSelectionMarkedItem(IFolderView *iface, int *item) static HRESULT WINAPI FolderView_GetSelectionMarkedItem(IFolderView2 *iface, int *item)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
TRACE("(%p)->(%p)\n", This, item); TRACE("(%p)->(%p)\n", This, item);
@ -2794,9 +2783,9 @@ static HRESULT WINAPI IFView_GetSelectionMarkedItem(IFolderView *iface, int *ite
return S_OK; return S_OK;
} }
static HRESULT WINAPI IFView_GetFocusedItem(IFolderView *iface, int *item) static HRESULT WINAPI FolderView_GetFocusedItem(IFolderView2 *iface, int *item)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
TRACE("(%p)->(%p)\n", This, item); TRACE("(%p)->(%p)\n", This, item);
@ -2805,16 +2794,16 @@ static HRESULT WINAPI IFView_GetFocusedItem(IFolderView *iface, int *item)
return S_OK; return S_OK;
} }
static HRESULT WINAPI IFView_GetItemPosition(IFolderView *iface, PCUITEMID_CHILD pidl, POINT *ppt) static HRESULT WINAPI FolderView_GetItemPosition(IFolderView2 *iface, PCUITEMID_CHILD pidl, POINT *ppt)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %p), stub\n", This, pidl, ppt); FIXME("(%p)->(%p %p), stub\n", This, pidl, ppt);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI IFView_GetSpacing(IFolderView *iface, POINT *pt) static HRESULT WINAPI FolderView_GetSpacing(IFolderView2 *iface, POINT *pt)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
TRACE("(%p)->(%p)\n", This, pt); TRACE("(%p)->(%p)\n", This, pt);
@ -2832,23 +2821,23 @@ static HRESULT WINAPI IFView_GetSpacing(IFolderView *iface, POINT *pt)
return S_OK; return S_OK;
} }
static HRESULT WINAPI IFView_GetDefaultSpacing(IFolderView *iface, POINT *pt) static HRESULT WINAPI FolderView_GetDefaultSpacing(IFolderView2 *iface, POINT *pt)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p), stub\n", This, pt); FIXME("(%p)->(%p), stub\n", This, pt);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI IFView_GetAutoArrange(IFolderView *iface) static HRESULT WINAPI FolderView_GetAutoArrange(IFolderView2 *iface)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p), stub\n", This); FIXME("(%p), stub\n", This);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI IFView_SelectItem(IFolderView *iface, int item, DWORD flags) static HRESULT WINAPI FolderView_SelectItem(IFolderView2 *iface, int item, DWORD flags)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
LVITEMW lvItem; LVITEMW lvItem;
TRACE("(%p)->(%d, %x)\n", This, item, flags); TRACE("(%p)->(%d, %x)\n", This, item, flags);
@ -2878,33 +2867,244 @@ static HRESULT WINAPI IFView_SelectItem(IFolderView *iface, int item, DWORD flag
return S_OK; return S_OK;
} }
static HRESULT WINAPI IFView_SelectAndPositionItems(IFolderView *iface, UINT cidl, static HRESULT WINAPI FolderView_SelectAndPositionItems(IFolderView2 *iface, UINT cidl,
PCUITEMID_CHILD_ARRAY apidl, POINT *apt, DWORD flags) PCUITEMID_CHILD_ARRAY apidl, POINT *apt, DWORD flags)
{ {
IShellViewImpl *This = impl_from_IFolderView(iface); IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%u %p %p %x), stub\n", This, cidl, apidl, apt, flags); FIXME("(%p)->(%u %p %p %x), stub\n", This, cidl, apidl, apt, flags);
return E_NOTIMPL; return E_NOTIMPL;
} }
static const IFolderViewVtbl folderviewvtbl = static HRESULT WINAPI FolderView2_SetGroupBy(IFolderView2 *iface, REFPROPERTYKEY key, BOOL ascending)
{ {
IFView_QueryInterface, IShellViewImpl *This = impl_from_IFolderView2(iface);
IFView_AddRef, FIXME("(%p)->(%p %d), stub\n", This, key, ascending);
IFView_Release, return E_NOTIMPL;
IFView_GetCurrentViewMode, }
IFView_SetCurrentViewMode,
IFView_GetFolder, static HRESULT WINAPI FolderView2_GetGroupBy(IFolderView2 *iface, PROPERTYKEY *pkey, BOOL *ascending)
IFView_Item, {
IFView_ItemCount, IShellViewImpl *This = impl_from_IFolderView2(iface);
IFView_Items, FIXME("(%p)->(%p %p), stub\n", This, pkey, ascending);
IFView_GetSelectionMarkedItem, return E_NOTIMPL;
IFView_GetFocusedItem, }
IFView_GetItemPosition,
IFView_GetSpacing, static HRESULT WINAPI FolderView2_SetViewProperty(IFolderView2 *iface, PCUITEMID_CHILD pidl,
IFView_GetDefaultSpacing, REFPROPERTYKEY propkey, REFPROPVARIANT propvar)
IFView_GetAutoArrange, {
IFView_SelectItem, IShellViewImpl *This = impl_from_IFolderView2(iface);
IFView_SelectAndPositionItems FIXME("(%p)->(%p %p %p), stub\n", This, pidl, propkey, propvar);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetViewProperty(IFolderView2 *iface, PCUITEMID_CHILD pidl,
REFPROPERTYKEY propkey, PROPVARIANT *propvar)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %p %p), stub\n", This, pidl, propkey, propvar);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetTileViewProperties(IFolderView2 *iface, PCUITEMID_CHILD pidl,
LPCWSTR prop_list)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %s), stub\n", This, pidl, debugstr_w(prop_list));
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetExtendedTileViewProperties(IFolderView2 *iface, PCUITEMID_CHILD pidl,
LPCWSTR prop_list)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %s), stub\n", This, pidl, debugstr_w(prop_list));
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetText(IFolderView2 *iface, FVTEXTTYPE type, LPCWSTR text)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%d %s), stub\n", This, type, debugstr_w(text));
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetCurrentFolderFlags(IFolderView2 *iface, DWORD mask, DWORD flags)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(0x%08x 0x%08x), stub\n", This, mask, flags);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetCurrentFolderFlags(IFolderView2 *iface, DWORD *flags)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p), stub\n", This, flags);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetSortColumnCount(IFolderView2 *iface, int *columns)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p), stub\n", This, columns);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetSortColumns(IFolderView2 *iface, const SORTCOLUMN *columns,
int count)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %d), stub\n", This, columns, count);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetSortColumns(IFolderView2 *iface, SORTCOLUMN *columns,
int count)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %d), stub\n", This, columns, count);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetItem(IFolderView2 *iface, int item, REFIID riid, void **ppv)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%d %s %p), stub\n", This, item, debugstr_guid(riid), ppv);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetVisibleItem(IFolderView2 *iface, int start, BOOL previous,
int *item)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%d %d %p), stub\n", This, start, previous, item);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetSelectedItem(IFolderView2 *iface, int start, int *item)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%d %p), stub\n", This, start, item);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetSelection(IFolderView2 *iface, BOOL none_implies_folder,
IShellItemArray **array)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%d %p), stub\n", This, none_implies_folder, array);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetSelectionState(IFolderView2 *iface, PCUITEMID_CHILD pidl,
DWORD *flags)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %p), stub\n", This, pidl, flags);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_InvokeVerbOnSelection(IFolderView2 *iface, LPCSTR verb)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%s), stub\n", This, debugstr_a(verb));
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetViewModeAndIconSize(IFolderView2 *iface, FOLDERVIEWMODE mode,
int size)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%d %d), stub\n", This, mode, size);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetViewModeAndIconSize(IFolderView2 *iface, FOLDERVIEWMODE *mode,
int *size)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p %p), stub\n", This, mode, size);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetGroupSubsetCount(IFolderView2 *iface, UINT visible_rows)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%u), stub\n", This, visible_rows);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_GetGroupSubsetCount(IFolderView2 *iface, UINT *visible_rows)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%p), stub\n", This, visible_rows);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_SetRedraw(IFolderView2 *iface, BOOL redraw)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p)->(%d), stub\n", This, redraw);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_IsMoveInSameFolder(IFolderView2 *iface)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p), stub\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI FolderView2_DoRename(IFolderView2 *iface)
{
IShellViewImpl *This = impl_from_IFolderView2(iface);
FIXME("(%p), stub\n", This);
return E_NOTIMPL;
}
static const IFolderView2Vtbl folderviewvtbl =
{
FolderView_QueryInterface,
FolderView_AddRef,
FolderView_Release,
FolderView_GetCurrentViewMode,
FolderView_SetCurrentViewMode,
FolderView_GetFolder,
FolderView_Item,
FolderView_ItemCount,
FolderView_Items,
FolderView_GetSelectionMarkedItem,
FolderView_GetFocusedItem,
FolderView_GetItemPosition,
FolderView_GetSpacing,
FolderView_GetDefaultSpacing,
FolderView_GetAutoArrange,
FolderView_SelectItem,
FolderView_SelectAndPositionItems,
FolderView2_SetGroupBy,
FolderView2_GetGroupBy,
FolderView2_SetViewProperty,
FolderView2_GetViewProperty,
FolderView2_SetTileViewProperties,
FolderView2_SetExtendedTileViewProperties,
FolderView2_SetText,
FolderView2_SetCurrentFolderFlags,
FolderView2_GetCurrentFolderFlags,
FolderView2_GetSortColumnCount,
FolderView2_SetSortColumns,
FolderView2_GetSortColumns,
FolderView2_GetItem,
FolderView2_GetVisibleItem,
FolderView2_GetSelectedItem,
FolderView2_GetSelection,
FolderView2_GetSelectionState,
FolderView2_InvokeVerbOnSelection,
FolderView2_SetViewModeAndIconSize,
FolderView2_GetViewModeAndIconSize,
FolderView2_SetGroupSubsetCount,
FolderView2_GetGroupSubsetCount,
FolderView2_SetRedraw,
FolderView2_IsMoveInSameFolder,
FolderView2_DoRename
}; };
/* IShellFolderView */ /* IShellFolderView */
@ -2957,10 +3157,8 @@ static HRESULT WINAPI IShellFolderView_fnAutoArrange(IShellFolderView *iface)
static HRESULT WINAPI IShellFolderView_fnGetAutoArrange(IShellFolderView *iface) static HRESULT WINAPI IShellFolderView_fnGetAutoArrange(IShellFolderView *iface)
{ {
IShellViewImpl *This = impl_from_IShellFolderView(iface); IShellViewImpl *This = impl_from_IShellFolderView(iface);
IFolderView *view = &This->IFolderView_iface;
TRACE("(%p)\n", This); TRACE("(%p)\n", This);
return IFolderView_GetAutoArrange(view); return IFolderView2_GetAutoArrange(&This->IFolderView2_iface);
} }
static HRESULT WINAPI IShellFolderView_fnAddObject( static HRESULT WINAPI IShellFolderView_fnAddObject(
@ -2979,10 +3177,8 @@ static HRESULT WINAPI IShellFolderView_fnGetObject(
UINT item) UINT item)
{ {
IShellViewImpl *This = impl_from_IShellFolderView(iface); IShellViewImpl *This = impl_from_IShellFolderView(iface);
IFolderView *view = &This->IFolderView_iface;
TRACE("(%p)->(%p %d)\n", This, pidl, item); TRACE("(%p)->(%p %d)\n", This, pidl, item);
return IFolderView_Item(view, item, pidl); return IFolderView2_Item(&This->IFolderView2_iface, item, pidl);
} }
static HRESULT WINAPI IShellFolderView_fnRemoveObject( static HRESULT WINAPI IShellFolderView_fnRemoveObject(
@ -3013,10 +3209,8 @@ static HRESULT WINAPI IShellFolderView_fnGetObjectCount(
UINT *count) UINT *count)
{ {
IShellViewImpl *This = impl_from_IShellFolderView(iface); IShellViewImpl *This = impl_from_IShellFolderView(iface);
IFolderView *view = &This->IFolderView_iface;
TRACE("(%p)->(%p)\n", This, count); TRACE("(%p)->(%p)\n", This, count);
return IFolderView_ItemCount(view, SVGIO_ALLVIEW, (INT*)count); return IFolderView2_ItemCount(&This->IFolderView2_iface, SVGIO_ALLVIEW, (INT*)count);
} }
static HRESULT WINAPI IShellFolderView_fnSetObjectCount( static HRESULT WINAPI IShellFolderView_fnSetObjectCount(
@ -3516,7 +3710,7 @@ IShellView *IShellView_Constructor(IShellFolder *folder)
sv->IDropTarget_iface.lpVtbl = &droptargetvtbl; sv->IDropTarget_iface.lpVtbl = &droptargetvtbl;
sv->IDropSource_iface.lpVtbl = &dropsourcevtbl; sv->IDropSource_iface.lpVtbl = &dropsourcevtbl;
sv->IViewObject_iface.lpVtbl = &viewobjectvtbl; sv->IViewObject_iface.lpVtbl = &viewobjectvtbl;
sv->IFolderView_iface.lpVtbl = &folderviewvtbl; sv->IFolderView2_iface.lpVtbl = &folderviewvtbl;
sv->IShellFolderView_iface.lpVtbl = &shellfolderviewvtbl; sv->IShellFolderView_iface.lpVtbl = &shellfolderviewvtbl;
sv->IShellFolderViewDual3_iface.lpVtbl = &shellfolderviewdualvtbl; sv->IShellFolderViewDual3_iface.lpVtbl = &shellfolderviewdualvtbl;

View File

@ -536,6 +536,7 @@ static void test_IFolderView(void)
FOLDERSETTINGS settings; FOLDERSETTINGS settings;
IShellView *view; IShellView *view;
IShellBrowser *browser; IShellBrowser *browser;
IFolderView2 *fv2;
IFolderView *fv; IFolderView *fv;
HWND hwnd_view, hwnd_list; HWND hwnd_view, hwnd_list;
PITEMID_CHILD pidl; PITEMID_CHILD pidl;
@ -680,6 +681,11 @@ if (0)
"expected same refcount, got %d\n", ref2); "expected same refcount, got %d\n", ref2);
ok(desktop == folder, "\n"); ok(desktop == folder, "\n");
hr = IFolderView_QueryInterface(fv, &IID_IFolderView2, (void**)&fv2);
if (hr != S_OK)
win_skip("IFolderView2 is not supported.\n");
if (fv2) IFolderView2_Release(fv2);
IShellBrowser_Release(browser); IShellBrowser_Release(browser);
IFolderView_Release(fv); IFolderView_Release(fv);
IShellView_Release(view); IShellView_Release(view);

View File

@ -877,6 +877,126 @@ interface IFolderView : IUnknown
); );
} }
[v1_enum] enum tagSORTDIRECTION
{
SORT_DESCENDING = -1,
SORT_ASCENDING = 1
};
typedef int SORTDIRECTION;
typedef struct SORTCOLUMN
{
PROPERTYKEY propkey;
SORTDIRECTION direction;
} SORTCOLUMN;
typedef [v1_enum] enum FVTEXTTYPE
{
FVST_EMPTYTEXT = 0
} FVTEXTTYPE;
[
uuid(1af3a467-214f-4298-908e-06b03e0b39f9),
object,
pointer_default(unique)
]
interface IFolderView2 : IFolderView
{
HRESULT SetGroupBy(
[in] REFPROPERTYKEY key,
[in] BOOL ascending);
[local]
HRESULT GetGroupBy(
[out] PROPERTYKEY *pkey,
[out] BOOL *ascending);
[call_as(GetGroupBy)]
HRESULT RemoteGetGroupBy(
[out] PROPERTYKEY *pkey,
[out] BOOL *ascending);
HRESULT SetViewProperty(
[in] PCUITEMID_CHILD pidl,
[in] REFPROPERTYKEY propkey,
[in] REFPROPVARIANT propvar);
HRESULT GetViewProperty(
[in] PCUITEMID_CHILD pidl,
[in] REFPROPERTYKEY propkey,
[out] PROPVARIANT *propvar);
HRESULT SetTileViewProperties(
[in] PCUITEMID_CHILD pidl,
[in, string] LPCWSTR prop_list);
HRESULT SetExtendedTileViewProperties(
[in] PCUITEMID_CHILD pidl,
[in, string] LPCWSTR prop_list);
HRESULT SetText(
[in] FVTEXTTYPE type,
[in] LPCWSTR text);
HRESULT SetCurrentFolderFlags(
[in] DWORD mask,
[in] DWORD flags);
HRESULT GetCurrentFolderFlags([out] DWORD *flags);
HRESULT GetSortColumnCount([out] int *columns);
HRESULT SetSortColumns(
[in, size_is(count)] const SORTCOLUMN *columns,
[in] int count);
HRESULT GetSortColumns(
[out, size_is(count)] SORTCOLUMN *columns,
[in] int count);
HRESULT GetItem(
[in] int ittem,
[in] REFIID riid,
[out, iid_is(riid)] void **ppv);
HRESULT GetVisibleItem(
[in] int start,
[in] BOOL previous,
[out] int *item);
HRESULT GetSelectedItem(
[in] int start,
[out] int *item);
HRESULT GetSelection(
[in] BOOL none_implies_folder,
[out] IShellItemArray **array);
HRESULT GetSelectionState(
[in] PCUITEMID_CHILD pidl,
[out] DWORD *flags);
HRESULT InvokeVerbOnSelection([in, unique, string] LPCSTR verb);
HRESULT SetViewModeAndIconSize(
[in] FOLDERVIEWMODE mode,
[in] int size);
HRESULT GetViewModeAndIconSize(
[out] FOLDERVIEWMODE *mode,
[out] int *size);
HRESULT SetGroupSubsetCount([in] UINT visible_rows);
HRESULT GetGroupSubsetCount([out] UINT *visible_rows);
HRESULT SetRedraw([in] BOOL redraw);
HRESULT IsMoveInSameFolder();
HRESULT DoRename();
}
/***************************************************************************** /*****************************************************************************
* IShellBrowser interface * IShellBrowser interface
*/ */