filemanager/src/filemanager/src/components/fmdrivedetailstype.h
author hgs
Fri, 25 Jun 2010 17:08:34 +0800
changeset 25 b7bfdea70ca2
parent 14 1957042d8c7e
child 32 39cf9ced4cc4
permissions -rw-r--r--
201025

/*
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 * 
 * Contributors:
 *     
 * 
 * Description:
 *      The header file of the drive details type
 */

#ifndef FMDRIVEDETAILSTYPE_H
#define FMDRIVEDETAILSTYPE_H

#include <QString>
#include <QList>
#include <QStringList>

class FmDriveDetailsDataGroup
{
public:
    // used to identify recognize method
    enum TDataRecognizeType{
        EDataRecognizeExtName = 0,  // recognize data by extension of filename
        EDataRecognizeAbsolutePath  // recognize data by ablsolute file path
    };
    
    enum TDataGroups{
        EGroupImages = 0,
        EGroupSoundFiles,
        EGroupMidpJava,
        EGroupNativeApps,
        EGroupVideos,
        EGroupDocuments,
        EGroupCalendar,
        EGroupContacts,
        EGroupMessages,
        EGroupOthers
    };
    
public:
       FmDriveDetailsDataGroup( TDataGroups dataGroups,
                    QStringList typeFilters,
                    TDataRecognizeType recognizeType ) 
                   : mDataGroups( dataGroups ), mTypeFilters( typeFilters ),
                     mDataRecognizeType( recognizeType )
        {
        }
        FmDriveDetailsDataGroup( const FmDriveDetailsDataGroup &other )
        {
            *this = other;
        }
        
        FmDriveDetailsDataGroup &operator= ( const FmDriveDetailsDataGroup &rhs )
        {
            this->mDataGroups = rhs.mDataGroups;
            this->mTypeFilters = rhs.mTypeFilters;
            return *this;
        }
        
        TDataGroups dataGroups() const { return mDataGroups; }
        QStringList typeFilters() const { return mTypeFilters; }
        TDataRecognizeType dataRecognizeType() const { return mDataRecognizeType; }
    
private:
      TDataGroups mDataGroups;
      QStringList mTypeFilters;
      TDataRecognizeType mDataRecognizeType;
};

class FmDriveDetailsSize
{
public:
    FmDriveDetailsSize( FmDriveDetailsDataGroup::TDataGroups dataGroups, quint64 size ) 
        : mDataGroups( dataGroups ), mSize( size ) {}
    FmDriveDetailsSize( const FmDriveDetailsSize &other )
    {
        *this = other;
    }
    
    FmDriveDetailsSize &operator= ( const FmDriveDetailsSize &rhs )
    {
        this->mDataGroups = rhs.mDataGroups;
        this->mSize = rhs.mSize;
        return *this;
    }
    
    FmDriveDetailsDataGroup::TDataGroups dataGroups() const { return mDataGroups; }
    quint64 size() const { return mSize; }
    
private:
    FmDriveDetailsDataGroup::TDataGroups mDataGroups;
    quint64 mSize;
};

class FmDriveDetailsContent
{
public:
    static QList<FmDriveDetailsDataGroup*> queryDetailsContent(); 
    static int querySizeofContent(
            const QString &driveName, QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped );
    /**
     * Gets data size for single FmDriveDetailsDataGroup, the method is scan files for extension.
     * @param driveName which drive is searching
     * @param dataGroup which dataGroup is searching, for example, EGroupImages, EGroupSoundFiles...
     * @param detailsSizeList if got result, new FmDriveDetailsSize will be appended to detailsSizeList
     * @param isStopped isStopped will be set as true if user cancel this operation
     * @return Filemanage wide error. Please refer to fmdefine.h
     */
    static int getDataSizeByExtName( const QString &driveName, const FmDriveDetailsDataGroup* const dataGroup,
               QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped );
    
    /**
     * Gets data size for single FmDriveDetailsDataGroup, the method is find file of absolute path
     * @param driveName which drive is searching
     * @param dataGroup which dataGroup is searching, for example, EGroupContacts...
     * @param detailsSizeList if got result, new FmDriveDetailsSize will be appended to detailsSizeList
     * @param isStopped isStopped will be set as true if user cancel this operation
     * @return Filemanage wide error. Please refer to fmdefine.h
     */
    static int getDataSizeByAbsolutePath( const QString &driveName, const FmDriveDetailsDataGroup* const dataGroup, 
               QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped );
};

class FmFolderDetails
{
public:

    static int queryDetailOfContentList( const QStringList folderPathList,int &numofFolders, 
                                    int &numofFiles, quint64 &totalSize, volatile bool *isStopped, bool isSysHiddenIncluded = false );

    static int getNumofSubfolders( const QString &folderPath, int &numofSubFolders, 
                                    int &numofFiles, quint64 &sizeofFolder,
                                    volatile bool *isStopped, bool  isSysHiddenIncluded = false );


};

#endif /* FMDRIVEDETAILSTYPE_H */