contentmgmt/contentaccessfwfordrm/source/caf/manager.cpp
changeset 8 35751d3474b7
parent 0 2c201484c85f
child 15 da2ae96f639b
equal deleted inserted replaced
2:675a964f4eb5 8:35751d3474b7
    14 * Description: 
    14 * Description: 
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 #include "manager.h"
    19 #include <caf/manager.h>
    20 #include "agentinterface.h"
    20 #include <caf/agentinterface.h>
    21 #include "agent.h"
    21 #include <caf/agent.h>
    22 #include "agentinfo.h"
    22 #include "agentinfo.h"
    23 #include "agentfactory.h"
    23 #include <caf/agentfactory.h>
    24 #include "attributeset.h"
    24 #include <caf/attributeset.h>
    25 #include "caftypes.h"
    25 #include <caf/caftypes.h>
    26 #include "caferr.h"
    26 #include <caf/caferr.h>
    27 #include "virtualpath.h"
    27 #include <caf/virtualpath.h>
    28 #include "dirstreamable.h"
    28 #include <caf/dirstreamable.h>
    29 #include "rightsmanager.h"
    29 #include <caf/rightsmanager.h>
    30 #include "cafpanic.h"
    30 #include <caf/cafpanic.h>
    31 #include "resolver.h"
    31 #include "resolver.h"
    32 
    32 
    33 using namespace ContentAccess;
    33 using namespace ContentAccess;
    34 
    34 
    35 EXPORT_C CManager* CManager::NewL()
    35 EXPORT_C CManager* CManager::NewL()
   383 	// Find the agent who handles the file 
   383 	// Find the agent who handles the file 
   384 	CAgentInfo& agentInfo = iResolver->ResolveFileL(aVirtualPath.URI(),uri, EContentShareReadOnly);
   384 	CAgentInfo& agentInfo = iResolver->ResolveFileL(aVirtualPath.URI(),uri, EContentShareReadOnly);
   385 	User::LeaveIfError(agentInfo.AgentManagerL().GetAttribute(aAttribute, aValue, TVirtualPathPtr(uri, aVirtualPath.UniqueId())));
   385 	User::LeaveIfError(agentInfo.AgentManagerL().GetAttribute(aAttribute, aValue, TVirtualPathPtr(uri, aVirtualPath.UniqueId())));
   386 	CleanupStack::PopAndDestroy(uriBuffer);
   386 	CleanupStack::PopAndDestroy(uriBuffer);
   387 	}
   387 	}
       
   388 	
       
   389 EXPORT_C TInt CManager::GetAttribute(TInt aAttribute, TInt& aValue, RFile& aFile, const TDesC& aUniqueId) 
       
   390 	{
       
   391 	TRAPD(err, DoGetAttributeL(aAttribute, aValue, aFile, aUniqueId));
       
   392 	return err;
       
   393 	}
       
   394 
       
   395 void CManager::DoGetAttributeL(TInt aAttribute, TInt& aValue, RFile& aFile, const TDesC& aUniqueId) const
       
   396 	{
       
   397 	// Find the agent who handles the file 
       
   398 	CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile);
       
   399 	User::LeaveIfError(agentInfo.AgentManagerL().GetAttribute(aAttribute, aValue, aFile, aUniqueId));
       
   400 	}
       
   401 	
   388 
   402 
   389 EXPORT_C TInt CManager::GetStringAttribute(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const
   403 EXPORT_C TInt CManager::GetStringAttribute(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const
   390 	{
   404 	{
   391 	TRAPD(err, DoGetStringAttributeL(aAttribute, aValue, aVirtualPath));
   405 	TRAPD(err, DoGetStringAttributeL(aAttribute, aValue, aVirtualPath));
   392 	return err;
   406 	return err;
   393 	}
   407 	}
   394 
   408 	
   395 void CManager::DoGetStringAttributeL(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const
   409 void CManager::DoGetStringAttributeL(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const
   396 	{
   410 	{
   397 	HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength);
   411 	HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength);
   398 	TPtr uri = uriBuffer->Des();
   412 	TPtr uri = uriBuffer->Des();
   399 
   413 
   403 	
   417 	
   404 	// find out the attribute
   418 	// find out the attribute
   405 	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttribute(aAttribute, aValue, TVirtualPathPtr(uri,aVirtualPath.UniqueId())));
   419 	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttribute(aAttribute, aValue, TVirtualPathPtr(uri,aVirtualPath.UniqueId())));
   406 	CleanupStack::PopAndDestroy(uriBuffer);
   420 	CleanupStack::PopAndDestroy(uriBuffer);
   407 	}
   421 	}
       
   422 	
       
   423 EXPORT_C TInt CManager::GetStringAttribute (TInt aAttribute, TDes& aValue, RFile& aFile, const TDesC& aUniqueId)	
       
   424 	{
       
   425 	TRAPD(err, DoGetStringAttributeL(aAttribute, aValue, aFile, aUniqueId));
       
   426 	return err;
       
   427 	}
       
   428 	
       
   429 void CManager::DoGetStringAttributeL(TInt aAttribute, TDes& aValue, RFile& aFile, const TDesC& aUniqueId) const
       
   430 	{
       
   431 	// Find the agent who handles the file 
       
   432 	CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile);	
       
   433 	// find out the attribute
       
   434 	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttribute(aAttribute, aValue, aFile, aUniqueId));
       
   435 	}
   408 
   436 
   409 EXPORT_C TInt CManager::GetAttributeSet(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const
   437 EXPORT_C TInt CManager::GetAttributeSet(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const
   410 	{
   438 	{
   411 	TRAPD(err, DoGetAttributeSetL(aAttributeSet, aVirtualPath));
   439 	TRAPD(err, DoGetAttributeSetL(aAttributeSet, aVirtualPath));
   412 	return err;
   440 	return err;
   413 	}
   441 	}
   414 	
   442 
   415 void CManager::DoGetAttributeSetL(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const	
   443 void CManager::DoGetAttributeSetL(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const	
   416 	{
   444 	{
   417 	HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength);
   445 	HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength);
   418 	TPtr uri = uriBuffer->Des();
   446 	TPtr uri = uriBuffer->Des();
   419 	
   447 	
   422 	
   450 	
   423 	User::LeaveIfError(agentInfo.AgentManagerL().GetAttributeSet(aAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId())));
   451 	User::LeaveIfError(agentInfo.AgentManagerL().GetAttributeSet(aAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId())));
   424 	CleanupStack::PopAndDestroy(uriBuffer);
   452 	CleanupStack::PopAndDestroy(uriBuffer);
   425 	}
   453 	}
   426 
   454 
       
   455 EXPORT_C TInt CManager::GetAttributeSet (RAttributeSet& aAttributeSet, RFile& aFile, const TDesC& aUniqueId)
       
   456 	{
       
   457 	TRAPD(err, DoGetAttributeSetL(aAttributeSet, aFile, aUniqueId));
       
   458 	return err;
       
   459 	}
       
   460 
       
   461 void CManager::DoGetAttributeSetL(RAttributeSet& aAttributeSet, RFile& aFile, const TDesC& aUniqueId) const	
       
   462 	{
       
   463 	// Find the agent who handles the file 
       
   464 	CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile);
       
   465 	User::LeaveIfError(agentInfo.AgentManagerL().GetAttributeSet(aAttributeSet, aFile, aUniqueId));
       
   466 	}	
       
   467 
   427 EXPORT_C TInt CManager::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const
   468 EXPORT_C TInt CManager::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const
   428 	{
   469 	{
   429 	TRAPD(err, DoGetStringAttributeSetL(aStringAttributeSet, aVirtualPath));
   470 	TRAPD(err, DoGetStringAttributeSetL(aStringAttributeSet, aVirtualPath));
   430 	return err;
   471 	return err;
   431 	}
   472 	}
   432 
       
   433 
   473 
   434 void CManager::DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const
   474 void CManager::DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const
   435 	{
   475 	{
   436 	HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength);
   476 	HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength);
   437 	TPtr uri = uriBuffer->Des();
   477 	TPtr uri = uriBuffer->Des();
   442 	// find out the array of attributes
   482 	// find out the array of attributes
   443 	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttributeSet(aStringAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId())));
   483 	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttributeSet(aStringAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId())));
   444 	CleanupStack::PopAndDestroy(uriBuffer);
   484 	CleanupStack::PopAndDestroy(uriBuffer);
   445 	}
   485 	}
   446 
   486 
       
   487 EXPORT_C TInt CManager::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, RFile& aFile, const TDesC& aUniqueId)
       
   488 	{
       
   489 	TRAPD(err, DoGetStringAttributeSetL(aStringAttributeSet, aFile, aUniqueId));
       
   490 	return err;
       
   491 	}
       
   492 
       
   493 void CManager::DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, RFile& aFile, const TDesC& aUniqueId) const
       
   494 	{
       
   495 	// Find the agent who handles the file 
       
   496 	CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile);
       
   497 	// find out the array of attributes
       
   498 	User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttributeSet(aStringAttributeSet, aFile, aUniqueId));
       
   499 	}
       
   500 
   447 EXPORT_C void CManager::NotifyStatusChange(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) 
   501 EXPORT_C void CManager::NotifyStatusChange(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) 
   448 	{
   502 	{
   449 	TRAPD(err, DoNotifyStatusChangeL(aURI, aMask, aStatus));
   503 	TRAPD(err, DoNotifyStatusChangeL(aURI, aMask, aStatus));
   450 	if(err != KErrNone)
   504 	if(err != KErrNone)
   451 		{
   505 		{
   452 		// Must have failed before asking the agent for status
   506 		// Must have failed before asking the agent for status
   453 		TRequestStatus* status = &aStatus;
   507 		TRequestStatus* status = &aStatus;
   454 		User::RequestComplete(status, err);
   508 		User::RequestComplete(status, err);
   455 		}
   509 		}
   456 
       
   457 	}
   510 	}
   458 
   511 
   459 void CManager::DoNotifyStatusChangeL(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) 
   512 void CManager::DoNotifyStatusChangeL(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) 
   460 	{
   513 	{
   461 	HBufC* uriBuffer = HBufC::NewLC(aURI.Length() + KMaxSIDLength);
   514 	HBufC* uriBuffer = HBufC::NewLC(aURI.Length() + KMaxSIDLength);
   543 	// find out the attribute
   596 	// find out the attribute
   544 	agentInfo.AgentManagerL().DisplayInfoL(aInfo, TVirtualPathPtr(uri, aVirtualPath.UniqueId()));
   597 	agentInfo.AgentManagerL().DisplayInfoL(aInfo, TVirtualPathPtr(uri, aVirtualPath.UniqueId()));
   545 	CleanupStack::PopAndDestroy(uriBuffer);
   598 	CleanupStack::PopAndDestroy(uriBuffer);
   546 	}
   599 	}
   547 
   600 
       
   601 EXPORT_C void CManager::DisplayInfoL(TDisplayInfo aInfo, RFile& aFile, const TDesC& aUniqueId) 
       
   602 	{
       
   603 	// Find the agent who handles the file 
       
   604 	CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile);
       
   605 	// find out the attribute
       
   606 	agentInfo.AgentManagerL().DisplayInfoL(aInfo, aFile, aUniqueId);
       
   607 	}
   548 
   608 
   549 EXPORT_C void CManager::ListAgentsL (RArray <TAgent>& aAgents) 
   609 EXPORT_C void CManager::ListAgentsL (RArray <TAgent>& aAgents) 
   550 	{
   610 	{
   551 	TInt i = 0;
   611 	TInt i = 0;
   552 	TBuf <KMaxAgentNameLength> agentName;
   612 	TBuf <KMaxAgentNameLength> agentName;
   640 	CManager *m = CManager::NewLC();
   700 	CManager *m = CManager::NewLC();
   641 	User::LeaveIfError(m->DeleteFile(aFileName));
   701 	User::LeaveIfError(m->DeleteFile(aFileName));
   642 	CleanupStack::PopAndDestroy(m);
   702 	CleanupStack::PopAndDestroy(m);
   643 	}
   703 	}
   644 #endif // REMOVE_CAF1
   704 #endif // REMOVE_CAF1
       
   705