Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '7zip/FileManager/NetFolder.cpp')
-rwxr-xr-x7zip/FileManager/NetFolder.cpp63
1 files changed, 30 insertions, 33 deletions
diff --git a/7zip/FileManager/NetFolder.cpp b/7zip/FileManager/NetFolder.cpp
index 78911e64..51ee5372 100755
--- a/7zip/FileManager/NetFolder.cpp
+++ b/7zip/FileManager/NetFolder.cpp
@@ -43,9 +43,9 @@ void CNetFolder::Init(const UString &path)
}
Init(0, 0 , L"");
*/
- CResource resource;
+ CResourceW resource;
resource.RemoteNameIsDefined = true;
- resource.RemoteName = GetSystemString(path.Left(path.Length() - 1));
+ resource.RemoteName = path.Left(path.Length() - 1);
resource.ProviderIsDefined = false;
resource.LocalNameIsDefined = false;
resource.CommentIsDefined = false;
@@ -53,18 +53,17 @@ void CNetFolder::Init(const UString &path)
resource.Scope = RESOURCE_GLOBALNET;
resource.Usage = 0;
resource.DisplayType = 0;
- CResource aDestResource;
- CSysString aSystemPathPart;
- DWORD result = GetResourceInformation(resource, aDestResource,
- aSystemPathPart);
+ CResourceW destResource;
+ UString systemPathPart;
+ DWORD result = GetResourceInformation(resource, destResource, systemPathPart);
if (result == NO_ERROR)
- Init(&aDestResource, 0, path);
+ Init(&destResource, 0, path);
else
Init(0, 0 , L"");
return;
}
-void CNetFolder::Init(const NWindows::NNet::CResource *netResource,
+void CNetFolder::Init(const NWindows::NNet::CResourceW *netResource,
IFolderFolder *parentFolder, const UString &path)
{
_path = path;
@@ -76,7 +75,7 @@ void CNetFolder::Init(const NWindows::NNet::CResource *netResource,
_netResourcePointer = &_netResource;
// if (_netResource.DisplayType == RESOURCEDISPLAYTYPE_SERVER)
- _path = GetUnicodeString(_netResource.RemoteName) + L'\\';
+ _path = _netResource.RemoteName + L'\\';
}
_parentFolder = parentFolder;
}
@@ -113,7 +112,7 @@ STDMETHODIMP CNetFolder::LoadItems()
{
if (!resource.RemoteNameIsDefined) // For Win 98, I don't know what's wrong
resource.RemoteName = resource.Comment;
- resource.Name = GetUnicodeString(resource.RemoteName);
+ resource.Name = resource.RemoteName;
int aPos = resource.Name.ReverseFind(L'\\');
if (aPos >= 0)
{
@@ -128,6 +127,8 @@ STDMETHODIMP CNetFolder::LoadItems()
return result;
}
+ /*
+ It's too slow for some systems.
if (_netResourcePointer && _netResource.DisplayType == RESOURCEDISPLAYTYPE_SERVER)
{
for (char c = 'a'; c <= 'z'; c++)
@@ -135,11 +136,11 @@ STDMETHODIMP CNetFolder::LoadItems()
CResourceEx resource;
resource.Name = UString(wchar_t(c)) + L'$';
resource.RemoteNameIsDefined = true;
- resource.RemoteName = GetSystemString(_path + resource.Name);
+ resource.RemoteName = _path + resource.Name;
- NFile::NFind::CFindFile aFindFile;
- NFile::NFind::CFileInfo aFileInfo;
- if (!aFindFile.FindFirst(resource.RemoteName + CSysString(TEXT("\\*")), aFileInfo))
+ NFile::NFind::CFindFile findFile;
+ NFile::NFind::CFileInfoW fileInfo;
+ if (!findFile.FindFirst(resource.RemoteName + UString(L"\\*"), fileInfo))
continue;
resource.Usage = RESOURCEUSAGE_CONNECTABLE;
resource.LocalNameIsDefined = false;
@@ -148,17 +149,18 @@ STDMETHODIMP CNetFolder::LoadItems()
_items.Add(resource);
}
}
+ */
return S_OK;
}
-STDMETHODIMP CNetFolder::GetNumberOfItems(UINT32 *numItems)
+STDMETHODIMP CNetFolder::GetNumberOfItems(UInt32 *numItems)
{
*numItems = _items.Size();
return S_OK;
}
-STDMETHODIMP CNetFolder::GetProperty(UINT32 itemIndex, PROPID propID, PROPVARIANT *value)
+STDMETHODIMP CNetFolder::GetProperty(UInt32 itemIndex, PROPID propID, PROPVARIANT *value)
{
NCOM::CPropVariant propVariant;
const CResourceEx &item = _items[itemIndex];
@@ -173,25 +175,22 @@ STDMETHODIMP CNetFolder::GetProperty(UINT32 itemIndex, PROPID propID, PROPVARIAN
break;
case kpidLocalName:
if (item.LocalNameIsDefined)
- propVariant = GetUnicodeString(item.LocalName);
+ propVariant = item.LocalName;
break;
case kpidComment:
if (item.CommentIsDefined)
- propVariant = GetUnicodeString(item.Comment);
+ propVariant = item.Comment;
break;
case kpidProvider:
if (item.ProviderIsDefined)
- propVariant = GetUnicodeString(item.Provider);
+ propVariant = item.Provider;
break;
}
propVariant.Detach(value);
return S_OK;
}
-static inline UINT GetCurrentCodePage()
- { return ::AreFileApisANSI() ? CP_ACP : CP_OEMCP; }
-
-STDMETHODIMP CNetFolder::BindToFolder(UINT32 index, IFolderFolder **resultFolder)
+STDMETHODIMP CNetFolder::BindToFolder(UInt32 index, IFolderFolder **resultFolder)
{
*resultFolder = 0;
const CResourceEx &resource = _items[index];
@@ -200,16 +199,14 @@ STDMETHODIMP CNetFolder::BindToFolder(UINT32 index, IFolderFolder **resultFolder
{
CFSFolder *fsFolderSpec = new CFSFolder;
CMyComPtr<IFolderFolder> subFolder = fsFolderSpec;
- RINOK(fsFolderSpec->Init(
- GetUnicodeString(resource.RemoteName, GetCurrentCodePage())
- + L'\\', this));
+ RINOK(fsFolderSpec->Init(resource.RemoteName + L'\\', this));
*resultFolder = subFolder.Detach();
}
else
{
CNetFolder *netFolder = new CNetFolder;
CMyComPtr<IFolderFolder> subFolder = netFolder;
- netFolder->Init(&resource, this, GetUnicodeString(resource.Name) + L'\\');
+ netFolder->Init(&resource, this, resource.Name + L'\\');
*resultFolder = subFolder.Detach();
}
return S_OK;
@@ -231,7 +228,7 @@ STDMETHODIMP CNetFolder::BindToParentFolder(IFolderFolder **resultFolder)
}
if (_netResourcePointer != 0)
{
- CResource resourceParent;
+ CResourceW resourceParent;
DWORD result = GetResourceParent(_netResource, resourceParent);
if (result != NO_ERROR)
return result;
@@ -257,13 +254,13 @@ STDMETHODIMP CNetFolder::GetName(BSTR *name)
*/
}
-STDMETHODIMP CNetFolder::GetNumberOfProperties(UINT32 *numProperties)
+STDMETHODIMP CNetFolder::GetNumberOfProperties(UInt32 *numProperties)
{
*numProperties = sizeof(kProperties) / sizeof(kProperties[0]);
return S_OK;
}
-STDMETHODIMP CNetFolder::GetPropertyInfo(UINT32 index,
+STDMETHODIMP CNetFolder::GetPropertyInfo(UInt32 index,
BSTR *name, PROPID *propID, VARTYPE *varType)
{
if (index >= sizeof(kProperties) / sizeof(kProperties[0]))
@@ -289,12 +286,12 @@ STDMETHODIMP CNetFolder::GetPath(BSTR *path)
return S_OK;
}
-STDMETHODIMP CNetFolder::GetSystemIconIndex(UINT32 index, INT32 *iconIndex)
+STDMETHODIMP CNetFolder::GetSystemIconIndex(UInt32 index, INT32 *iconIndex)
{
- if (index >= (UINT32)_items.Size())
+ if (index >= (UInt32)_items.Size())
return E_INVALIDARG;
*iconIndex = 0;
- const CResource &resource = _items[index];
+ const CResourceW &resource = _items[index];
int iconIndexTemp;
if (resource.DisplayType == RESOURCEDISPLAYTYPE_SERVER ||
resource.Usage == RESOURCEUSAGE_CONNECTABLE)