34 return err; |
34 return err; |
35 } |
35 } |
36 |
36 |
37 QStringList dataPathList; |
37 QStringList dataPathList; |
38 dataPathList.append( QString( FmViewDetail_Contacts ) ); |
38 dataPathList.append( QString( FmViewDetail_Contacts ) ); |
39 FmDriveDetailsDataGroup driveDetailsDataGroup( FmDriveDetailsSize::ETypeContacts, dataPathList ); |
39 FmDriveDetailsDataGroup driveDetailsDataGroupForContacts( FmDriveDetailsSize::ETypeContacts, dataPathList ); |
40 |
40 |
41 err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroup, detailsSizeList, isStopped); |
41 err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroupForContacts, detailsSizeList, isStopped); |
42 if( err != FmErrNone ) { |
42 if( err != FmErrNone ) { |
43 return err; |
43 return err; |
44 } |
44 } |
45 |
45 |
|
46 dataPathList.clear(); |
|
47 dataPathList.append( QString( FmViewDetail_Messages ) ); |
|
48 FmDriveDetailsDataGroup driveDetailsDataGroupForMessage( FmDriveDetailsSize::ETypeMessages, dataPathList ); |
|
49 |
|
50 err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroupForMessage, detailsSizeList, isStopped); |
|
51 if( err != FmErrNone ) { |
|
52 return err; |
|
53 } |
46 return FmErrNone; |
54 return FmErrNone; |
47 } |
55 } |
48 int FmDriveDetailsContent::getDataSizeByTraversePath( const QString &driveName, |
56 int FmDriveDetailsContent::getDataSizeByTraversePath( const QString &driveName, |
49 QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped ) |
57 QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped ) |
50 { |
58 { |
132 return FmErrCancel; |
140 return FmErrCancel; |
133 } |
141 } |
134 QString driver(FmUtils::removePathSplash(FmUtils::getDriveNameFromPath(driveName))); |
142 QString driver(FmUtils::removePathSplash(FmUtils::getDriveNameFromPath(driveName))); |
135 QFileInfo fileInfo(QString(driver + (*it))); |
143 QFileInfo fileInfo(QString(driver + (*it))); |
136 if (fileInfo.exists()) { |
144 if (fileInfo.exists()) { |
137 totalSize += fileInfo.size(); |
145 if (fileInfo.isFile()) { |
|
146 totalSize += fileInfo.size(); |
|
147 } else if (fileInfo.isDir()) { |
|
148 QList<QDir> dirs; |
|
149 dirs.append(QDir(fileInfo.absolutePath())); |
|
150 // traverse the whole path |
|
151 while (!dirs.isEmpty()) { |
|
152 QDir::Filters filter = QDir::NoDotAndDotDot | QDir::AllEntries; |
|
153 QFileInfoList infoList = dirs.first().entryInfoList( filter ); |
|
154 for ( QFileInfoList::const_iterator it = infoList.begin(); it != infoList.end(); ++it ) { |
|
155 if ( *isStopped ){ |
|
156 return FmErrCancel; |
|
157 } |
|
158 if ( it->isFile() ) { |
|
159 totalSize += it->size(); |
|
160 } |
|
161 else if ( it->isDir() ) { |
|
162 dirs.append( QDir( it->absoluteFilePath() ) ); |
|
163 } |
|
164 } |
|
165 dirs.removeFirst(); |
|
166 } |
|
167 } |
|
168 |
138 } |
169 } |
139 } |
170 } |
140 |
171 |
141 detailsSizeList.append( new FmDriveDetailsSize( dataGroup.dataType(), totalSize ) ); |
172 detailsSizeList.append( new FmDriveDetailsSize( dataGroup.dataType(), totalSize ) ); |
142 return FmErrNone; |
173 return FmErrNone; |