diff -r 000000000000 -r bde4ae8d615e os/ossrv/genericservices/mimerecognitionfw/inc/APMFNDR.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/genericservices/mimerecognitionfw/inc/APMFNDR.H Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,227 @@ +// 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 "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 (__APMFNDR_H__) +#define __APMFNDR_H__ + +#if !defined(__E32BASE_H__) +#include +#endif +#if !defined(__F32FILE_H__) +#include +#endif +#if !defined(__APMREC_H__) +#include +#endif + +#include + +/** +@internalComponent +*/ + +// classes defined +class CApaRecognizerDll; + +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +/** This is a special priority that overrides any user settings. Applications must +have EWriteDeviceData to use this priority. If they have not then they will be +downgraded to KDataTypePriorityNormal. + +@publishedPartner +@released +@see TDataTypeWithPriority */ +const TInt32 KDataTypePrioritySystem = 0xFFF9; + + +class CApaDataRecognizer : public CBase +/** +@internalTechnology +*/ + { +public: + IMPORT_C TDataRecognitionResult RecognizeL(const TDesC& aName, const TDesC8& aBuffer); + IMPORT_C TDataRecognitionResult RecognizeL(RFile& aFile, TInt aPreferredBufSize); + IMPORT_C TBool RecognizeL(const TDesC& aName, const TDesC8& aBuffer, const TDataType& aDataType); + IMPORT_C TBool RecognizeL(RFile& aFile, TInt aPreferredBufSize, const TDataType& aDataType); + IMPORT_C ~CApaDataRecognizer(); + IMPORT_C TInt PreferredBufSize() const; + IMPORT_C void DataTypeL(CDataTypeArray& aArray); + IMPORT_C void UpdateDataTypesL(); + IMPORT_C TInt AcceptedConfidence() const; + IMPORT_C void SetAcceptedConfidence(TInt aConfidence); + inline void SetFilePassedByHandle(RFile* aFilePassedByHandle) {iFilePassedByHandle=aFilePassedByHandle;} + inline RFile* FilePassedByHandle() {return iFilePassedByHandle;} +protected: + IMPORT_C CApaDataRecognizer(RFs& aFs); + IMPORT_C void AddDataRecognizerTypeL(CApaDataRecognizerType* aDataRecognizerType); + inline void AddDataRecognizerType(CApaDataRecognizerType* aDataRecognizerType); + IMPORT_C TInt RemoveDataRecognizerType(const CApaDataRecognizerType* aDataRecognizerType); + IMPORT_C void DestroyRecognizerList(); +private: + void AddDataTypeL(const TDataType& aDataType); + TDataRecognitionResult RecognizeL(TDataToRecognize& aDataToRecognize); + TBool RecognizeL(TDataToRecognize& aDataToRecognize, const TDataType& aDataType); + TBool DoRecognize(CApaDataRecognizerType* aDataRecognizerType, TDataToRecognize& aDataToRecognize, const TDataType& aDataType, TInt& aError); +protected: + RFs& iFs; + // iMaxBufferSize is mutable to allow modification by PreferredBufSize() which is const. + mutable TInt iMaxBufferSize; +private: + IMPORT_C virtual void CApaDataRecognizer_Reserved_1(); // shouldn't be necessary as the class is @internalTechnology +private: + RPointerArray iDataRecognizerList; + RArray iDataArray; + TInt iAcceptedConfidence; + TDataRecognitionResult iResult; + RFile* iFilePassedByHandle; + }; + +#endif //SYMBIAN_ENABLE_SPLIT_HEADERS + +class CApaScanningDataRecognizer : public CApaDataRecognizer +/** +@publishedPartner +@released +*/ + { +public: + class TRecognizer + { + friend class CApaRecognizerDll; + friend class CT_MimeStep; + public: + TRecognizer(HBufC* aName); + inline const TDesC& Name() const; + public: + TUid iUid; + TInt iDrive; + TTime iModified; + private: + inline TRecognizer(); + TRecognizer(const TRecognizer&); + TRecognizer operator=(const TRecognizer&); + private: + HBufC* iName; + }; + typedef CArrayFixFlat CRecognizerArray; + +private: + class CApaBackupOperationObserver : public CBase, public MBackupOperationObserver + { + public: + CApaBackupOperationObserver(CApaScanningDataRecognizer& aRecognizer); + ~CApaBackupOperationObserver(); + void RegisterObserverL(); + + virtual void HandleBackupOperationEventL(const TBackupOperationAttributes& aBackupOperationAttributes); + TInt UpdateCounter() const; + void SetUpdateCounter( TInt aValue ); + private: + CBaBackupSessionWrapper* iSession; + CApaScanningDataRecognizer& iRecognizer; + TInt iUpdateCounter; + }; + friend class CApaScanningDataRecognizer::CApaBackupOperationObserver; + + class CApaScanningDataRecognizerExtra : public CBase + { + private: + CApaBackupOperationObserver* iObserver; + TBool iRecognizersLoaded; + friend class CApaScanningDataRecognizer; + friend class CApaBackupOperationObserver; + }; + + // +public: + IMPORT_C static CApaScanningDataRecognizer* NewL(RFs& aFs); + IMPORT_C static CApaScanningDataRecognizer* NewL(RFs& aFs, TBool aLoadDataRecognizers); + IMPORT_C ~CApaScanningDataRecognizer(); + IMPORT_C void ScanForRecognizersL(); + IMPORT_C TInt RecognizerCount(); + IMPORT_C CRecognizerArray* RecognizerListLC()const; + IMPORT_C const TRecognizer& operator[](TInt aIndex)const; + IMPORT_C TInt UpdateCounter()const; + IMPORT_C void LoadRecognizersL(); + IMPORT_C void UnloadRecognizers(); + +protected: + IMPORT_C CApaScanningDataRecognizer(RFs& aFs); + IMPORT_C void ConstructL(); +private: + void ConstructL(TBool aLoadDataRecognizers); + void ScanDriveL(TInt aDriveNum); + void LoadRecognizerL(const TDesC& aFullName,TUid aUid, const TTime& aTime); + TInt RemoveRecognizer(CApaRecognizerDll* aDll); + void LoadEcomRecognizerL(TDriveUnit& aDrive,TUid aUid); + void ScanForEcomRecognizersL(); +public: + IMPORT_C void SetEcomRecognizersFromListL(const CRecognizerArray& aList); + IMPORT_C void SetEcomRecognizerL(const TRecognizer& aRecognizer); +private: + friend class CApaBackupObserver; + RPointerArray iRecognizerLib; + CApaScanningDataRecognizerExtra* iExtra; + }; + +//gmahe. This is not moved. Because it is not possible to forward declare +//the nested class used here - CApaScanningDataRecognizer::TRecognizer. + +class CApaRecognizerDll : public CBase +/** +@internalTechnology +*/ + { +public: + CApaRecognizerDll(HBufC* aName); + ~CApaRecognizerDll(); // closes lib and deletes next +public: + enum TPresence { ENotPresent, EIsPresent, ESuperseded }; +public: + RLibrary iLibrary; + CApaRecognizerDll* iNext; + CApaScanningDataRecognizer::TRecognizer iId; // cached so that this data can be accessed from other threads (RLibrary cant be used in this case) + CApaDataRecognizerType* iRec; // not ownership + TPresence iPresent; + TInt iVersion; + }; + +// +// inlines +// + +inline const TDesC& CApaScanningDataRecognizer::TRecognizer::Name() const + { + return *iName; + } + +inline CApaScanningDataRecognizer::TRecognizer::TRecognizer() + { + } + +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +// Deprecated - Use CApaDataRecognizer::AddDataRecognizerTypeL instead +// as adding a concrete recognizer into the list could leave. +/** +@deprecated 7.0s +*/ +inline void CApaDataRecognizer::AddDataRecognizerType(CApaDataRecognizerType* aDataRecognizerType) + { + AddDataRecognizerTypeL(aDataRecognizerType); + } +#endif //SYMBIAN_ENABLE_SPLIT_HEADERS + +#endif