Removed flash tag from Syborg test plan (Added automatically by ats_specialise_drop)
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "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:
//
#if !defined(__APSRECUTIL_H__)
#define __APSRECUTIL_H__
#if !defined(__E32BASE_H__)
#include <e32base.h>
#endif
#include <apmrec.h>
#include <apsserv.h>
/**
Reference-counted object which stores a recognition result in a more compact format
than TDataRecognitionResult does. Also includes the file name.
The reason why instances of this class are reference-counted is that they might
be "owned" by the cache and CDirectoryRecognitionResult at the same time. If both
of them had their own copies unnecessarily much memory would be wasted.
@internalComponent
*/
class CRecognitionResult : public CObject
{
public:
static CRecognitionResult* NewL(const TDesC& aFileName, const TDataRecognitionResult& aRecognitionResult);
TUint GetRequiredBufferSize() const;
void WriteToStreamL(RWriteStream& aWriteStream);
void Get(TDataRecognitionResult& aRecognitionResult);
inline const TDesC8& DataType() const { return *iDataType; }
inline const TDesC& FileName() const { return *iFileName; }
private:
CRecognitionResult(HBufC* aFileName, HBufC8* aDataType, TUid aUid, TInt aConfidence);
~CRecognitionResult();
private:
HBufC* iFileName;
HBufC8* iDataType;
TUid iUid;
TInt iConfidence;
};
/**
Holds the recognition results of all files of a directory.
@internalComponent
*/
class CDirectoryRecognitionResult : public CBase
{
public:
CDirectoryRecognitionResult(HBufC* aPath, HBufC8* aDataTypeFilter);
virtual ~CDirectoryRecognitionResult();
void AppendL(CRecognitionResult* aEntry);
void WriteToStreamL(RWriteStream& aWriteStream);
inline TInt RequiredBufferSize() const {return iRequiredBufferSize;}
inline HBufC& Path() { return *iPath; }
private:
TInt iRequiredBufferSize;
HBufC* iPath;
HBufC8* iDataTypeFilter;
RPointerArray<CRecognitionResult> iEntries;
};
/**
Utility class which does synchronous and asynchronous file recognitions of a directory
@internalComponent
*/
class CFileRecognitionUtility : public CActive
{
public:
CFileRecognitionUtility(CApaAppListServer& aServer, TInt aMaxBufSize, RFs& aFs);
~CFileRecognitionUtility();
void RecognizeSynchronouslyL(CDirectoryRecognitionResult& aResult);
void RecognizeAsynchronously(CDirectoryRecognitionResult& aResult, const RMessage2& aMessage);
void CancelRecognitionRequest();
protected:
void ReadDirectoryL();
void RecognizeFileL();
private:
void NextStep();
void RunL();
void DoCancel();
TInt BufferSizeL() const;
private:
HBufC* iPath;
CDirectoryRecognitionResult* iResult;
CApaAppListServer& iServer;
TInt iMaxBufSize;
RFs& iFs;
CDir* iEntryList;
TInt iIndex;
TInt iStep;
RMessage2 iMessage;
};
#endif // __APSRECUTIL_H__