4.30 beta

This commit is contained in:
Igor Pavlov
2005-11-18 00:00:00 +00:00
committed by Kornel Lesiński
parent bcd1db2f5a
commit e18587ba51
214 changed files with 5385 additions and 2712 deletions

View File

@@ -12,6 +12,7 @@
#include "Windows/PropVariant.h"
#include "FSDrives.h"
#include "PhysDriveFolder.h"
#include "NetFolder.h"
#include "SysIconUtils.h"
#include "LangUtils.h"
@@ -29,8 +30,8 @@ static const STATPROPSTG kProperties[] =
void CRootFolder::Init()
{
_computerName = LangLoadStringW(IDS_COMPUTER, 0x03020300);
_networkName = LangLoadStringW(IDS_NETWORK, 0x03020301);
_computerName = LangString(IDS_COMPUTER, 0x03020300);
_networkName = LangString(IDS_NETWORK, 0x03020301);
};
STDMETHODIMP CRootFolder::LoadItems()
@@ -39,13 +40,13 @@ STDMETHODIMP CRootFolder::LoadItems()
return S_OK;
}
STDMETHODIMP CRootFolder::GetNumberOfItems(UINT32 *numItems)
STDMETHODIMP CRootFolder::GetNumberOfItems(UInt32 *numItems)
{
*numItems = 2;
return S_OK;
}
STDMETHODIMP CRootFolder::GetProperty(UINT32 itemIndex, PROPID propID, PROPVARIANT *value)
STDMETHODIMP CRootFolder::GetProperty(UInt32 itemIndex, PROPID propID, PROPVARIANT *value)
{
NCOM::CPropVariant propVariant;
switch(propID)
@@ -56,7 +57,7 @@ STDMETHODIMP CRootFolder::GetProperty(UINT32 itemIndex, PROPID propID, PROPVARIA
case kpidName:
if (itemIndex == 0)
propVariant = _computerName;
else
else if (itemIndex == 1)
propVariant = _networkName;
break;
}
@@ -64,7 +65,7 @@ STDMETHODIMP CRootFolder::GetProperty(UINT32 itemIndex, PROPID propID, PROPVARIA
return S_OK;
}
STDMETHODIMP CRootFolder::BindToFolder(UINT32 index, IFolderFolder **resultFolder)
STDMETHODIMP CRootFolder::BindToFolder(UInt32 index, IFolderFolder **resultFolder)
{
if (index == 0)
{
@@ -73,13 +74,15 @@ STDMETHODIMP CRootFolder::BindToFolder(UINT32 index, IFolderFolder **resultFolde
fsDrivesSpec->Init();
*resultFolder = subFolder.Detach();
}
else
else if (index == 1)
{
CNetFolder *netFolderSpec = new CNetFolder;
CMyComPtr<IFolderFolder> subFolder = netFolderSpec;
netFolderSpec->Init(0, 0, _networkName + L'\\');
*resultFolder = subFolder.Detach();
}
else
return E_INVALIDARG;
return S_OK;
}
@@ -98,10 +101,10 @@ STDMETHODIMP CRootFolder::BindToFolder(const wchar_t *name, IFolderFolder **resu
}
if (name2 == _computerName ||
name2 == (_computerName + UString(L'\\')))
return BindToFolder(UINT32(0), resultFolder);
return BindToFolder(UInt32(0), resultFolder);
if (name2 == _networkName ||
name2 == (_networkName + UString(L'\\')))
return BindToFolder(UINT32(1), resultFolder);
return BindToFolder(UInt32(1), resultFolder);
if (name2 == UString(L'\\'))
{
CMyComPtr<IFolderFolder> subFolder = this;
@@ -112,24 +115,34 @@ STDMETHODIMP CRootFolder::BindToFolder(const wchar_t *name, IFolderFolder **resu
if (name2.Length () < 2)
return E_INVALIDARG;
if (name2[name2.Length () - 1] != L'\\')
name2 += L'\\';
CFSFolder *fsFolderSpec = new CFSFolder;
CMyComPtr<IFolderFolder> subFolder = fsFolderSpec;
if (fsFolderSpec->Init(name2, 0) == S_OK)
CMyComPtr<IFolderFolder> subFolder;
if (name2.Left(4) == L"\\\\.\\")
{
*resultFolder = subFolder.Detach();
return S_OK;
CPhysDriveFolder *folderSpec = new CPhysDriveFolder;
subFolder = folderSpec;
RINOK(folderSpec->Init(name2.Mid(4, 2)));
}
if (name2[0] == L'\\')
else
{
CNetFolder *netFolderSpec = new CNetFolder;
CMyComPtr<IFolderFolder> subFolder = netFolderSpec;
netFolderSpec->Init(name2);
*resultFolder = subFolder.Detach();
return S_OK;
if (name2[name2.Length () - 1] != L'\\')
name2 += L'\\';
CFSFolder *fsFolderSpec = new CFSFolder;
subFolder = fsFolderSpec;
if (fsFolderSpec->Init(name2, 0) != S_OK)
{
if (name2[0] == L'\\')
{
CNetFolder *netFolderSpec = new CNetFolder;
subFolder = netFolderSpec;
netFolderSpec->Init(name2);
}
else
return E_INVALIDARG;
}
}
return E_INVALIDARG;
*resultFolder = subFolder.Detach();
return S_OK;
}
STDMETHODIMP CRootFolder::BindToParentFolder(IFolderFolder **resultFolder)
@@ -143,13 +156,13 @@ STDMETHODIMP CRootFolder::GetName(BSTR *name)
return E_NOTIMPL;
}
STDMETHODIMP CRootFolder::GetNumberOfProperties(UINT32 *numProperties)
STDMETHODIMP CRootFolder::GetNumberOfProperties(UInt32 *numProperties)
{
*numProperties = sizeof(kProperties) / sizeof(kProperties[0]);
return S_OK;
}
STDMETHODIMP CRootFolder::GetPropertyInfo(UINT32 index,
STDMETHODIMP CRootFolder::GetPropertyInfo(UInt32 index,
BSTR *name, PROPID *propID, VARTYPE *varType)
{
if (index >= sizeof(kProperties) / sizeof(kProperties[0]))
@@ -175,7 +188,7 @@ STDMETHODIMP CRootFolder::GetPath(BSTR *path)
return S_OK;
}
STDMETHODIMP CRootFolder::GetSystemIconIndex(UINT32 index, INT32 *iconIndex)
STDMETHODIMP CRootFolder::GetSystemIconIndex(UInt32 index, INT32 *iconIndex)
{
int aCSIDL;
if (index == 0)