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(__APAFLREC_H__) williamr@2: #define __APAFLREC_H__ williamr@2: williamr@2: #if !defined(__APADEF_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__APAID_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: // classes defined: williamr@2: class MApaAppStarter; williamr@2: class CApaAppLocator; williamr@2: class CApaFileRecognizer; williamr@2: class CApaFileRecognizerType; williamr@2: class CFileRecognizerExtension; williamr@2: // williamr@2: // classes referenced: williamr@2: class TApaAppEntry; williamr@2: class CApaCommandLine; williamr@2: class RFs; williamr@2: // williamr@2: williamr@2: // KUidFileRecognizer is UID[1] for app recognizer dll's (UID[2] identifies a particular identifier) williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: #ifdef _UNICODE williamr@2: #define KUidFileRecognizer KUidFileRecognizer16 williamr@2: #else williamr@2: #define KUidFileRecognizer KUidFileRecognizer8 williamr@2: #endif williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @deprecated williamr@2: */ williamr@2: const TInt KFileRecognizerUidValue8=0x1000013E; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @deprecated williamr@2: */ williamr@2: const TUid KUidFileRecognizer8={KFileRecognizerUidValue8}; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: const TUid KUidFileRecognizer16={0x10003A37}; williamr@2: // williamr@2: williamr@2: williamr@2: class CApaAppLocator : public CBase williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: { williamr@2: public: williamr@2: virtual TInt GetAppEntryByUid(TApaAppEntry& aAppEntry,TUid aAppUid)=0; williamr@2: virtual TInt GetAppCapabilityByUid(TDes8& aCapabilityBuf,TUid aAppUid)=0; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: class CApaFileRecognizer : public CBase williamr@2: /** williamr@2: @internalComponent williamr@2: @deprecated williamr@2: */ williamr@2: { williamr@2: public: williamr@2: // williamr@2: IMPORT_C CApaFileRecognizerType* RecognizeFileL(const TDesC& aFullFileName,const TUidType* aUidType=NULL); williamr@2: IMPORT_C CApaAppLocator* AppLocator() const; williamr@2: // williamr@2: IMPORT_C ~CApaFileRecognizer(); williamr@2: protected: williamr@2: IMPORT_C CApaFileRecognizer(RFs& aFs); williamr@2: IMPORT_C void AddFileRecognizerType(CApaFileRecognizerType* aFileRecognizerType); williamr@2: IMPORT_C TInt RemoveFileRecognizerType(const CApaFileRecognizerType* aFileRecognizerType); williamr@2: IMPORT_C void SetAppLocator(CApaAppLocator* aAppLocator); // should be called by child-classes eg during construction williamr@2: static inline void SetAppStarter(CApaFileRecognizerType* aRecognizer,MApaAppStarter* aAppStarter); williamr@2: IMPORT_C void DestroyRecognizerList(); williamr@2: protected: williamr@2: RFs& iFs; williamr@2: CApaAppLocator* iAppLocator; williamr@2: private: williamr@2: CApaFileRecognizerType *iFileRecognizerList; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: class MApaAppStarter williamr@2: /** An interface used by the Application Architecture server to start applications. williamr@2: williamr@2: CEikonEnv is derived from this class. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: @see CEikonEnv */ williamr@2: { williamr@2: public: williamr@2: virtual TThreadId StartAppL(const CApaCommandLine& aCommandLine)=0; williamr@2: protected: williamr@2: IMPORT_C MApaAppStarter(); williamr@2: private: williamr@2: IMPORT_C virtual void MApaAppStarter_Reserved1(); williamr@2: IMPORT_C virtual void MApaAppStarter_Reserved2(); williamr@2: private: williamr@2: TInt iMApaAppStarter_Reserved1; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: class CApaFileRecognizerType : public CBase williamr@2: /** williamr@2: @publishedPartner williamr@2: @deprecated williamr@2: */ williamr@2: { williamr@2: public: williamr@2: enum TRecognizedType {EProgram,EDoc,EOtherFile,ENotRecognized}; williamr@2: public: williamr@2: virtual TThreadId RunL(TApaCommand aCommand,const TDesC* aDocFileName,const TDesC8* aTailEnd) const=0; williamr@2: inline TThreadId RunL(TApaCommand aCommand, const TDesC* aDocFileName) const; williamr@2: inline TThreadId RunL(TApaCommand aCommand) const; williamr@2: inline TUid AppUid()const; williamr@2: inline TUid TypeUid()const; williamr@2: inline TRecognizedType Type()const; williamr@2: IMPORT_C void Capability(TDes8& aCapabilityBuf)const; williamr@2: IMPORT_C void Lock(); williamr@2: IMPORT_C void Unlock(); williamr@2: protected: williamr@2: IMPORT_C CApaFileRecognizerType(); williamr@2: IMPORT_C ~CApaFileRecognizerType(); williamr@2: IMPORT_C TThreadId AppRunL(const CApaCommandLine& aCommandLine) const; williamr@2: private: williamr@2: inline void SetAppStarter(MApaAppStarter* aAppStarter); // must be called before AppRunL() williamr@2: virtual TRecognizedType DoRecognizeFileL(RFs& aFs,TUidType aUidType)=0; williamr@2: TRecognizedType RecognizeFileL(RFs& aFs,const TDesC& aFullFileName,TUidType aUidType); williamr@2: TBool Locked()const; williamr@2: IMPORT_C virtual void Reserved_1(); williamr@2: public: williamr@2: IMPORT_C static CApaFileRecognizerType* CreateFileRecognizerL(TUid aImplUid); williamr@2: protected: williamr@2: CApaFileRecognizer* iFileRecognizer; williamr@2: MApaAppStarter* iAppStarter; williamr@2: HBufC* iFullFileName; williamr@2: TUid iFileType; // type UID of the recognizer file (ie UID[1]) williamr@2: TUid iAppUid; // UID of the associated app (ie UID[2]) williamr@2: TRecognizedType iRecognizedType; williamr@2: TApaAppCapabilityBuf* iCapabilityBuf; williamr@2: private: williamr@2: CApaFileRecognizerType* iNext; williamr@2: TInt iLock; williamr@2: CFileRecognizerExtension* iFileRecognizerExtn; williamr@2: private: williamr@2: friend class CApaFileRecognizer; williamr@2: }; williamr@2: williamr@2: williamr@2: // williamr@2: // inlines williamr@2: // williamr@2: williamr@2: inline void CApaFileRecognizer::SetAppStarter(CApaFileRecognizerType* aRecognizer,MApaAppStarter* aAppStarter) williamr@2: { aRecognizer->SetAppStarter(aAppStarter); } williamr@2: williamr@2: inline void CApaFileRecognizerType::SetAppStarter(MApaAppStarter* aAppStarter) williamr@2: { iAppStarter = aAppStarter; } williamr@2: williamr@2: inline TUid CApaFileRecognizerType::AppUid() const williamr@2: { return iAppUid; } williamr@2: williamr@2: inline TUid CApaFileRecognizerType::TypeUid() const williamr@2: { return iFileType; } williamr@2: williamr@2: inline CApaFileRecognizerType::TRecognizedType CApaFileRecognizerType::Type()const williamr@2: { return iRecognizedType; } williamr@2: williamr@2: inline TThreadId CApaFileRecognizerType::RunL(TApaCommand aCommand, const TDesC* aDocFileName) const williamr@2: /** Calls RunL(TApaCommand,const TDesC*,const TDesC8*) with NULL as third parameter. williamr@2: @see CApaFileRecognizerType::RunL(TApaCommand,const TDesC*,const TDesC8*) */ williamr@2: { return RunL(aCommand, aDocFileName, NULL); } williamr@2: williamr@2: inline TThreadId CApaFileRecognizerType::RunL(TApaCommand aCommand) const williamr@2: /** Calls RunL(TApaCommand,const TDesC*,const TDesC8*) with NULL as second and third parameter. williamr@2: @see CApaFileRecognizerType::RunL(TApaCommand,const TDesC*,const TDesC8*) */ williamr@2: { return RunL(aCommand, NULL, NULL); } williamr@2: williamr@2: #endif