localisation/apparchitecture/apparc/APAFLREC.CPP
branchSymbian3
changeset 57 b8d18c84f71c
parent 6 c108117318cb
--- a/localisation/apparchitecture/apparc/APAFLREC.CPP	Wed Jul 28 16:03:37 2010 +0100
+++ b/localisation/apparchitecture/apparc/APAFLREC.CPP	Tue Aug 03 10:20:34 2010 +0100
@@ -1,7 +1,7 @@
 // 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"
+// 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".
 //
@@ -11,6 +11,7 @@
 // Contributors:
 //
 // Description:
+// apaflrec.cpp
 //
 
 #include <f32file.h>
@@ -19,306 +20,7 @@
 #include <apacmdln.h>
 #include "APASTD.H"
 #include "APGCLI.H"
-
-#ifdef USING_ECOM_RECOGS
 #include <ecom/ecom.h>
-#endif
-
-//
-//CFileRecognizerExtension Class
-//
-//stores the destructor key to track the instance of ecom implementation class
-class CFileRecognizerExtension : public CBase
- 	{
-public:
-	static CFileRecognizerExtension* NewL(TUid aDtorKey);
- 	~CFileRecognizerExtension();
-	//returns the destructor key
- 	TUid DestructorUid()const;
-private:
-	CFileRecognizerExtension(TUid aDtorKey);
-private:
- 	//destructor key to track the instance of ecom implementation class
-	TUid iDtorKey;
-	};
-
-//
-// Class CApaFileRecognizer
-//
-
-EXPORT_C CApaFileRecognizer::CApaFileRecognizer(RFs& aFs)
-	:iFs(aFs)
-	{}
-
-
-EXPORT_C CApaFileRecognizer::~CApaFileRecognizer()
-	{
-	DestroyRecognizerList();
-	delete iAppLocator;
-	//lint -esym(1740,CApaFileRecognizer::iFileRecognizerList) not directly freed - see DestroyRecognizerList()
-	}
-
-	
-EXPORT_C void CApaFileRecognizer::DestroyRecognizerList()
-// this method exists to allow subclassers to destroy the list earlier if they wish
-	{
-	CApaFileRecognizerType* rec=iFileRecognizerList;
-	//delete one element after the other in the list
-	while (rec!=NULL )
-		{
-		CApaFileRecognizerType* prev=NULL;
-		prev = rec;
-		rec=rec->iNext;
-		delete prev;
-		}
-	iFileRecognizerList=NULL;
-	}
-
-
-EXPORT_C void CApaFileRecognizer::SetAppLocator(CApaAppLocator* aAppLocator)
-// takes ownership of the locator
-	{
-	iAppLocator = aAppLocator;
-	}
-
-static TUidType UidTypeL(const TDesC& aFullFileName, const RFs& aFs)
-	{	
-	_LIT(KSysBin, "\\sys\\bin\\");
-	if (TParsePtrC(aFullFileName).Path().CompareF(KSysBin)==0)
-		{
-		RLoader loader;
-		User::LeaveIfError(loader.Connect());
-		CleanupClosePushL(loader);
-		TPckgBuf<RLibrary::TInfo> dllInfo;
-		User::LeaveIfError(loader.GetInfo(aFullFileName, dllInfo));
-		CleanupStack::PopAndDestroy(&loader);
-		return dllInfo().iUids;
-		}
-	TEntry entry;
-	User::LeaveIfError(aFs.Entry(aFullFileName,entry));
-	return entry.iType;
-	}
-
-EXPORT_C CApaFileRecognizerType* CApaFileRecognizer::RecognizeFileL(const TDesC& aFullFileName,const TUidType* aUidType)
-// Returns the specific recognizer if the file is recogized as a runnable file. or NULL if not.
-// TUidType is optional, if not supplied it will be read from the file.
-// Leaves, if any files required cannot be found or if OOM.
-// Leaves with KErrNotSupported, if file cannot be recognized.
-	{
-	const TUidType uidType((aUidType!=NULL)? *aUidType: UidTypeL(aFullFileName, iFs));
-	CApaFileRecognizerType* rec=iFileRecognizerList;
-	CApaFileRecognizerType::TRecognizedType type;
-	while (rec!=NULL)
-		{
-		type=rec->RecognizeFileL(iFs,aFullFileName,uidType);
-		if (type==CApaFileRecognizerType::EOtherFile)	
-			{
-			rec=NULL;						// Recognised but not runnable so stop search now
-			break;
-			}
-		if (type!=CApaFileRecognizerType::ENotRecognized)
-			{
- 			break;
-			}
-		rec=rec->iNext;
-		}
-	if (rec==NULL)
-		{
-		User::Leave(KErrNotSupported);
-		}
-	return rec;
-	}
-
-EXPORT_C void CApaFileRecognizer::AddFileRecognizerType(CApaFileRecognizerType* aFileRecognizerType)
-// Add given RecognizerType to the end of the recognizer list.
-// Set's it's iFileRecognizer pointer to "this" - recognizers may call AppDataByUid
-	{
-	aFileRecognizerType->iNext=NULL;
-	aFileRecognizerType->iFileRecognizer=this;
-	CApaFileRecognizerType* rec=iFileRecognizerList;
-	if (rec==NULL)
-		iFileRecognizerList=aFileRecognizerType;
-	else
-		{
-		while (rec->iNext!=NULL)
-			rec=rec->iNext;
-		rec->iNext=aFileRecognizerType;
-		}
-	}
-
-
-EXPORT_C TInt CApaFileRecognizer::RemoveFileRecognizerType(const CApaFileRecognizerType* aFileRecognizerType)
-// remove the given recognizer from the list if it is not locked
-// return an error code if removal failed
-	{
-	CApaFileRecognizerType* rec=iFileRecognizerList;
-	CApaFileRecognizerType* prev=NULL;
-	// find the recognizer in the list
-	while (rec!=NULL && rec!=aFileRecognizerType)
-		{
-		prev = rec;
-		rec=rec->iNext;
-		}
-	// did we find a match
-	if (!rec)
-		return KErrNotFound;
-	// is the matching recognizer locked
-	if (rec->Locked())
-		return KErrLocked;
-	// remove the recognizer from the list, then delete it
-	if (prev)
-		prev->iNext = rec->iNext;
-	else
-		iFileRecognizerList = rec->iNext;
-	rec->iNext = NULL;
-	delete rec;
-	return KErrNone;
-	}
-
-
-EXPORT_C CApaAppLocator* CApaFileRecognizer::AppLocator() const
-	{
-	__ASSERT_ALWAYS(iAppLocator,Panic(EPanicNoAppLocator));
-	//
-	return iAppLocator;
-	}
-
-
-//
-// Class CApaFileRecognizerType
-//
-
-EXPORT_C CApaFileRecognizerType::CApaFileRecognizerType():iFileRecognizerExtn(NULL)
-	{
-	}
-
-
-EXPORT_C CApaFileRecognizerType::~CApaFileRecognizerType()
-	{
-#ifdef USING_ECOM_RECOGS
-	//if ecom plugin is used destroy its implementation
-	if(iFileRecognizerExtn!=NULL)
-		{
-		REComSession::DestroyedImplementation(iFileRecognizerExtn->DestructorUid());
-		delete iFileRecognizerExtn;
-		}
-#else
-	iFileRecognizerExtn = NULL;
-#endif
-	delete iCapabilityBuf;
-	delete iFullFileName;
-	iFileRecognizer = NULL;
-	iAppStarter = NULL;
-	iNext = NULL;
-	}
-
-EXPORT_C TThreadId CApaFileRecognizerType::AppRunL(const CApaCommandLine& aCommandLine) const
-	{
-	__ASSERT_ALWAYS(iAppStarter,Panic(EPanicNoAppStarter));
-	//
-	return iAppStarter->StartAppL(aCommandLine);
-	}
-
-CApaFileRecognizerType::TRecognizedType CApaFileRecognizerType::RecognizeFileL(RFs& aFs,const TDesC& aFullFileName,TUidType aUidType)
-	{
-	// set the UID's and name
-	iFileType = aUidType[1];
-	iAppUid = aUidType[2];
-	delete iFullFileName;
-	iFullFileName = NULL;
-	iFullFileName = aFullFileName.AllocL();
-	//
-	// see if we recognize it
-	iRecognizedType = ENotRecognized;
-	TRecognizedType type=DoRecognizeFileL(aFs,aUidType);
-	if (type==ENotRecognized)
-		{
-		delete iFullFileName;
-		iFullFileName=NULL;
-		}
-	else
-		{
-		if(!iCapabilityBuf)
-			{
-			// Actually, iCapabilityBuf is not needed anymore, but in order not to break BC,
-			// we must still support it (in case someone calls CApaFileRecognizerType::Capability).
-			iCapabilityBuf = new(ELeave) TApaAppCapabilityBuf;
-			iCapabilityBuf->FillZ(iCapabilityBuf->MaxLength());
-			}
-		}
-	return type;
-	}
-
-
-EXPORT_C void CApaFileRecognizerType::Capability(TDes8& aCapabilityBuf)const
-	{
-	__ASSERT_ALWAYS(iCapabilityBuf,Panic(EPanicCapabilityNotSet)); // capability has been called when no file has been recognized
-	//
-	TApaAppCapability::CopyCapability(aCapabilityBuf,*iCapabilityBuf);
-	}
-
-
-EXPORT_C void CApaFileRecognizerType::Lock()
-	{
-	iLock++;
-	}
-
-
-EXPORT_C void CApaFileRecognizerType::Unlock()
-	{
-	if (iLock>0)
-		iLock--;
-	}
-
-
-TBool CApaFileRecognizerType::Locked()const
-	{
-	return (iLock>0);
-	}
-
-EXPORT_C void CApaFileRecognizerType::Reserved_1()
-	{}
-
-#ifdef USING_ECOM_RECOGS
-// instantiate the ecom implementation class 
-EXPORT_C CApaFileRecognizerType* CApaFileRecognizerType::CreateFileRecognizerL(TUid aImplUid)
-	{
-	CApaFileRecognizerType* fileRecType = NULL;
-	TUid tempDtorKey = KNullUid;
-	fileRecType = static_cast<CApaFileRecognizerType*>(REComSession::CreateImplementationL(aImplUid, tempDtorKey));
-	CleanupStack::PushL(fileRecType);
-	fileRecType->iFileRecognizerExtn=CFileRecognizerExtension::NewL(tempDtorKey);
-	CleanupStack::Pop(fileRecType);
-	return fileRecType;
-	}
-#else
-EXPORT_C CApaFileRecognizerType* CApaFileRecognizerType::CreateFileRecognizerL(TUid)
-	{
-	return NULL;
-	}
-#endif
-
-CFileRecognizerExtension::CFileRecognizerExtension(TUid aDtorKey)
- 	:iDtorKey(aDtorKey)
- 	{
-	}
-
-CFileRecognizerExtension* CFileRecognizerExtension::NewL(TUid aDtorKey)
-	{
-	//instantiate CFileRecognizerExtension with the destructor key of the ecom implentation instance
-	CFileRecognizerExtension* self=new(ELeave) CFileRecognizerExtension(aDtorKey);
-	return self;
-	}
-
-CFileRecognizerExtension::~CFileRecognizerExtension()
- 	{
- 	}
-
-//returns the destructor key of the ecom implentation instance
-TUid CFileRecognizerExtension::DestructorUid()const
- 	{
- 	return iDtorKey;
- 	}
 
 //
 // MApaAppStarter