williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #if !defined (__APMFNDR_H__) williamr@2: #define __APMFNDR_H__ williamr@2: williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__F32FILE_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__APMREC_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #include williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: williamr@2: // classes defined williamr@2: class CApaRecognizerDll; williamr@2: williamr@2: williamr@2: class CApaScanningDataRecognizer : public CApaDataRecognizer williamr@2: /** williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: class TRecognizer williamr@2: { williamr@2: friend class CApaRecognizerDll; williamr@2: friend class CT_MimeStep; williamr@2: public: williamr@2: TRecognizer(HBufC* aName); williamr@2: inline const TDesC& Name() const; williamr@2: public: williamr@2: TUid iUid; williamr@2: TInt iDrive; williamr@2: TTime iModified; williamr@2: private: williamr@2: inline TRecognizer(); williamr@2: TRecognizer(const TRecognizer&); williamr@2: TRecognizer operator=(const TRecognizer&); williamr@2: private: williamr@2: HBufC* iName; williamr@2: }; williamr@2: typedef CArrayFixFlat CRecognizerArray; williamr@2: williamr@2: private: williamr@2: class CApaBackupOperationObserver : public CBase, public MBackupOperationObserver williamr@2: { williamr@2: public: williamr@2: CApaBackupOperationObserver(CApaScanningDataRecognizer& aRecognizer); williamr@2: ~CApaBackupOperationObserver(); williamr@2: void RegisterObserverL(); williamr@2: williamr@2: virtual void HandleBackupOperationEventL(const TBackupOperationAttributes& aBackupOperationAttributes); williamr@2: TInt UpdateCounter() const; williamr@2: void SetUpdateCounter( TInt aValue ); williamr@2: private: williamr@2: CBaBackupSessionWrapper* iSession; williamr@2: CApaScanningDataRecognizer& iRecognizer; williamr@2: TInt iUpdateCounter; williamr@2: }; williamr@2: friend class CApaScanningDataRecognizer::CApaBackupOperationObserver; williamr@2: williamr@2: class CApaScanningDataRecognizerExtra : public CBase williamr@2: { williamr@2: private: williamr@2: CApaBackupOperationObserver* iObserver; williamr@2: TBool iRecognizersLoaded; williamr@2: friend class CApaScanningDataRecognizer; williamr@2: friend class CApaBackupOperationObserver; williamr@2: }; williamr@2: williamr@2: // williamr@2: public: williamr@2: IMPORT_C static CApaScanningDataRecognizer* NewL(RFs& aFs); williamr@2: IMPORT_C static CApaScanningDataRecognizer* NewL(RFs& aFs, TBool aLoadDataRecognizers); williamr@2: IMPORT_C ~CApaScanningDataRecognizer(); williamr@2: IMPORT_C void ScanForRecognizersL(); williamr@2: IMPORT_C TInt RecognizerCount(); williamr@2: IMPORT_C CRecognizerArray* RecognizerListLC()const; williamr@2: IMPORT_C const TRecognizer& operator[](TInt aIndex)const; williamr@2: IMPORT_C TInt UpdateCounter()const; williamr@2: IMPORT_C void LoadRecognizersL(); williamr@2: IMPORT_C void UnloadRecognizers(); williamr@2: williamr@2: protected: williamr@2: IMPORT_C CApaScanningDataRecognizer(RFs& aFs); williamr@2: IMPORT_C void ConstructL(); williamr@2: private: williamr@2: void ConstructL(TBool aLoadDataRecognizers); williamr@2: void ScanDriveL(TInt aDriveNum); williamr@2: void LoadRecognizerL(const TDesC& aFullName,TUid aUid, const TTime& aTime); williamr@2: TInt RemoveRecognizer(CApaRecognizerDll* aDll); williamr@2: void LoadEcomRecognizerL(TDriveUnit& aDrive,TUid aUid); williamr@2: void ScanForEcomRecognizersL(); williamr@2: public: williamr@2: IMPORT_C void SetEcomRecognizersFromListL(const CRecognizerArray& aList); williamr@2: IMPORT_C void SetEcomRecognizerL(const TRecognizer& aRecognizer); williamr@2: private: williamr@2: friend class CApaBackupObserver; williamr@2: RPointerArray iRecognizerLib; williamr@2: CApaScanningDataRecognizerExtra* iExtra; williamr@2: }; williamr@2: williamr@2: williamr@2: class CApaRecognizerDll : public CBase williamr@2: /** williamr@2: @internalTechnology williamr@2: */ williamr@2: { williamr@2: public: williamr@2: CApaRecognizerDll(HBufC* aName); williamr@2: ~CApaRecognizerDll(); // closes lib and deletes next williamr@2: public: williamr@2: enum TPresence { ENotPresent, EIsPresent, ESuperseded }; williamr@2: public: williamr@2: RLibrary iLibrary; williamr@2: CApaRecognizerDll* iNext; williamr@2: CApaScanningDataRecognizer::TRecognizer iId; // cached so that this data can be accessed from other threads (RLibrary cant be used in this case) williamr@2: CApaDataRecognizerType* iRec; // not ownership williamr@2: TPresence iPresent; williamr@2: }; williamr@2: williamr@2: // williamr@2: // inlines williamr@2: // williamr@2: williamr@2: inline const TDesC& CApaScanningDataRecognizer::TRecognizer::Name() const williamr@2: { williamr@2: return *iName; williamr@2: } williamr@2: williamr@2: inline CApaScanningDataRecognizer::TRecognizer::TRecognizer() williamr@2: { williamr@2: } williamr@2: williamr@2: #endif