filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp
changeset 46 d58987eac7e8
parent 37 15bc28c9dd51
equal deleted inserted replaced
37:15bc28c9dd51 46:d58987eac7e8
    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;