filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp
changeset 25 b7bfdea70ca2
parent 16 ada7962b4308
child 32 39cf9ced4cc4
equal deleted inserted replaced
16:ada7962b4308 25:b7bfdea70ca2
    42     typeFilters.append( QString( "*.jpg2" ) );
    42     typeFilters.append( QString( "*.jpg2" ) );
    43     typeFilters.append( QString( "*.jp3" ) );
    43     typeFilters.append( QString( "*.jp3" ) );
    44     typeFilters.append( QString( "*.ico" ) );
    44     typeFilters.append( QString( "*.ico" ) );
    45     typeFilters.append( QString( "*.vcf" ) );
    45     typeFilters.append( QString( "*.vcf" ) );
    46 
    46 
    47     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupImages, typeFilters ));
    47     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupImages,
       
    48             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
    48     
    49     
    49     typeFilters.clear();
    50     typeFilters.clear();
    50     typeFilters.append( QString( "*.aac" ) );
    51     typeFilters.append( QString( "*.aac" ) );
    51     typeFilters.append( QString( "*.amr" ) );
    52     typeFilters.append( QString( "*.amr" ) );
    52     typeFilters.append( QString( "*.au" ) );
    53     typeFilters.append( QString( "*.au" ) );
    62     typeFilters.append( QString( "*.wma" ) );
    63     typeFilters.append( QString( "*.wma" ) );
    63     typeFilters.append( QString( "*.m4a" ) );
    64     typeFilters.append( QString( "*.m4a" ) );
    64     typeFilters.append( QString( "*.ott" ) );
    65     typeFilters.append( QString( "*.ott" ) );
    65     typeFilters.append( QString( "*.mxmf" ) );
    66     typeFilters.append( QString( "*.mxmf" ) );
    66 
    67 
    67     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupSoundFiles, typeFilters ));
    68     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupSoundFiles,
       
    69             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
    68     
    70     
    69     typeFilters.clear();
    71     typeFilters.clear();
    70     typeFilters.append( QString( "*.jad" ) );
    72     typeFilters.append( QString( "*.jad" ) );
    71     typeFilters.append( QString( "*.jar" ) );
    73     typeFilters.append( QString( "*.jar" ) );
    72  
    74  
    73     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupMidpJava, typeFilters ));
    75     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupMidpJava,
       
    76             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
    74 
    77 
    75     typeFilters.clear();
    78     typeFilters.clear();
    76     typeFilters.append( QString( "*.sis" ) );
    79     typeFilters.append( QString( "*.sis" ) );
    77     typeFilters.append( QString( "*.sisx" ) );
    80     typeFilters.append( QString( "*.sisx" ) );
    78 
    81 
    79     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupNativeApps, typeFilters ));
    82     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupNativeApps,
       
    83             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
    80 
    84 
    81     typeFilters.clear();
    85     typeFilters.clear();
    82     typeFilters.append( QString( "*.3gp" ) );
    86     typeFilters.append( QString( "*.3gp" ) );
    83     typeFilters.append( QString( "*.mp4" ) );
    87     typeFilters.append( QString( "*.mp4" ) );
    84     typeFilters.append( QString( "*.nim" ) );
    88     typeFilters.append( QString( "*.nim" ) );
    85     typeFilters.append( QString( "*.rm" ) );
    89     typeFilters.append( QString( "*.rm"  ) );
    86     typeFilters.append( QString( "*.rv" ) );
    90     typeFilters.append( QString( "*.rv"  ) );
    87     typeFilters.append( QString( "*.wmv" ) );
    91     typeFilters.append( QString( "*.wmv" ) );
    88     typeFilters.append( QString( "*.3g2" ) );
    92     typeFilters.append( QString( "*.3g2" ) );
       
    93     typeFilters.append( QString( "*.rmvb") );
       
    94     typeFilters.append( QString( "*.mkv" ) );
    89  
    95  
    90     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupVideos, typeFilters ));
    96     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupVideos,
       
    97             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
    91  
    98  
    92     typeFilters.clear();
    99     typeFilters.clear();
    93     typeFilters.append( QString( "*.doc" ) );
   100     typeFilters.append( QString( "*.doc" ) );
    94     typeFilters.append( QString( "*.pdf" ) );
   101     typeFilters.append( QString( "*.pdf" ) );
    95     typeFilters.append( QString( "*.pps" ) );
   102     typeFilters.append( QString( "*.pps" ) );
    96     typeFilters.append( QString( "*.ppt" ) );
   103     typeFilters.append( QString( "*.ppt" ) );
    97     typeFilters.append( QString( "*.txt" ) );
   104     typeFilters.append( QString( "*.txt" ) );
    98     typeFilters.append( QString( "*.xls" ) );
   105     typeFilters.append( QString( "*.xls" ) );
    99 
   106 
   100     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupDocuments, typeFilters ));
   107     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupDocuments,
       
   108             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
   101 
   109 
   102     typeFilters.clear();
   110     typeFilters.clear();
   103     typeFilters.append( QString( "*.vcs" ) );
   111     typeFilters.append( QString( "*.vcs" ) );
   104 
   112 
   105     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupCalendar, typeFilters ));
   113     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupCalendar,
   106     
   114             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName ));
       
   115     
       
   116     // Add absolute path and use EDataRecognizeAbsolutePath method for Contacts
       
   117     typeFilters.clear();
       
   118     typeFilters.append( QString( FmViewDetail_Contacts ) );    
       
   119     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupContacts,
       
   120             typeFilters, FmDriveDetailsDataGroup::EDataRecognizeAbsolutePath ));
   107     return dataGroupList;
   121     return dataGroupList;
   108     
   122     
   109 }
   123 }
   110 
   124 
   111 int FmDriveDetailsContent::querySizeofContent( const QString &driveName,
   125 int FmDriveDetailsContent::querySizeofContent( const QString &driveName,
   112         QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
   126         QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
   113 {   
   127 {      
   114     quint64 totalSize = 0;
   128     int err = FmErrNone;
   115     
   129     QList< FmDriveDetailsDataGroup* > dataGroupList = queryDetailsContent();   
       
   130     detailsSizeList.clear();
       
   131     for( QList< FmDriveDetailsDataGroup* >::iterator it = dataGroupList.begin(); 
       
   132             it!= dataGroupList.end(); ++it ) {
       
   133         if ( *isStopped ){
       
   134             return FmErrCancel;
       
   135         }
       
   136         FmDriveDetailsDataGroup* driveDetailsDataGroup = *it;
       
   137         
       
   138         switch( (*it)->dataRecognizeType() )
       
   139             {
       
   140             case FmDriveDetailsDataGroup::EDataRecognizeExtName:
       
   141                 err = getDataSizeByExtName(driveName, driveDetailsDataGroup, detailsSizeList, isStopped) ;
       
   142                 break;
       
   143             case FmDriveDetailsDataGroup::EDataRecognizeAbsolutePath:
       
   144                 err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroup, detailsSizeList, isStopped);
       
   145                 break;
       
   146             default:
       
   147                 Q_ASSERT_X( false, "querySizeofContent", "please handle all recognize methods ");
       
   148                 break;
       
   149             }
       
   150         
       
   151         // return if error occur.
       
   152         if( err != FmErrNone ) {
       
   153             return err;
       
   154         }
       
   155     }
       
   156     return FmErrNone;
       
   157 }
       
   158 
       
   159 int FmDriveDetailsContent::getDataSizeByExtName( const QString &driveName,
       
   160         const FmDriveDetailsDataGroup* const dataGroup,
       
   161         QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
       
   162 {
       
   163     quint64 totalSize = 0;        
   116     QString path;
   164     QString path;
   117     path.clear();
   165     path.clear();
   118     
   166     
   119     if( FmUtils::isDriveC( driveName )){
   167     if( FmUtils::isDriveC( driveName )){
   120         path = QString( "c:\\Data\\" );
   168         path = QString( "c:\\Data\\" );
   121     }
   169     }
   122     else{
   170     else{
   123         path = driveName;
   171         path = driveName;
   124     }
   172     }    
   125     
   173     QStringList typeFilter = dataGroup->typeFilters();
   126     QList< FmDriveDetailsDataGroup* > dataGroupList = queryDetailsContent();
   174     QList<QDir> dirs;
   127     
   175     dirs.append( QDir( path ) );
   128     QStringList typeFilter;
   176     while (!dirs.isEmpty()) {
   129     detailsSizeList.clear();
   177        QFileInfoList infoList = dirs.first().entryInfoList( QDir::NoDotAndDotDot | QDir::AllEntries );
   130     QDir dir( path );
   178        QFileInfoList filterInforList = dirs.first().entryInfoList( typeFilter, QDir::NoDotAndDotDot | QDir::Files );
   131 
   179        
   132     for( QList< FmDriveDetailsDataGroup* >::iterator it = dataGroupList.begin(); 
   180        for ( QFileInfoList::Iterator it = filterInforList.begin(); it != filterInforList.end(); ++it ) {
   133             it!= dataGroupList.end(); ++it ){  
   181            if ( *isStopped ){
       
   182                return FmErrCancel;
       
   183            }           
       
   184            if ( it->isFile() ) {
       
   185                totalSize += it->size();
       
   186            }
       
   187        }       
       
   188        for ( QFileInfoList::Iterator it = infoList.begin(); it != infoList.end(); ++it ) {
       
   189            if ( *isStopped ){
       
   190                return FmErrCancel;
       
   191            }           
       
   192            if ( it->isDir() ) {
       
   193                dirs.append( QDir( it->absoluteFilePath() ) );
       
   194            }
       
   195        }       
       
   196        dirs.removeFirst();
       
   197    }
       
   198    detailsSizeList.append( new FmDriveDetailsSize( dataGroup->dataGroups(), totalSize ) );
       
   199    return FmErrNone;
       
   200         
       
   201 }
       
   202 
       
   203 int FmDriveDetailsContent::getDataSizeByAbsolutePath( const QString &driveName,
       
   204         const FmDriveDetailsDataGroup* const dataGroup,
       
   205             QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
       
   206 {
       
   207     quint64 totalSize = 0;
       
   208     QStringList typeFilter = dataGroup->typeFilters();
       
   209     
       
   210     for( QStringList::iterator it = typeFilter.begin(); 
       
   211            it!= typeFilter.end(); ++it ) {
   134         if ( *isStopped ){
   212         if ( *isStopped ){
   135             return FmErrCancel;
   213             return FmErrCancel;
   136         }
   214         }        
   137         totalSize = 0;
   215         QString driver(FmUtils::removePathSplash(FmUtils::getDriveNameFromPath(driveName)));
   138         typeFilter = ( *it )->typeFilters();
   216         QFileInfo fileInfo(QString(driver + (*it)));
   139         
   217         if (fileInfo.exists()) {
   140         QList<QDir> dirs;
   218             totalSize += fileInfo.size();
   141         dirs.append( QDir( path ) );
   219         }
   142                     
   220     }
   143         while (!dirs.isEmpty()) {
   221  
   144             QFileInfoList infoList = dirs.first().entryInfoList( QDir::NoDotAndDotDot | QDir::AllEntries );
   222     detailsSizeList.append( new FmDriveDetailsSize( dataGroup->dataGroups(), totalSize ) );
   145             QFileInfoList filterInforList = dirs.first().entryInfoList( typeFilter, QDir::NoDotAndDotDot | QDir::Files );
       
   146             
       
   147             for ( QFileInfoList::Iterator it = filterInforList.begin(); it != filterInforList.end(); ++it ) {
       
   148                 if ( *isStopped ){
       
   149                     return FmErrCancel;
       
   150                 }
       
   151                 
       
   152                 if ( it->isFile() ) {
       
   153                     totalSize += it->size();
       
   154                 }
       
   155             }
       
   156             
       
   157             for ( QFileInfoList::Iterator it = infoList.begin(); it != infoList.end(); ++it ) {
       
   158                 if ( *isStopped ){
       
   159                     return FmErrCancel;
       
   160                 }
       
   161                 
       
   162                 if ( it->isDir() ) {
       
   163                     dirs.append( QDir( it->absoluteFilePath() ) );
       
   164                 } 
       
   165             }
       
   166             
       
   167             dirs.removeFirst();
       
   168         }
       
   169     
       
   170         detailsSizeList.append( new FmDriveDetailsSize( ( *it )->dataGroups(), totalSize ) );
       
   171     }
       
   172     return FmErrNone;
   223     return FmErrNone;
   173 }
   224 }
   174 
   225 
   175 int FmFolderDetails::queryDetailOfContentList( const QStringList folderPathList,int &numofFolders, 
   226 int FmFolderDetails::queryDetailOfContentList( const QStringList folderPathList,int &numofFolders, 
   176                                     int &numofFiles, quint64 &totalSize,
   227                                     int &numofFiles, quint64 &totalSize,