appinstaller/AppMngr2/inc/appmngr2filerecognizer.h
author Simon Howkins <simonh@symbian.org>
Mon, 22 Nov 2010 12:04:39 +0000
branchRCL_3
changeset 84 e6c5e34cd9b9
parent 0 ba25891c3a9e
permissions -rw-r--r--
Adjusted to avoid exports, etc, from a top-level bld.inf

/*
* Copyright (c) 2008 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:   Recognizes files to get corresponding MIME types
*
*/


#ifndef C_APPMNGR2FILERECOGNIZER_H
#define C_APPMNGR2FILERECOGNIZER_H

#include <e32base.h>                    // CActive

class CAppMngr2RecognizedFile;
class CDir;
class RFs;


class CAppMngr2FileRecognizer : public CActive
    {
public:     // constructor and destructor
    static CAppMngr2FileRecognizer* NewL( RFs& aFs );
    ~CAppMngr2FileRecognizer();

public:     // new functions
    /**
     * Gets the data (MIME) type for files in a specified directory.
     * Works like RApaLsSession::RecognizeFilesL() except that can be used to
     * recognize files in private directories too (with AllFiles capability).
     * @param aPath  A valid path. Note that the path must end with a backslash. 
     * @param aStatus  A request status object. 
     */
    void RecognizeFilesL( const TDesC& aPath, TRequestStatus& aStatus );
    
    /**
     * Cancels ongoing file recognition.
     */
    void CancelRecognizeFiles();
    
    /**
     * Returns file recognition results in array. Items can be removed
     * from the array. Next call to RecognizeFilesL() resets the array.
     * @return RPointerArray<CAppMngr2RecognizedFile>&  Recognized files
     */
    RPointerArray<CAppMngr2RecognizedFile>& Results();
    
protected:  // from CActive
    void DoCancel();
    void RunL();
    TInt RunError( TInt aError );
    
private:    // new functions
    CAppMngr2FileRecognizer( RFs& aFs );
    void RecognizeNextFileL();

private:    // data
    RFs& iFs;
    TRequestStatus* iDirStatus;
    HBufC* iDirPath;
    CDir* iDirEntries;
    TInt iIndex;
    RPointerArray<CAppMngr2RecognizedFile> iResultArray;
    enum TState
        {
        EIdle,
        ERecognizing
        } iState;
    };

#endif  // C_APPMNGR2FILERECOGNIZER_H