diff -r 8b094906a049 -r 60a94a45d437 mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp --- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp Mon Mar 15 12:43:12 2010 +0200 +++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp Wed Mar 31 22:58:56 2010 +0300 @@ -12,7 +12,7 @@ // // Description: // - +#include #include #include #include @@ -25,6 +25,11 @@ #include "mtpdevdppanic.h" #include "rmtpdevicedpsingletons.h" #include "cmtpdevicedpconfigmgr.h" +#include "mtpframeworkconst.h" + +//This file is exported from s60 sdk, now just copy it +//to make sure onb can run +#include "UiklafInternalCRKeys.h" // Class constants. __FLOG_STMT(_LIT8(KComponent,"GetStorageInfo");) @@ -167,6 +172,7 @@ void CMTPGetStorageInfo::SetStorageTypeL() { TUint16 storageType = EMTPStorageUndefined; + switch(iDriveInfo.iType) { case EMediaNotPresent: @@ -189,7 +195,14 @@ case EMediaFlash: case EMediaRemote: case EMediaFloppy: - storageType = EMTPStorageRemovableRAM; + if (iDriveInfo.iDriveAtt & KDriveAttRemovable) + { + storageType = EMTPStorageRemovableRAM; + } + else + { + storageType = EMTPStorageFixedRAM; + } break; default: break; @@ -239,11 +252,43 @@ */ void CMTPGetStorageInfo::SetFreeSpaceInBytesL() { - TMTPTypeUint64 mtpFreeSpace(iVolumeInfo.iFree); + TMTPTypeUint64 mtpFreeSpace; if(iIsCDrive) - { - mtpFreeSpace.Set(0); - } + { + mtpFreeSpace.Set(0); + } + else + { + CRepository* repository(NULL); + TInt thresholdValue(0); + TRAPD(err,repository = CRepository::NewL(KCRUidUiklaf)); + if (err == KErrNone) + { + err = repository->Get(KUikOODDiskFreeSpaceWarningNoteLevelMassMemory,thresholdValue); + if (err == KErrNone) + { + __FLOG_1(_L8("Read from central repo:%d"),thresholdValue); + thresholdValue += KFreeSpaceExtraReserved; + } + delete repository; + } + + if (err != KErrNone) + { + __FLOG(_L8("Fail in read ,use default")); + thresholdValue = KFreeSpaceThreshHoldDefaultValue + KFreeSpaceExtraReserved; + } + + __FLOG_2(_L8("threshold:%d free space:%ld"),thresholdValue,iVolumeInfo.iFree); + //Exclude the reserved disk space when reporting free space + TInt64 free = (iVolumeInfo.iFree > thresholdValue) ? + (iVolumeInfo.iFree - thresholdValue) : 0; + mtpFreeSpace.Set(free); + __FLOG_1(_L8("set free:%ld"),free); + } + + __FLOG_2(_L8("SetFreeSpaceInBytesL volume free:%ld report:%ld"), + iVolumeInfo.iFree,mtpFreeSpace.Value()); iStorageInfo->SetL(CMTPTypeStorageInfo::EFreeSpaceInBytes, mtpFreeSpace); }