mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-14 00:11:37 -06:00
4.30 beta
This commit is contained in:
committed by
Kornel Lesiński
parent
bcd1db2f5a
commit
e18587ba51
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user