mirror of
https://github.com/reactos/reactos.git
synced 2025-04-29 18:48:53 +00:00
* fully implement enumeration of details for virtual font shell folder
svn path=/trunk/; revision=35194
This commit is contained in:
parent
0ceea1dacb
commit
eb7b80a949
1 changed files with 17 additions and 3 deletions
|
@ -217,7 +217,7 @@ static LPITEMIDLIST _ILCreateFontItem(LPWSTR pszFont, LPWSTR pszFile)
|
||||||
tmp.u.cfont.dummy = 0xFF;
|
tmp.u.cfont.dummy = 0xFF;
|
||||||
tmp.u.cfont.offsFile = wcslen(pszFont) + 1;
|
tmp.u.cfont.offsFile = wcslen(pszFont) + 1;
|
||||||
|
|
||||||
size = (tmp.u.cfont.offsFile + wcslen(pszFile) + 1) * sizeof(WCHAR);
|
size += (tmp.u.cfont.offsFile + wcslen(pszFile) + 1) * sizeof(WCHAR);
|
||||||
|
|
||||||
pidl = (LPITEMIDLIST)SHAlloc(size + 4);
|
pidl = (LPITEMIDLIST)SHAlloc(size + 4);
|
||||||
if (!pidl)
|
if (!pidl)
|
||||||
|
@ -639,6 +639,7 @@ static HRESULT WINAPI ISF_Fonts_fnGetDetailsOf (IShellFolder2 * iface,
|
||||||
PIDLFontStruct * pfont;
|
PIDLFontStruct * pfont;
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
LARGE_INTEGER FileSize;
|
LARGE_INTEGER FileSize;
|
||||||
|
SHFILEINFOW fi;
|
||||||
|
|
||||||
TRACE("(%p, %p, %d, %p)\n", This, pidl, iColumn, psd);
|
TRACE("(%p, %p, %d, %p)\n", This, pidl, iColumn, psd);
|
||||||
|
|
||||||
|
@ -668,13 +669,26 @@ static HRESULT WINAPI ISF_Fonts_fnGetDetailsOf (IShellFolder2 * iface,
|
||||||
switch(iColumn)
|
switch(iColumn)
|
||||||
{
|
{
|
||||||
case COLUMN_TYPE:
|
case COLUMN_TYPE:
|
||||||
|
pfont = _ILGetFontStruct(pidl);
|
||||||
|
if (pfont)
|
||||||
|
{
|
||||||
|
if (SHGetFileInfoW(pfont->szName + pfont->offsFile, 0, &fi, sizeof(fi), SHGFI_TYPENAME))
|
||||||
|
{
|
||||||
|
psd->str.u.pOleStr = CoTaskMemAlloc((wcslen(fi.szTypeName)+1) * sizeof(WCHAR));
|
||||||
|
if (!psd->str.u.pOleStr)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
wcscpy(psd->str.u.pOleStr, fi.szTypeName);
|
||||||
|
psd->str.uType = STRRET_WSTR;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case COLUMN_SIZE:
|
case COLUMN_SIZE:
|
||||||
pfont = _ILGetFontStruct(pidl);
|
pfont = _ILGetFontStruct(pidl);
|
||||||
if (pfont)
|
if (pfont)
|
||||||
{
|
{
|
||||||
hFile = CreateFileW(pfont->szName + pfont->offsFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
|
hFile = CreateFileW(pfont->szName + pfont->offsFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
if (hFile)
|
if (hFile != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
if (GetFileSizeEx(hFile, &FileSize))
|
if (GetFileSizeEx(hFile, &FileSize))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue