diff -r 15bc28c9dd51 -r d58987eac7e8 filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp --- a/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp Tue Aug 24 10:24:14 2010 +0800 +++ b/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp Wed Sep 29 10:37:03 2010 +0800 @@ -36,13 +36,21 @@ QStringList dataPathList; dataPathList.append( QString( FmViewDetail_Contacts ) ); - FmDriveDetailsDataGroup driveDetailsDataGroup( FmDriveDetailsSize::ETypeContacts, dataPathList ); + FmDriveDetailsDataGroup driveDetailsDataGroupForContacts( FmDriveDetailsSize::ETypeContacts, dataPathList ); - err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroup, detailsSizeList, isStopped); + err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroupForContacts, detailsSizeList, isStopped); if( err != FmErrNone ) { return err; } + dataPathList.clear(); + dataPathList.append( QString( FmViewDetail_Messages ) ); + FmDriveDetailsDataGroup driveDetailsDataGroupForMessage( FmDriveDetailsSize::ETypeMessages, dataPathList ); + + err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroupForMessage, detailsSizeList, isStopped); + if( err != FmErrNone ) { + return err; + } return FmErrNone; } int FmDriveDetailsContent::getDataSizeByTraversePath( const QString &driveName, @@ -134,7 +142,30 @@ QString driver(FmUtils::removePathSplash(FmUtils::getDriveNameFromPath(driveName))); QFileInfo fileInfo(QString(driver + (*it))); if (fileInfo.exists()) { - totalSize += fileInfo.size(); + if (fileInfo.isFile()) { + totalSize += fileInfo.size(); + } else if (fileInfo.isDir()) { + QList dirs; + dirs.append(QDir(fileInfo.absolutePath())); + // traverse the whole path + while (!dirs.isEmpty()) { + QDir::Filters filter = QDir::NoDotAndDotDot | QDir::AllEntries; + QFileInfoList infoList = dirs.first().entryInfoList( filter ); + for ( QFileInfoList::const_iterator it = infoList.begin(); it != infoList.end(); ++it ) { + if ( *isStopped ){ + return FmErrCancel; + } + if ( it->isFile() ) { + totalSize += it->size(); + } + else if ( it->isDir() ) { + dirs.append( QDir( it->absoluteFilePath() ) ); + } + } + dirs.removeFirst(); + } + } + } }