filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp
author hgs
Wed, 29 Sep 2010 10:37:03 +0800
changeset 46 d58987eac7e8
parent 37 15bc28c9dd51
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
 * All rights reserved.
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
 *
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
 * Initial Contributors:
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
 * 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
 * Contributors:
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
 *     
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
 * 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
 * Description:
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
 *      The source file of the drive details type
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
 */
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include "fmdrivedetailstype.h"
37
hgs
parents: 16
diff changeset
    20
#include "fmfiletyperecognizer.h"
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include "fmutils.h"
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <QDir>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <QFileInfo>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <QStringList>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
37
hgs
parents: 16
diff changeset
    27
int FmDriveDetailsContent::querySizeofContent( const QString &driveName,
hgs
parents: 16
diff changeset
    28
        QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
hgs
parents: 16
diff changeset
    29
{      
hgs
parents: 16
diff changeset
    30
    int err = FmErrNone;
hgs
parents: 16
diff changeset
    31
    detailsSizeList.clear();
hgs
parents: 16
diff changeset
    32
    err = getDataSizeByTraversePath( driveName, detailsSizeList, isStopped );
hgs
parents: 16
diff changeset
    33
    if( err != FmErrNone ) {
hgs
parents: 16
diff changeset
    34
        return err;
hgs
parents: 16
diff changeset
    35
    }
hgs
parents: 16
diff changeset
    36
    
hgs
parents: 16
diff changeset
    37
    QStringList dataPathList;
hgs
parents: 16
diff changeset
    38
    dataPathList.append( QString( FmViewDetail_Contacts ) );    
46
hgs
parents: 37
diff changeset
    39
    FmDriveDetailsDataGroup driveDetailsDataGroupForContacts( FmDriveDetailsSize::ETypeContacts, dataPathList );
37
hgs
parents: 16
diff changeset
    40
    
46
hgs
parents: 37
diff changeset
    41
    err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroupForContacts, detailsSizeList, isStopped);
37
hgs
parents: 16
diff changeset
    42
    if( err != FmErrNone ) {
hgs
parents: 16
diff changeset
    43
        return err;
hgs
parents: 16
diff changeset
    44
    }
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
    
46
hgs
parents: 37
diff changeset
    46
    dataPathList.clear();
hgs
parents: 37
diff changeset
    47
    dataPathList.append( QString( FmViewDetail_Messages ) );    
hgs
parents: 37
diff changeset
    48
    FmDriveDetailsDataGroup driveDetailsDataGroupForMessage( FmDriveDetailsSize::ETypeMessages, dataPathList );
hgs
parents: 37
diff changeset
    49
    
hgs
parents: 37
diff changeset
    50
    err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroupForMessage, detailsSizeList, isStopped);
hgs
parents: 37
diff changeset
    51
    if( err != FmErrNone ) {
hgs
parents: 37
diff changeset
    52
        return err;
hgs
parents: 37
diff changeset
    53
    }
37
hgs
parents: 16
diff changeset
    54
    return FmErrNone;
hgs
parents: 16
diff changeset
    55
}
hgs
parents: 16
diff changeset
    56
int FmDriveDetailsContent::getDataSizeByTraversePath( const QString &driveName,
hgs
parents: 16
diff changeset
    57
            QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
hgs
parents: 16
diff changeset
    58
{
hgs
parents: 16
diff changeset
    59
    qint64 imageSize( 0 );
hgs
parents: 16
diff changeset
    60
    qint64 soundSize( 0 );
hgs
parents: 16
diff changeset
    61
    qint64 midpJavaSize( 0 );
hgs
parents: 16
diff changeset
    62
    qint64 nativeAppsSize( 0 );
hgs
parents: 16
diff changeset
    63
    qint64 videoSize( 0 );
hgs
parents: 16
diff changeset
    64
    qint64 documentsSize( 0 );
hgs
parents: 16
diff changeset
    65
   
hgs
parents: 16
diff changeset
    66
    FmFileTypeRecognizer fileTypeRecognizer;
hgs
parents: 16
diff changeset
    67
    
hgs
parents: 16
diff changeset
    68
    QList<QDir> dirs;
hgs
parents: 16
diff changeset
    69
    dirs.append( QDir( driveName ) );
hgs
parents: 16
diff changeset
    70
    
hgs
parents: 16
diff changeset
    71
    // traverse the whole drive
hgs
parents: 16
diff changeset
    72
    while (!dirs.isEmpty()) {
hgs
parents: 16
diff changeset
    73
        QDir::Filters filter = QDir::NoDotAndDotDot | QDir::AllEntries;
hgs
parents: 16
diff changeset
    74
        // do not summarize system and hidden files, these size will go into others category
hgs
parents: 16
diff changeset
    75
        // if( isSysHiddenIncluded ) {
hgs
parents: 16
diff changeset
    76
        // filter = filter | QDir::Hidden | QDir::System;
hgs
parents: 16
diff changeset
    77
        // }
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
37
hgs
parents: 16
diff changeset
    79
        QFileInfoList infoList = dirs.first().entryInfoList( filter );
hgs
parents: 16
diff changeset
    80
        for ( QFileInfoList::const_iterator it = infoList.begin(); it != infoList.end(); ++it ) {
hgs
parents: 16
diff changeset
    81
            if ( *isStopped ){
hgs
parents: 16
diff changeset
    82
                return FmErrCancel;
hgs
parents: 16
diff changeset
    83
            }
hgs
parents: 16
diff changeset
    84
            
hgs
parents: 16
diff changeset
    85
            if ( it->isFile() ) {
hgs
parents: 16
diff changeset
    86
            FmFileTypeRecognizer::FileType fileType = 
hgs
parents: 16
diff changeset
    87
                    fileTypeRecognizer.getType( it->absoluteFilePath() );
hgs
parents: 16
diff changeset
    88
            switch ( fileType )
hgs
parents: 16
diff changeset
    89
                {
hgs
parents: 16
diff changeset
    90
                case FmFileTypeRecognizer::FileTypeImage:
hgs
parents: 16
diff changeset
    91
                    imageSize += it->size();
hgs
parents: 16
diff changeset
    92
                    break;
hgs
parents: 16
diff changeset
    93
                case FmFileTypeRecognizer::FileTypeTone:
hgs
parents: 16
diff changeset
    94
                    soundSize += it->size();
hgs
parents: 16
diff changeset
    95
                    break;
hgs
parents: 16
diff changeset
    96
                case FmFileTypeRecognizer::FileTypeJava:
hgs
parents: 16
diff changeset
    97
                    midpJavaSize += it->size();
hgs
parents: 16
diff changeset
    98
                    break;
hgs
parents: 16
diff changeset
    99
                case FmFileTypeRecognizer::FileTypeSisx:
hgs
parents: 16
diff changeset
   100
                    nativeAppsSize += it->size();
hgs
parents: 16
diff changeset
   101
                    break;
hgs
parents: 16
diff changeset
   102
                case FmFileTypeRecognizer::FileTypeVideo:
hgs
parents: 16
diff changeset
   103
                    videoSize += it->size();
hgs
parents: 16
diff changeset
   104
                    break;
hgs
parents: 16
diff changeset
   105
                case FmFileTypeRecognizer::FileTypeText:
hgs
parents: 16
diff changeset
   106
                    documentsSize += it->size();
hgs
parents: 16
diff changeset
   107
                    break;
hgs
parents: 16
diff changeset
   108
                default:
hgs
parents: 16
diff changeset
   109
                    // do not need handle other type 
hgs
parents: 16
diff changeset
   110
                    break;
hgs
parents: 16
diff changeset
   111
                }
hgs
parents: 16
diff changeset
   112
            }
hgs
parents: 16
diff changeset
   113
            else if ( it->isDir() ) {
hgs
parents: 16
diff changeset
   114
                dirs.append( QDir( it->absoluteFilePath() ) );
hgs
parents: 16
diff changeset
   115
            } 
hgs
parents: 16
diff changeset
   116
        }
hgs
parents: 16
diff changeset
   117
        dirs.removeFirst();
hgs
parents: 16
diff changeset
   118
    }
hgs
parents: 16
diff changeset
   119
       
hgs
parents: 16
diff changeset
   120
    // store result to detailsSizeList.
hgs
parents: 16
diff changeset
   121
    detailsSizeList.append( new FmDriveDetailsSize( FmDriveDetailsSize::ETypeImages, imageSize ) ) ;
hgs
parents: 16
diff changeset
   122
    detailsSizeList.append( new FmDriveDetailsSize( FmDriveDetailsSize::ETypeSoundFiles, soundSize ) );
hgs
parents: 16
diff changeset
   123
    detailsSizeList.append( new FmDriveDetailsSize( FmDriveDetailsSize::ETypeMidpJava, midpJavaSize ) );
hgs
parents: 16
diff changeset
   124
    detailsSizeList.append( new FmDriveDetailsSize( FmDriveDetailsSize::ETypeNativeApps, nativeAppsSize ) );
hgs
parents: 16
diff changeset
   125
    detailsSizeList.append( new FmDriveDetailsSize( FmDriveDetailsSize::ETypeVideos, videoSize ) );
hgs
parents: 16
diff changeset
   126
    detailsSizeList.append( new FmDriveDetailsSize( FmDriveDetailsSize::ETypeDocuments, documentsSize ) );
hgs
parents: 16
diff changeset
   127
    return FmErrNone;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
37
hgs
parents: 16
diff changeset
   130
int FmDriveDetailsContent::getDataSizeByAbsolutePath( const QString &driveName,
hgs
parents: 16
diff changeset
   131
        const FmDriveDetailsDataGroup &dataGroup,
hgs
parents: 16
diff changeset
   132
            QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
hgs
parents: 16
diff changeset
   133
{
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
    quint64 totalSize = 0;
37
hgs
parents: 16
diff changeset
   135
    QStringList typeFilter = dataGroup.pathList();
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
    
37
hgs
parents: 16
diff changeset
   137
    for( QStringList::const_iterator it = typeFilter.begin(); 
hgs
parents: 16
diff changeset
   138
           it!= typeFilter.end(); ++it ) {
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
        if ( *isStopped ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
            return FmErrCancel;
37
hgs
parents: 16
diff changeset
   141
        }        
hgs
parents: 16
diff changeset
   142
        QString driver(FmUtils::removePathSplash(FmUtils::getDriveNameFromPath(driveName)));
hgs
parents: 16
diff changeset
   143
        QFileInfo fileInfo(QString(driver + (*it)));
hgs
parents: 16
diff changeset
   144
        if (fileInfo.exists()) {
46
hgs
parents: 37
diff changeset
   145
            if (fileInfo.isFile()) {
hgs
parents: 37
diff changeset
   146
                totalSize += fileInfo.size();    
hgs
parents: 37
diff changeset
   147
            } else if (fileInfo.isDir()) {
hgs
parents: 37
diff changeset
   148
                QList<QDir> dirs;
hgs
parents: 37
diff changeset
   149
                dirs.append(QDir(fileInfo.absolutePath()));
hgs
parents: 37
diff changeset
   150
                // traverse the whole path
hgs
parents: 37
diff changeset
   151
                while (!dirs.isEmpty()) {
hgs
parents: 37
diff changeset
   152
                    QDir::Filters filter = QDir::NoDotAndDotDot | QDir::AllEntries;
hgs
parents: 37
diff changeset
   153
                    QFileInfoList infoList = dirs.first().entryInfoList( filter );
hgs
parents: 37
diff changeset
   154
                    for ( QFileInfoList::const_iterator it = infoList.begin(); it != infoList.end(); ++it ) {
hgs
parents: 37
diff changeset
   155
                        if ( *isStopped ){
hgs
parents: 37
diff changeset
   156
                            return FmErrCancel;
hgs
parents: 37
diff changeset
   157
                        }                        
hgs
parents: 37
diff changeset
   158
                        if ( it->isFile() ) {
hgs
parents: 37
diff changeset
   159
                            totalSize += it->size();  
hgs
parents: 37
diff changeset
   160
                        }
hgs
parents: 37
diff changeset
   161
                        else if ( it->isDir() ) {
hgs
parents: 37
diff changeset
   162
                            dirs.append( QDir( it->absoluteFilePath() ) );
hgs
parents: 37
diff changeset
   163
                        } 
hgs
parents: 37
diff changeset
   164
                    }
hgs
parents: 37
diff changeset
   165
                    dirs.removeFirst();
hgs
parents: 37
diff changeset
   166
                }
hgs
parents: 37
diff changeset
   167
            }
hgs
parents: 37
diff changeset
   168
            
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
        }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
    }
37
hgs
parents: 16
diff changeset
   171
 
hgs
parents: 16
diff changeset
   172
    detailsSizeList.append( new FmDriveDetailsSize( dataGroup.dataType(), totalSize ) );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
    return FmErrNone;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
int FmFolderDetails::queryDetailOfContentList( const QStringList folderPathList,int &numofFolders, 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
                                    int &numofFiles, quint64 &totalSize,
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
                                    volatile bool *isStopped, bool isSysHiddenIncluded )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
{
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
    numofFolders = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
    numofFiles = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
    totalSize = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
    int tempNumofFolders = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
    int tempNumofFiles = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
    quint64 tempSize = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
    int ret = FmErrNone;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
    foreach( const QString& folderPath, folderPathList ) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
        QFileInfo fileInfo( folderPath );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
        if( fileInfo.isDir() ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
            int tempNumofSubFolders = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
            ret = getNumofSubfolders( folderPath, tempNumofSubFolders,
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
                tempNumofFiles, tempSize, isStopped, isSysHiddenIncluded );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
            tempNumofFolders = tempNumofSubFolders + 1; // add itself to folder count;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
        } else if( fileInfo.isFile() ) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
            tempNumofFiles = 1;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
            tempSize = fileInfo.size();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
            ret = FmErrNone;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
        } else {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
            ret = FmErrIsNotFileOrFolder;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
        }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
        if( ret != FmErrNone ) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
            return ret;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
        }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
        numofFolders+= tempNumofFolders;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
        numofFiles  += tempNumofFiles;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
        totalSize   += tempSize;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
        tempNumofFolders = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
        tempNumofFiles      = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
        tempSize    = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
    return ret;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
int FmFolderDetails::getNumofSubfolders( const QString &folderPath, int &numofSubFolders, 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
                                          int &numofFiles, quint64 &sizeofFolder,
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
                                          volatile bool *isStopped, bool isSysHiddenIncluded )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
{
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
    numofSubFolders = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
    numofFiles = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
    sizeofFolder = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
    QList<QDir> dirs;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
    dirs.append( QDir( folderPath ) );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    while (!dirs.isEmpty()) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
        QDir::Filters filter = QDir::NoDotAndDotDot | QDir::AllEntries;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
        if( isSysHiddenIncluded ) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
            filter = filter | QDir::Hidden | QDir::System;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
        }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
        QFileInfoList infoList = dirs.first().entryInfoList( filter );
37
hgs
parents: 16
diff changeset
   237
        for ( QFileInfoList::const_iterator it = infoList.begin(); it != infoList.end(); ++it ) {
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
            if ( *isStopped ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
                return FmErrCancel;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
            }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
            
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
            if ( it->isFile() ) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
                ++numofFiles;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
                sizeofFolder += it->size();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
            }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
            else if ( it->isDir() ) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
                ++numofSubFolders;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
                dirs.append( QDir( it->absoluteFilePath() ) );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
            } 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
        }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
        
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
        dirs.removeFirst();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
    return FmErrNone;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
}