* register printer shell folder

* move printer column descriptors to resource files
* fix enumeration of printers


svn path=/trunk/; revision=35201
This commit is contained in:
Johannes Anderwald
2008-08-08 21:50:24 +00:00
parent a6c16c0cd1
commit 66105f44ec
34 changed files with 330 additions and 54 deletions

View File

@@ -602,6 +602,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
// special folders
IDS_DESKTOP "Ðàáîòíà ïëîù"
@@ -617,6 +622,9 @@ BEGIN
IDS_SELECT "Èçáîð"
IDS_OPEN "Îòâàðÿíå"
IDS_CREATELINK "Ñúçäàâàíå íà &âðúçêà"
IDS_COPY "Copy"
IDS_DELETE "Delete"
IDS_PROPERTIES "Properties"
IDS_CREATEFOLDER_DENIED "Ñúçäàâàíåòî íà íîâà ïàïêà å íåâúçìîæíî: íåäîñòàòú÷íè ïðàâà."
IDS_CREATEFOLDER_CAPTION "Ãðåøêà ïðè ñúçäàâàíå íà íîâà ïàïêà"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -601,6 +601,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Plocha"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -601,6 +601,12 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Schriftartentyp"
IDS_SHV_COLUMN_WORKGROUP "Arbeitsgruppe"
IDS_SHV_NETWORKLOCATION "Netzwerkstandort"
IDS_SHV_COLUMN_DOCUMENTS "Dokumente"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Kommentare"
IDS_SHV_COLUMN_LOCATION "Ort"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "ÅðéöÜíåéá åñãáóßáò"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -600,6 +600,12 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -601,6 +601,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Escritorio"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Työpöytä"

View File

@@ -603,6 +603,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Bureau"

View File

@@ -602,6 +602,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Asztal"

View File

@@ -600,6 +600,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "デスクトップ"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -578,6 +578,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Skrivebord"

View File

@@ -605,6 +605,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Pulpit"

View File

@@ -601,6 +601,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Área de trabalho"

View File

@@ -601,6 +601,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Ambiente de trabalho"

View File

@@ -598,6 +598,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Òèï øðèôòà"
IDS_SHV_COLUMN_WORKGROUP "Ðàáî÷àÿ ãðóïïà"
IDS_SHV_NETWORKLOCATION "Ñåòåâîå ðàñïîëîæåíèå"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Ðàáî÷èé ñòîë"

View File

@@ -605,6 +605,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Pracovná plocha"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -599,6 +599,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Masaüstü"

View File

@@ -600,6 +600,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Ðîáî÷èé ñò³ë"

View File

@@ -588,6 +588,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "桌面"

View File

@@ -600,6 +600,11 @@ BEGIN
IDS_SHV_COLUMN_FONTTYPE "Fonttype"
IDS_SHV_COLUMN_WORKGROUP "Workgroup"
IDS_SHV_NETWORKLOCATION "Network Location"
IDS_SHV_COLUMN_DOCUMENTS "Documents"
IDS_SHV_COLUMN_STATUS "Status"
IDS_SHV_COLUMN_COMMENTS "Comments"
IDS_SHV_COLUMN_LOCATION "Location"
IDS_SHV_COLUMN_MODEL "Model"
/* special folders */
IDS_DESKTOP "Desktop"

View File

@@ -1387,21 +1387,7 @@ LPITEMIDLIST _ILCreateControlPanel(void)
LPITEMIDLIST _ILCreatePrinters(void)
{
LPITEMIDLIST parent = _ILCreateGuid(PT_GUID, &CLSID_MyComputer), ret = NULL;
TRACE("()\n");
if (parent)
{
LPITEMIDLIST printers = _ILCreateGuid(PT_YAGUID, &CLSID_Printers);
if (printers)
{
ret = ILCombine(parent, printers);
SHFree(printers);
}
SHFree(parent);
}
return ret;
return _ILCreateGuid(PT_YAGUID, &CLSID_Printers);
}
LPITEMIDLIST _ILCreateNetwork(void)

View File

@@ -122,11 +122,18 @@ typedef struct tagPIDLCPanelStruct
typedef struct tagPIDLFontStruct
{
BYTE dummy;
WORD offsFile;
WCHAR szName[1]; /*10*/ /* terminated by 0x00, followed by display name and comment string */
BYTE dummy;
WORD offsFile;
WCHAR szName[1];
} PIDLFontStruct;
typedef struct tagPIDLPrinterStruct
{
BYTE dummy;
DWORD Attributes;
WORD offsServer;
WCHAR szName[1];
}PIDLPrinterStruct;
typedef struct tagGUIDStruct
{
@@ -190,6 +197,7 @@ typedef struct tagPIDLDATA
struct tagPIDLCPanelStruct cpanel;
struct tagValueW valueW;
struct tagPIDLFontStruct cfont;
struct tagPIDLPrinterStruct cprinter;
}u;
} PIDLDATA, *LPPIDLDATA;
#include "poppack.h"

View File

@@ -799,13 +799,11 @@ static struct regsvr_namespace const namespace_extensions_list[] = {
wszControlPanel,
wszFonts
},
#if 0
{
&CLSID_Printers,
wszControlPanel,
wszPrinters
},
#endif
{ NULL }
};

View File

@@ -732,9 +732,7 @@ static HRESULT WINAPI ISF_Fonts_fnGetDetailsOf (IShellFolder2 * iface,
break;
}
FIXME ("(%p)->(%p %i %p)\n", This, pidl, iColumn, psd);
return E_NOTIMPL;
return E_FAIL;
}
static HRESULT WINAPI ISF_Fonts_fnMapColumnToSCID (IShellFolder2 * iface,

View File

@@ -71,6 +71,26 @@ typedef struct
#define _IExtractIconA_Offset ((int)(&(((IExtractIconWImpl*)0)->lpvtblExtractIconA)))
#define _ICOM_THIS_From_IExtractIconA(class, name) class* This = (class*)(((char*)name)-_IExtractIconA_Offset);
static shvheader PrinterSFHeader[] = {
{IDS_SHV_COLUMN8, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
{IDS_SHV_COLUMN_DOCUMENTS , SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
{IDS_SHV_COLUMN_STATUS, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
{IDS_SHV_COLUMN_COMMENTS, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
{IDS_SHV_COLUMN_LOCATION, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
{IDS_SHV_COLUMN_MODEL, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15}
};
#define COLUMN_NAME 0
#define COLUMN_DOCUMENTS 1
#define COLUMN_STATUS 2
#define COLUMN_COMMENTS 3
#define COLUMN_LOCATION 4
#define COLUMN_MODEL 5
#define PrinterSHELLVIEWCOLUMNS (6)
/**************************************************************************
* IExtractIconW_QueryInterface
*/
@@ -416,6 +436,61 @@ static HRESULT WINAPI ISF_Printers_fnParseDisplayName (IShellFolder2 * iface,
return E_NOTIMPL;
}
static LPITEMIDLIST _ILCreatePrinterItem(PRINTER_INFO_4W *pi)
{
PIDLDATA tmp;
LPITEMIDLIST pidl;
PIDLPrinterStruct * p;
int size0 = (char*)&tmp.u.cprinter.szName-(char*)&tmp.u.cprinter;
int size = size0;
tmp.type = 0x00;
tmp.u.cprinter.dummy = 0xFF;
if (pi->pPrinterName)
tmp.u.cprinter.offsServer = wcslen(pi->pPrinterName) + 1;
else
tmp.u.cprinter.offsServer = 1;
size += tmp.u.cprinter.offsServer * sizeof(WCHAR);
if (pi->pServerName)
size += ( + wcslen(pi->pServerName) + 1) * sizeof(WCHAR);
else
size += sizeof(WCHAR);
pidl = (LPITEMIDLIST)SHAlloc(size + 4);
if (!pidl)
return pidl;
pidl->mkid.cb = size+2;
memcpy(pidl->mkid.abID, &tmp, 2+size0);
p = &((PIDLDATA*)pidl->mkid.abID)->u.cprinter;
p->Attributes = pi->Attributes;
if (pi->pPrinterName)
wcscpy(p->szName, pi->pPrinterName);
else
p->szName[0] = L'\0';
if (pi->pServerName)
wcscpy(p->szName + p->offsServer, pi->pServerName);
else
p->szName[p->offsServer] = L'\0';
*(WORD*)((char*)pidl+(size+2)) = 0;
return pidl;
}
static PIDLPrinterStruct * _ILGetPrinterStruct(LPCITEMIDLIST pidl)
{
LPPIDLDATA pdata = _ILGetDataPointer(pidl);
if (pdata && pdata->type==0x00)
return (PIDLPrinterStruct*)&(pdata->u.cfont);
return NULL;
}
/**************************************************************************
* CreatePrintersEnumList()
*/
@@ -428,10 +503,13 @@ static BOOL CreatePrintersEnumList(IEnumIDList *list, DWORD dwFlags)
/* enumerate the folders */
if (dwFlags & SHCONTF_NONFOLDERS)
{
DWORD needed, num, i;
DWORD needed = 0, num = 0, i;
PRINTER_INFO_4W *pi;
EnumPrintersW(PRINTER_ENUM_LOCAL, NULL, 4, NULL, 0, &needed, &num);
if (!needed)
return ret;
pi = HeapAlloc(GetProcessHeap(), 0, needed);
if(!EnumPrintersW(PRINTER_ENUM_LOCAL, NULL, 4, (LPBYTE)pi, needed, &needed, &num)) {
HeapFree(GetProcessHeap(), 0, pi);
@@ -439,13 +517,13 @@ static BOOL CreatePrintersEnumList(IEnumIDList *list, DWORD dwFlags)
}
for(i = 0; i < num; i++) {
DWORD len = strlenW(pi[i].pPrinterName);
LPITEMIDLIST pidl = _ILAlloc(PT_VALUEW, (len + 1) * sizeof(WCHAR));
LPPIDLDATA data = _ILGetDataPointer(pidl);
memcpy(data->u.valueW.name, pi[i].pPrinterName, (len + 1) * sizeof(WCHAR));
AddToEnumList(list, pidl);
LPITEMIDLIST pidl = _ILCreatePrinterItem(&pi[i]);
if (pidl)
{
if (!AddToEnumList(list, pidl))
SHFree(pidl);
}
}
HeapFree(GetProcessHeap(), 0, pi);
}
return ret;
@@ -480,10 +558,10 @@ static HRESULT WINAPI ISF_Printers_fnBindToObject (IShellFolder2 * iface,
{
IGenericSFImpl *This = (IGenericSFImpl *)iface;
FIXME ("(%p)->(pidl=%p,%p,%s,%p)\n",
This, pidl, pbcReserved, shdebugstr_guid (riid), ppvOut);
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", This,
pidl, pbcReserved, shdebugstr_guid (riid), ppvOut);
return E_NOTIMPL;
return SHELL32_BindToChild (This->pidlRoot, NULL, pidl, riid, ppvOut);
}
/**************************************************************************
@@ -508,9 +586,12 @@ static HRESULT WINAPI ISF_Printers_fnCompareIDs (IShellFolder2 * iface,
LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
{
IGenericSFImpl *This = (IGenericSFImpl *)iface;
int nReturn;
FIXME ("(%p)->(0x%08lx,pidl1=%p,pidl2=%p): stub\n", This, lParam, pidl1, pidl2);
return E_NOTIMPL;
TRACE ("(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n", This, lParam, pidl1, pidl2);
nReturn = SHELL32_CompareIDs (_IShellFolder_ (This), lParam, pidl1, pidl2);
TRACE ("-- %i\n", nReturn);
return nReturn;
}
/**************************************************************************
@@ -519,12 +600,40 @@ static HRESULT WINAPI ISF_Printers_fnCompareIDs (IShellFolder2 * iface,
static HRESULT WINAPI ISF_Printers_fnCreateViewObject (IShellFolder2 * iface,
HWND hwndOwner, REFIID riid, LPVOID * ppvOut)
{
LPSHELLVIEW pShellView;
HRESULT hr = E_INVALIDARG;
IGenericSFImpl *This = (IGenericSFImpl *)iface;
FIXME ("(%p)->(hwnd=%p,%s,%p): stub\n",
This, hwndOwner, shdebugstr_guid (riid), ppvOut);
TRACE ("(%p)->(hwnd=%p,%s,%p)\n", This,
hwndOwner, shdebugstr_guid (riid), ppvOut);
return E_NOTIMPL;
if (!ppvOut)
return hr;
*ppvOut = NULL;
if (IsEqualIID (riid, &IID_IDropTarget))
{
WARN ("IDropTarget not implemented\n");
hr = E_NOTIMPL;
}
else if (IsEqualIID (riid, &IID_IContextMenu))
{
WARN ("IContextMenu not implemented\n");
hr = E_NOTIMPL;
}
else if (IsEqualIID (riid, &IID_IShellView))
{
pShellView = IShellView_Constructor ((IShellFolder *) iface);
if (pShellView)
{
hr = IShellView_QueryInterface (pShellView, riid, ppvOut);
IShellView_Release (pShellView);
}
}
TRACE ("-- (%p)->(interface=%p)\n", This, ppvOut);
return hr;
}
/**************************************************************************
@@ -594,8 +703,7 @@ static HRESULT WINAPI ISF_Printers_fnGetDisplayNameOf (IShellFolder2 * iface,
LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet)
{
IGenericSFImpl *This = (IGenericSFImpl *)iface;
WCHAR *name;
DWORD len;
PIDLPrinterStruct * p;
TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", This, pidl, dwFlags, strRet);
pdump (pidl);
@@ -603,13 +711,15 @@ static HRESULT WINAPI ISF_Printers_fnGetDisplayNameOf (IShellFolder2 * iface,
if (!strRet)
return E_INVALIDARG;
name = _ILGetDataPointer(pidl)->u.valueW.name;
len = strlenW(name);
p = _ILGetPrinterStruct(pidl);
if (!p)
return E_INVALIDARG;
strRet->uType = STRRET_WSTR;
strRet->u.pOleStr = SHAlloc((len + 1) * sizeof(WCHAR));
memcpy(strRet->u.pOleStr, name, (len + 1) * sizeof(WCHAR));
strRet->u.pOleStr = SHAlloc(p->offsServer * sizeof(WCHAR));
if (!strRet->u.pOleStr)
return E_OUTOFMEMORY;
memcpy((LPVOID)strRet->u.pOleStr, (LPVOID)p->szName, p->offsServer * sizeof(WCHAR));
TRACE("ret %s\n", debugstr_w(strRet->u.pOleStr));
return S_OK;
@@ -659,20 +769,21 @@ static HRESULT WINAPI ISF_Printers_fnEnumSearches (IShellFolder2 *iface,
static HRESULT WINAPI ISF_Printers_fnGetDefaultColumn (IShellFolder2 * iface,
DWORD dwRes, ULONG * pSort, ULONG * pDisplay)
{
IGenericSFImpl *This = (IGenericSFImpl *)iface;
if (pSort)
*pSort = 0;
if (pDisplay)
*pDisplay = 0;
FIXME ("(%p): stub\n", This);
return E_NOTIMPL;
return S_OK;
}
static HRESULT WINAPI ISF_Printers_fnGetDefaultColumnState (
IShellFolder2 * iface, UINT iColumn, DWORD * pcsFlags)
{
IGenericSFImpl *This = (IGenericSFImpl *)iface;
if (!pcsFlags || iColumn >= PrinterSHELLVIEWCOLUMNS)
return E_INVALIDARG;
*pcsFlags = PrinterSFHeader[iColumn].pcsFlags;
return S_OK;
FIXME ("(%p): stub\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI ISF_Printers_fnGetDetailsEx (IShellFolder2 * iface,
@@ -688,8 +799,33 @@ static HRESULT WINAPI ISF_Printers_fnGetDetailsOf (IShellFolder2 * iface,
LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS * psd)
{
IGenericSFImpl *This = (IGenericSFImpl *)iface;
WCHAR buffer[MAX_PATH] = {0};
HRESULT hr = E_FAIL;
FIXME ("(%p)->(%p %i %p): stub\n", This, pidl, iColumn, psd);
TRACE("(%p)->(%p %i %p): stub\n", This, pidl, iColumn, psd);
if (iColumn >= PrinterSHELLVIEWCOLUMNS)
return E_FAIL;
psd->fmt = PrinterSFHeader[iColumn].fmt;
psd->cxChar = PrinterSFHeader[iColumn].cxChar;
if (pidl == NULL)
{
psd->str.uType = STRRET_WSTR;
if (LoadStringW(shell32_hInstance, PrinterSFHeader[iColumn].colnameid, buffer, MAX_PATH))
hr = SHStrDupW(buffer, &psd->str.u.pOleStr);
return hr;
}
if (iColumn == COLUMN_NAME)
{
psd->str.uType = STRRET_WSTR;
return IShellFolder2_GetDisplayNameOf(iface, pidl, SHGDN_NORMAL, &psd->str);
}
psd->str.uType = STRRET_CSTR;
psd->str.u.cStr[0] = '\0';
return E_NOTIMPL;
}

View File

@@ -153,6 +153,11 @@
#define IDS_COPY 315
#define IDS_DELETE 316
#define IDS_PROPERTIES 317
#define IDS_SHV_COLUMN_DOCUMENTS 318
#define IDS_SHV_COLUMN_STATUS 319
#define IDS_SHV_COLUMN_COMMENTS 320
#define IDS_SHV_COLUMN_LOCATION 321
#define IDS_SHV_COLUMN_MODEL 322
/* Note: this string is referenced from the registry */
#define IDS_RECYCLEBIN_FOLDER_NAME 8964