4.58 beta

This commit is contained in:
Igor Pavlov
2008-05-05 00:00:00 +00:00
committed by Kornel Lesiński
parent bd1fa36322
commit 3901bf0ab8
326 changed files with 10643 additions and 14913 deletions
+62 -33
View File
@@ -9,7 +9,6 @@
#include "Windows/PropVariant.h"
#include "Windows/PropVariantConversions.h"
// #include "Windows/COM.h"
#include "../Common/PropIDUtils.h"
#include "../../PropID.h"
@@ -19,26 +18,56 @@
using namespace NWindows;
static UString ConvertSizeToString(UINT64 value)
static UString ConvertSizeToStringShort(UInt64 value)
{
wchar_t s[64];
if (value < (UINT64(10000) << 0) /*&& ((value & 0x3FF) != 0 || value == 0)*/)
wchar_t s[32];
wchar_t c, c2 = L'B';
if (value < (UInt64)10000)
{
ConvertUInt64ToString(value, s);
return UString(s) + L" B";
c = L'B';
c2 = L'\0';
}
if (value < (UINT64(10000) << 10))
else if (value < ((UInt64)10000 << 10))
{
ConvertUInt64ToString((value >> 10), s);
return UString(s) + L" K";
value >>= 10;
c = L'K';
}
if (value < (UINT64(10000) << 20))
else if (value < ((UInt64)10000 << 20))
{
ConvertUInt64ToString((value >> 20), s);
return UString(s) + L" M";
value >>= 20;
c = L'M';
}
ConvertUInt64ToString((value >> 30), s);
return UString(s) + L" G";
else
{
value >>= 30;
c = L'G';
}
ConvertUInt64ToString(value, s);
int p = MyStringLen(s);
s[p++] = L' ';
s[p++] = c;
s[p++] = c2;
s[p++] = L'\0';
return s;
}
static UString ConvertSizeToString(UInt64 value)
{
wchar_t s[32];
ConvertUInt64ToString(value, s);
int i = MyStringLen(s);
int pos = sizeof(s) / sizeof(s[0]);
s[--pos] = L'\0';
while (i > 3)
{
s[--pos] = s[--i];
s[--pos] = s[--i];
s[--pos] = s[--i];
s[--pos] = L' ';
}
while (i > 0)
s[--pos] = s[--i];
return s + pos;
}
LRESULT CPanel::SetItemText(LVITEMW &item)
@@ -60,11 +89,11 @@ LRESULT CPanel::SetItemText(LVITEMW &item)
}
if (!defined)
{
NCOM::CPropVariant propVariant;
_folder->GetProperty(index, kpidAttributes, &propVariant);
NCOM::CPropVariant prop;
_folder->GetProperty(index, kpidAttributes, &prop);
UINT32 attributes = 0;
if (propVariant.vt == VT_UI4)
attributes = propVariant.ulVal;
if (prop.vt == VT_UI4)
attributes = prop.ulVal;
else
{
if (IsItemFolder(index))
@@ -109,7 +138,7 @@ LRESULT CPanel::SetItemText(LVITEMW &item)
*/
// const NFind::CFileInfo &aFileInfo = m_Files[index];
NCOM::CPropVariant propVariant;
NCOM::CPropVariant prop;
/*
bool needRead = true;
if (propID == kpidSize)
@@ -117,26 +146,26 @@ LRESULT CPanel::SetItemText(LVITEMW &item)
CComPtr<IFolderGetItemFullSize> getItemFullSize;
if (_folder.QueryInterface(&getItemFullSize) == S_OK)
{
if (getItemFullSize->GetItemFullSize(index, &propVariant) == S_OK)
if (getItemFullSize->GetItemFullSize(index, &prop) == S_OK)
needRead = false;
}
}
if (needRead)
*/
if (_folder->GetProperty(realIndex, propID, &propVariant) != S_OK)
if (_folder->GetProperty(realIndex, propID, &prop) != S_OK)
throw 2723407;
if ((propID == kpidSize || propID == kpidPackedSize ||
propID == kpidTotalSize || propID == kpidFreeSpace ||
propID == kpidClusterSize)
&&
(propVariant.vt == VT_UI8 || propVariant.vt == VT_UI4))
s = ConvertSizeToString(ConvertPropVariantToUInt64(propVariant));
if ((propID == kpidSize || propID == kpidPackedSize || propID == kpidClusterSize ||
propID == kpidNumSubFolders || propID == kpidNumSubFiles) &&
(prop.vt == VT_UI8 || prop.vt == VT_UI4))
s = ConvertSizeToString(ConvertPropVariantToUInt64(prop));
else if ((propID == kpidTotalSize || propID == kpidFreeSpace) &&
(prop.vt == VT_UI8 || prop.vt == VT_UI4))
s = ConvertSizeToStringShort(ConvertPropVariantToUInt64(prop));
else
s = ConvertPropertyToString(propVariant, propID, false);
{
s = ConvertPropertyToString(prop, propID, false);
s.Replace(wchar_t(0xA), L' ');
s.Replace(wchar_t(0xD), L' ');
}
@@ -364,7 +393,7 @@ void CPanel::OnRefreshStatusBar()
if (indices.Size() > 0)
{
UINT64 totalSize = 0;
UInt64 totalSize = 0;
for (int i = 0; i < indices.Size(); i++)
totalSize += GetItemSize(indices[i]);
selectSizeString = ConvertSizeToString(totalSize);
@@ -380,9 +409,9 @@ void CPanel::OnRefreshStatusBar()
if (realIndex != kParentIndex)
{
sizeString = ConvertSizeToString(GetItemSize(realIndex));
NCOM::CPropVariant propVariant;
if (_folder->GetProperty(realIndex, kpidLastWriteTime, &propVariant) == S_OK)
dateString = ConvertPropertyToString(propVariant, kpidLastWriteTime, false);
NCOM::CPropVariant prop;
if (_folder->GetProperty(realIndex, kpidLastWriteTime, &prop) == S_OK)
dateString = ConvertPropertyToString(prop, kpidLastWriteTime, false);
}
}
_statusBar.SetText(2, sizeString);