taskschd: Implement ITaskFolderCollection::get_Item.
This commit is contained in:
parent
18ccad8351
commit
eeffc8f073
@ -127,14 +127,65 @@ static HRESULT WINAPI folders_Invoke(ITaskFolderCollection *iface, DISPID dispid
|
|||||||
|
|
||||||
static HRESULT WINAPI folders_get_Count(ITaskFolderCollection *iface, LONG *count)
|
static HRESULT WINAPI folders_get_Count(ITaskFolderCollection *iface, LONG *count)
|
||||||
{
|
{
|
||||||
FIXME("%p,%p: stub\n", iface, count);
|
TaskFolderCollection *folders = impl_from_ITaskFolderCollection(iface);
|
||||||
return E_NOTIMPL;
|
|
||||||
|
TRACE("%p,%p\n", iface, count);
|
||||||
|
|
||||||
|
if (!count) return E_POINTER;
|
||||||
|
|
||||||
|
*count = folders->count;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static LONG get_var_int(const VARIANT *var)
|
||||||
|
{
|
||||||
|
switch(V_VT(var))
|
||||||
|
{
|
||||||
|
case VT_I1:
|
||||||
|
case VT_UI1:
|
||||||
|
return V_UI1(var);
|
||||||
|
|
||||||
|
case VT_I2:
|
||||||
|
case VT_UI2:
|
||||||
|
return V_UI2(var);
|
||||||
|
|
||||||
|
case VT_I4:
|
||||||
|
case VT_UI4:
|
||||||
|
return V_UI4(var);
|
||||||
|
|
||||||
|
case VT_I8:
|
||||||
|
case VT_UI8:
|
||||||
|
return V_UI8(var);
|
||||||
|
|
||||||
|
case VT_INT:
|
||||||
|
case VT_UINT:
|
||||||
|
return V_UINT(var);
|
||||||
|
|
||||||
|
default:
|
||||||
|
FIXME("unsupported variant type %d\n", V_VT(var));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI folders_get_Item(ITaskFolderCollection *iface, VARIANT index, ITaskFolder **folder)
|
static HRESULT WINAPI folders_get_Item(ITaskFolderCollection *iface, VARIANT index, ITaskFolder **folder)
|
||||||
{
|
{
|
||||||
FIXME("%p,%s,%p: stub\n", iface, debugstr_variant(&index), folder);
|
TaskFolderCollection *folders = impl_from_ITaskFolderCollection(iface);
|
||||||
return E_NOTIMPL;
|
LONG idx;
|
||||||
|
|
||||||
|
TRACE("%p,%s,%p\n", iface, debugstr_variant(&index), folder);
|
||||||
|
|
||||||
|
if (!folder) return E_POINTER;
|
||||||
|
|
||||||
|
if (V_VT(&index) == VT_BSTR)
|
||||||
|
return TaskFolder_create(folders->path, V_BSTR(&index), folder, FALSE);
|
||||||
|
|
||||||
|
idx = get_var_int(&index);
|
||||||
|
/* collections are 1 based */
|
||||||
|
if (idx < 1 || idx > folders->count)
|
||||||
|
return E_INVALIDARG;
|
||||||
|
|
||||||
|
return TaskFolder_create(folders->path, folders->list[idx - 1], folder, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI folders_get__NewEnum(ITaskFolderCollection *iface, IUnknown **penum)
|
static HRESULT WINAPI folders_get__NewEnum(ITaskFolderCollection *iface, IUnknown **penum)
|
||||||
|
@ -455,11 +455,12 @@ static void test_FolderCollection(void)
|
|||||||
|
|
||||||
ITaskFolder_Release(folder);
|
ITaskFolder_Release(folder);
|
||||||
|
|
||||||
|
hr = ITaskFolderCollection_get_Count(folders, NULL);
|
||||||
|
ok (hr == E_POINTER, "expected E_POINTER, got %#x\n", hr);
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
hr = ITaskFolderCollection_get_Count(folders, &count);
|
hr = ITaskFolderCollection_get_Count(folders, &count);
|
||||||
todo_wine
|
|
||||||
ok(hr == S_OK, "get_Count error %#x\n", hr);
|
ok(hr == S_OK, "get_Count error %#x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(count == 2, "expected 2, got %d\n", count);
|
ok(count == 2, "expected 2, got %d\n", count);
|
||||||
|
|
||||||
hr = ITaskFolder_CreateFolder(root, Wine_Folder3, v_null, &subfolder);
|
hr = ITaskFolder_CreateFolder(root, Wine_Folder3, v_null, &subfolder);
|
||||||
@ -468,12 +469,8 @@ todo_wine
|
|||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
hr = ITaskFolderCollection_get_Count(folders, &count);
|
hr = ITaskFolderCollection_get_Count(folders, &count);
|
||||||
todo_wine
|
|
||||||
ok(hr == S_OK, "get_Count error %#x\n", hr);
|
ok(hr == S_OK, "get_Count error %#x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(count == 2, "expected 2, got %d\n", count);
|
ok(count == 2, "expected 2, got %d\n", count);
|
||||||
/* FIXME: remove once implemented */
|
|
||||||
if (!count) goto failed;
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof(vt)/sizeof(vt[0]); i++)
|
for (i = 0; i < sizeof(vt)/sizeof(vt[0]); i++)
|
||||||
{
|
{
|
||||||
@ -547,7 +544,10 @@ todo_wine
|
|||||||
ok(hr == E_NOINTERFACE, "expected E_NOINTERFACE, got %#x\n", hr);
|
ok(hr == E_NOINTERFACE, "expected E_NOINTERFACE, got %#x\n", hr);
|
||||||
|
|
||||||
hr = ITaskFolderCollection_get__NewEnum(folders, &unknown);
|
hr = ITaskFolderCollection_get__NewEnum(folders, &unknown);
|
||||||
|
todo_wine
|
||||||
ok(hr == S_OK, "get__NewEnum error %#x\n", hr);
|
ok(hr == S_OK, "get__NewEnum error %#x\n", hr);
|
||||||
|
/* FIXME: remove once implemented */
|
||||||
|
if (hr != S_OK) goto failed;
|
||||||
hr = IUnknown_QueryInterface(unknown, &IID_IEnumUnknown, (void **)&enumvar);
|
hr = IUnknown_QueryInterface(unknown, &IID_IEnumUnknown, (void **)&enumvar);
|
||||||
ok(hr == E_NOINTERFACE, "expected E_NOINTERFACE, got %#x\n", hr);
|
ok(hr == E_NOINTERFACE, "expected E_NOINTERFACE, got %#x\n", hr);
|
||||||
hr = IUnknown_QueryInterface(unknown, &IID_IEnumVARIANT, (void **)&enumvar);
|
hr = IUnknown_QueryInterface(unknown, &IID_IEnumVARIANT, (void **)&enumvar);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user